From d71130dc9bbbfb662f1979c0266f38538bf9152b Mon Sep 17 00:00:00 2001
From: jorge cristobal martin <jorgecr@stud.ntnu.no>
Date: Wed, 3 Oct 2018 18:53:48 +0200
Subject: [PATCH] hmtl

---
 META-INF/MANIFEST.MF                          |   3 +-
 Readme.md                                     |  11 ++
 bin/Main/GenHTML.class                        | Bin 0 -> 6439 bytes
 bin/Main/GenWebCourse.class                   | Bin 0 -> 2749 bytes
 bin/Main/WebPage0.html                        |   1 +
 bin/Main/webpage1.html                        |   1 +
 bin/WebPageCourses/Course.class               | Bin 759 -> 882 bytes
 bin/WebPageCourses/RelatedCourses.class       | Bin 439 -> 438 bytes
 bin/WebPageCourses/Requierement.class         | Bin 340 -> 0 bytes
 bin/WebPageCourses/Requirement.class          | Bin 0 -> 338 bytes
 .../WebPageCoursesFactory.class               | Bin 1343 -> 1341 bytes
 .../WebPageCoursesPackage$Literals.class      | Bin 4917 -> 5002 bytes
 .../WebPageCoursesPackage.class               | Bin 5594 -> 5658 bytes
 bin/WebPageCourses/impl/CourseImpl.class      | Bin 8318 -> 10113 bytes
 .../impl/RelatedCoursesImpl.class             | Bin 3429 -> 3426 bytes
 ...rementImpl.class => RequirementImpl.class} | Bin 3803 -> 3798 bytes
 .../impl/StudyProgramImpl.class               | Bin 4644 -> 4918 bytes
 .../impl/WebPageCoursesFactoryImpl.class      | Bin 5616 -> 5611 bytes
 .../impl/WebPageCoursesPackageImpl.class      | Bin 13945 -> 14134 bytes
 .../util/WebPageCoursesAdapterFactory$1.class | Bin 5616 -> 5611 bytes
 .../util/WebPageCoursesAdapterFactory.class   | Bin 2956 -> 2955 bytes
 .../WebPageCoursesResourceFactoryImpl.class   | Bin 0 -> 790 bytes
 .../util/WebPageCoursesResourceImpl.class     | Bin 0 -> 463 bytes
 .../util/WebPageCoursesSwitch.class           | Bin 6376 -> 6370 bytes
 .../util/WebPageCoursesValidator.class        | Bin 9382 -> 9376 bytes
 model/coursewebpage.ecore                     |   4 +-
 model/coursewebpage.genmodel                  |  12 +-
 plugin.xml                                    |   7 +
 src/Main/GenHTML.java                         | 133 ++++++++++++++++++
 src/Main/GenWebCourse.java                    |  46 ++++++
 src/Main/WebPage0.html                        |   1 +
 src/Main/webpage1.html                        |   1 +
 src/WebPageCourses/Course.java                |  29 ++++
 src/WebPageCourses/RelatedCourses.java        |   4 +-
 .../{Requierement.java => Requirement.java}   |  26 ++--
 src/WebPageCourses/StudyProgram.java          |   4 +-
 src/WebPageCourses/WebPageCoursesFactory.java |   6 +-
 src/WebPageCourses/WebPageCoursesPackage.java |  98 ++++++++-----
 src/WebPageCourses/impl/CourseImpl.java       |  86 +++++++++++
 .../impl/RelatedCoursesImpl.java              |  10 +-
 ...ierementImpl.java => RequirementImpl.java} |  48 +++----
 src/WebPageCourses/impl/StudyProgramImpl.java |  20 ++-
 .../impl/WebPageCoursesFactoryImpl.java       |   8 +-
 .../impl/WebPageCoursesPackageImpl.java       |  51 ++++---
 .../util/WebPageCoursesAdapterFactory.java    |  10 +-
 .../WebPageCoursesResourceFactoryImpl.java    |  41 ++++++
 .../util/WebPageCoursesResourceImpl.java      |  28 ++++
 .../util/WebPageCoursesSwitch.java            |  12 +-
 .../util/WebPageCoursesValidator.java         |   8 +-
 49 files changed, 577 insertions(+), 132 deletions(-)
 create mode 100644 bin/Main/GenHTML.class
 create mode 100644 bin/Main/GenWebCourse.class
 create mode 100644 bin/Main/WebPage0.html
 create mode 100644 bin/Main/webpage1.html
 delete mode 100644 bin/WebPageCourses/Requierement.class
 create mode 100644 bin/WebPageCourses/Requirement.class
 rename bin/WebPageCourses/impl/{RequierementImpl.class => RequirementImpl.class} (78%)
 create mode 100644 bin/WebPageCourses/util/WebPageCoursesResourceFactoryImpl.class
 create mode 100644 bin/WebPageCourses/util/WebPageCoursesResourceImpl.class
 create mode 100644 src/Main/GenHTML.java
 create mode 100644 src/Main/GenWebCourse.java
 create mode 100644 src/Main/WebPage0.html
 create mode 100644 src/Main/webpage1.html
 rename src/WebPageCourses/{Requierement.java => Requirement.java} (65%)
 rename src/WebPageCourses/impl/{RequierementImpl.java => RequirementImpl.java} (75%)
 create mode 100644 src/WebPageCourses/util/WebPageCoursesResourceFactoryImpl.java
 create mode 100644 src/WebPageCourses/util/WebPageCoursesResourceImpl.java

diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 7cfab1d..eb37f9c 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -12,5 +12,6 @@ Export-Package: WebPageCourses,
  WebPageCourses.impl,
  WebPageCourses.util
 Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.emf.ecore;visibility:=reexport
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport
 Bundle-ActivationPolicy: lazy
diff --git a/Readme.md b/Readme.md
index ce0d528..a55cd4c 100644
--- a/Readme.md
+++ b/Readme.md
@@ -41,4 +41,15 @@ Stores information about the different types of work of the course.
 ### Work
 Has a type (exam, assignments,work) and a percentage.
 
+## HTML
+In this part we create an html page out of the ecore project.
+
+### src/main
+Where the GentHTML and GenWebCourse are. They have the code to transform from xmi to html.
+This is where the html pages are created.
+
+### To Run
+Just put in the arguments the xmi you want to run, in this case: /model/StudyProgram.xmi
+
+
 # Jorge Cristobal Martin
\ No newline at end of file
diff --git a/bin/Main/GenHTML.class b/bin/Main/GenHTML.class
new file mode 100644
index 0000000000000000000000000000000000000000..5ace31818764d732a99bbc3f220cb09f59ab6b36
GIT binary patch
literal 6439
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

literal 0
HcmV?d00001

diff --git a/bin/Main/GenWebCourse.class b/bin/Main/GenWebCourse.class
new file mode 100644
index 0000000000000000000000000000000000000000..2cfa9b2f772b1f1fc25c35d5c713816d5e5becb9
GIT binary patch
literal 2749
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
MHckcyhDHz{0LNzhfdBvi

literal 0
HcmV?d00001

diff --git a/bin/Main/WebPage0.html b/bin/Main/WebPage0.html
new file mode 100644
index 0000000..83ea7af
--- /dev/null
+++ b/bin/Main/WebPage0.html
@@ -0,0 +1 @@
+<html><h1>TDT4250 Advanced Software Design</h1><br><div> <h2> Course Work </h2> <table border="1"><tr><th>Lab Hours</th><th>Lecture Hours </th></tr><tr><th>2.0</th><th>3.0</th></tr></table> </div><div> <h2> People </h2> <table border="1"><p>Department of Computer Science</p><tr><th>Name</th><th>Role </th></tr><tr><th>Hallvard Tr�tteberg</th><th>Course coordinator:</th></tr></table> </div><div> <h2> Schedule </h2> <table border="1"><tr><th>Room</th><th>Date </th><th>Time </th></tr><tr><th>K5</th><th>Monday </th><th>10:15 - 11:00</th></tr><tr><th>A34</th><th>Tuesday</th><th>14:15 - 16:00</th></tr><tr><th>F6</th><th>Wednesday</th><th>10:15 - 12:00</th></tr><tr><th>A32</th><th>Thursday</th><th>12:15 - 14:00</th></tr></table> </div><div> <h2> Work </h2> <table border="1"><tr><th>Type</th><th>Porcentage </th></tr><tr><th>Exam</th><th>70.0</th></tr><tr><th>Assignments</th><th>30.0</th></tr></table> </div><div> <h2> Credit Reduction Courses </h2> <table border="1"><tr><th>Code</th><th>Credit Reduction </th></tr><tr><th>SIF8060</th><th>7.5</th></tr></table> </div><div> <h2> Requirement Courses </h2> <table border="1"><tr><th>Name</th><th>Code </th><th>Type </th></tr><tr><th>Object-oriented programming</th><th>TDT4100 </th><th>Recommended</th></tr><tr><th>Software Engineering</th><th>TDT4140 </th><th>Recommended</th></tr><tr><th> Information Systems</th><th>TDT4175</th><th>Recommended</th></tr><tr><th> Software Architecture</th><th>TDT4240</th><th>Recommended</th></tr></table> </div></html>
diff --git a/bin/Main/webpage1.html b/bin/Main/webpage1.html
new file mode 100644
index 0000000..b10efc8
--- /dev/null
+++ b/bin/Main/webpage1.html
@@ -0,0 +1 @@
+<html><h1>TDT4100 Object-Oriented Programming</h1><br><div> <h2> Course Work </h2> <table border="1"><tr><th>Lab Hours</th><th>Lecture Hours </th></tr><tr><th>7.0</th><th>4.0</th></tr></table> </div><div> <h2> People </h2> <table border="1"><p>Department of Computer Science</p><tr><th>Name</th><th>Role </th></tr><tr><th>Hallvard Tr�tteberg</th><th>Course coordinator</th></tr><tr><th>Hallvard Tr�tteberg</th><th>Lecturer</th></tr><tr><th>Rune S�tre</th><th>Lecturer</th></tr></table> </div><div> <h2> Schedule </h2> <table border="1"><tr><th>Room</th><th>Date </th><th>Time </th></tr><tr><th>F1</th><th>Monday</th><th>12-14</th></tr><tr><th>F1</th><th>Wednesday</th><th>12-14</th></tr><tr><th>R1</th><th>Thursday</th><th>12-14</th></tr></table> </div><div> <h2> Work </h2> <table border="1"><tr><th>Type</th><th>Porcentage </th></tr><tr><th>Exam</th><th>100.0</th></tr></table> </div><div> <h2> Credit Reduction Courses </h2> <table border="1"><tr><th>Code</th><th>Credit Reduction </th></tr><tr><th>IT1104</th><th>7.5</th></tr><tr><th>SIF8005</th><th>7.5</th></tr><tr><th>TDT4102</th><th>5.0</th></tr><tr><th>TDT4130</th><th>3.7</th></tr></table> </div><div> <h2> Requirement Courses </h2> <table border="1"><tr><th>Name</th><th>Code </th><th>Type </th></tr></table> </div></html>
diff --git a/bin/WebPageCourses/Course.class b/bin/WebPageCourses/Course.class
index 6755df05880bfc87355e3ba28fb65265c4a12624..bf05c551317220c2b247037cff2dcc936ff72134 100644
GIT binary patch
delta 159
zcmey)`iYI})W2Q(7#J8#7*scM`7oskq^Fhymz1Vd78K>D7bWHvGcw3)X!?YwCIuv>
zr#k1C78R!!>w{GUKvY;WG6)o7Xj0I?r)P2?lQtv&<XWZzDHcWsc?Jar1{OvJMFu4X
P1_nk3Wd;TYCI%G%4e2i$

delta 40
wcmeyw_MMgM)W2Q(7#J8#7!)^h`7ljB$fU-|JNX4u0T%-!gFFKR0~3P+02l@eU;qFB

diff --git a/bin/WebPageCourses/RelatedCourses.class b/bin/WebPageCourses/RelatedCourses.class
index 8b85b42e9791e0f601f0ddf5500dc72f2c52c194..7b70ca0a447430213b8e94933bbc46c2aae71a0b 100644
GIT binary patch
delta 21
dcmdnayp4InMn>n!{EVioL8*nMnG@fh0sv4K2qXXi

delta 22
ecmdnSyq$T%Mn;#(e2k`SL8*nMnW+=soB{w>j|hnX

diff --git a/bin/WebPageCourses/Requierement.class b/bin/WebPageCourses/Requierement.class
deleted file mode 100644
index 50976b2a9b10daaf3dedfd659a8d57c41aa48aa8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 340
zcmX^0Z`VEs1_l!bL3RcvMh5Bd)TDsK^i=2k(xT$jV*Q}h!qUvtqSV~fyb^W>7Dfhv
zti-ZJ{hY+SbbbG%tkmQZb_O;^2HE_gbp6!ioXmpaRQ=T4H2u`%{GwESSBMfu2KMyS
z66gGsR7M674NV_}5y2%znR)5fj126>Fa@F-nDUxo5F`8&b5kK|AuQ4K)RK_Of>i%B
zWOp($h!$fP=L*g*ElN&x%gjk-WDrEwqX%*m8zTcF12Y3711kdq0~-q?13Lo;1IW{y
d3|wHE8_MT_@_C_rJ`kUQk%6Cqfq{uZ003-{RpI~u

diff --git a/bin/WebPageCourses/Requirement.class b/bin/WebPageCourses/Requirement.class
new file mode 100644
index 0000000000000000000000000000000000000000..7776c5b57105aacfd70f621783f7b4e2c47ae902
GIT binary patch
literal 338
zcmX^0Z`VEs1_l!bL3RcvMh2<y)TDsK^i=2k(xT$jV*Q}h!qUv5)ZEm(5_Sd_Mh1bb
z#Ii*FoW#6zegCAa)Z`L&1~x_p+5Dn({nX@~%!1-n{nXqv{nX_AqEvlXh!REy_Vm;e
z=lqmZMg|cLO&^32!6ikRdFj@S4D7`)1)>_5@|s}~Bm5F`Qz2?0EYbATl90-RRR1)v
zGgBe%WMmL6#xBkkoL^d$oa&aDlgh{-0M-N1q6cyk8zTcF12Y3711kdq0~-q?13Lo;
h1IW*u3|wHE8_MT_@_C_rJ`kUQk%6Cqfq{uZ004G_RTcmM

literal 0
HcmV?d00001

diff --git a/bin/WebPageCourses/WebPageCoursesFactory.class b/bin/WebPageCourses/WebPageCoursesFactory.class
index 71e584eb98a71ead3dcff033668c6de68a6727f4..b3f68910e5560d069b406f437958440657f2cabf 100644
GIT binary patch
delta 42
xcmdnbwU=wdJ4R8#<f7EXlGLEo!qUv5)ZEm(5=I8O$%V`!%!Q?yn`M}knE_3h4c-6%

delta 59
zcmdnXwV!LlJ4QXB<f7EXlGLEo!qUvtqSV~fyb?wRc@0gU@YJM$#Pn3>{L-T0)M9;z
Kg3VG)%FF<Z^Ax23

diff --git a/bin/WebPageCourses/WebPageCoursesPackage$Literals.class b/bin/WebPageCourses/WebPageCoursesPackage$Literals.class
index dc8a7f29d50f2fb3b8914bd38e46fa92a4eff500..02fbc9c214e309473b338c22582b0d310d67afd6 100644
GIT binary patch
literal 5002
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

literal 4917
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

diff --git a/bin/WebPageCourses/WebPageCoursesPackage.class b/bin/WebPageCourses/WebPageCoursesPackage.class
index 629f4e2768895b7415d574c061f7d1ced8e5f0f4..d3ee909aa12d52d01aea891e43cf5f14603e58b2 100644
GIT binary patch
delta 1649
zcmcbmJxhn{)W2Q(7#J8#7<O#r`oSnI>g*pH6zm!w9~=_u5*ZNW?;hmn8_dkWz`#C<
zNt%&kvka3HqYZbEYhb8nkgKn&UkD?EAQCS=-r3*96<y5F(btucK@qHO@;qiaB}p(7
zVnDo`t7AxLkZZiNe<;W}X|UYp2h3j>H{WD^&BRv3P{PhoJoyxd5pyX++2sEmW{ee^
z%{Xlt#l_Q8OPupdi;7d@gG)+NDhrD8(~A;wCl_!Xb>mA<EeT33EX^!R%}vcKVPp_S
z6^M7vPf5iT^-Ii6Wn@r<soh-9?Z(WqjgdijqJYZew|w%90h4+8uQRGo{>rcKD8?Yk
zpv@r4z{tSKz`(%7Aju%fpo7GhW{_miMdHgcNHXXl@#QC{3dkFRR2d?Pf=o3+;)6^z
zM&e6P-YOvP2r|nINfe~Z9ElIoWr4&8*<y*rmz^vsD9<QA*;G)TQF3yqpuC|XgCv6k
zk_wQCj!1lviB3p->B&n4<sFq7BpF<hL_xaTkoX{7?nr!)J3Ns1vXfbb<m*)#BpJMs
zL_wzbAn`$__#*K^ruZT8LF)aH`05Oj3;{@dkbEE#A7ow-f?v-7GB6k+zyQ(^g2WGH
zkYor$;)CSFk@z43BarwY^CFS>py-N1;)C=@!};}03^5Fn46$$lCa?qIkoX`A;*t0u
z3lfm{AOjPT_(=?s49Q4*kbDXfA7oxCj9<^d1P*~Tm;eLB0qIEm3<gPtOe8+Yz$_#_
z$iQqQKFEPNNPJKT<RbCK7)%&A81fkM85kMr3m6y}v>6x~K!AM*L*ZtI@{QmuRms4>
zz{SACz`$V1z{d26p$aU@z{1E-%}~PtqH7uIz;r!B1DI}v(oImh8A`W6)wM$DHYnZB
zP{U9UGN=QpuoEiL1*N;8bPv?RUZ}c0DBTYgp8(}ggwm6s^kk^~6sS2<q5Nr3`RNP|
z^<bCJfJ)4SO3Z?4m<^@pK;`E`<>x`^`B3o%Q2s)w`bALj#Zd7jP<km;ei>ALIYTNW
z2v<NQRzf9KK{c#~(rcjNYoYvgP<lO--oUUC96g)B<YtB~;K*ZS*vi1ju$_$)0N0z;
A{Qv*}

delta 1601
zcmbQGb4y#`)W2Q(7#J8#7`Cx9FflTyO#aBHveD!m<79azNfvfS2C>Qd91@#DnA8~^
zc!FF5Lp@!CTzy^rLKqo@kh$^k&i*d07=nI|zOIZ6N)VNkw=>JBNI}>TL*m_B9YaEc
zT;rYnLqSH$KqNPRXa2&-%FMvPz_Ix?>uV;qLWW{?hN8)LIE<J}7)mD#a+)!gZ}#A{
zWt=>p>yQ_JdTL2fYGG++YEf!#YF-H=g9w^PymNj^Di&eC#N1Ry1|_)a&C9vnm>IWB
ze#hs==s($%|GJ<UgCv7GgD3+d11AFm0~3SfWL^P%M`;F025lr!Sq4c49VEUygCv74
z5+7uW9ui-Aa;<>8p(KMOgCVjggCv6y5+9_?7>O@C`K*AvBS@DSk|@Y6=16>yTP%?H
zAX6-n`0|r=1?3qfC;JM@Gb&Eb6@<9M0Z9eOL`Nh($OI=OzVhU~f)IDOB8h@@xgqgE
z?r=xqgG}*2;;T-U6_T$9`NkVb6l97I5+9_?7m4r3Aj#m5#0SX-An`%w1tRf5<^>_~
zLF$7M{Cb8E21$lcga89bK^PJrWMDWFA7o$z5+CHvNF+W;e-siwnn98w28j=nkA?H=
znHWG8#K8ra7(f=pBk@5R5|H?b43Z2<NPLidG7=wTUJ4Q)WL_!~AEZ7F#;<2!Vn}C@
zWXOOCFff5bAQOoXGB68?4>B+ti4O{a93;LNgE0dKLoP!e10zE|0|SFL10w?nu<u|f
z*vwG25uA@I7#JA17?|oA7#J)W*qB~2RDy*WSQr_q7^)dSbPYo-n66`}2h$Bux)Dk@
zLFs0wx)vzi3f12Rm2ZcNcR=Y*DBZ<S%}@`rs2i%V2TJ!s4d{dN`=Rs%C_ND>KM88k
zWGH_MRDLRyo(2`44&~2)s-Fp^XE9Vmd^Q`ZU=Ea?3)MIe%AXI_umCE)5GuY1N-u`W
zFM-N0h4Pm{>E%%I6;Smnq4X*STS!o^h6=2K(rcmgI)?S&XxRWJH!^Gj#~LHUW(G!v
Ht!$hCfPu%G

diff --git a/bin/WebPageCourses/impl/CourseImpl.class b/bin/WebPageCourses/impl/CourseImpl.class
index da5101953bfa0cdd059061a34c33bc0083a206d9..e861e438183f8b59e0b4319ed152d1ab0c136788 100644
GIT binary patch
delta 3946
zcmez8(CE)~>ff$?3=9k=i~$?DrgGN{q^Fhymz1Vd78K>D7bWHvGcw3)X!?YwCIuv>
zr#k1C78R!!>w{GUKvY<BF)%VL;bB<Hu#AyGIMq2nuOu-uFSW=mHL;|$DAm)2k%3u5
z(-Wj>1rNhYhE<FVLaCm4C8<Sui8*l9j0~C@nm+lH7jvsdvNNn<WRS*VB_o4qQetst
zaxjKl8#VAbb@D`>G+9Q54Ll4R88(5O;RH1W?u^NEx%=xG83giD%fWs`gn}$SgRL1E
z1d1^nqkz{j)|z2l3_BQhu`}#sWKhX3O4m<K&dDq&PMz$-%&lBnl9{9Lnw(#h8d{Q>
z!^5zfVGkn%S7xzeUUF)2Nq!L{gX81{+!E}r{z+M>$t9B$StKl=Y-`OZc7}b73`$vv
zWr_MZiFxVzo;f+G>4`axMd_uvsd*)?70IauC7Jno><kAO8N?@_7Z4BSU^v9cpca&x
zTv}9|S(d7h42egOa)rG75{1N^oc!|C6os_>A_Xpn{R~HV7}ObjK(Ts^hv7Jb7b62l
zNq%riQD$B`NctoX!zqT-lbHl8O+egZTnu{|j(}93=V7?OaFLNgG8G*7L8-a<WvOmO
z`MK~oU}Q+qnC!q|IJuVHNCc$iG7rOAhIL#F%nVm~7<w5tP5#g0DgctW&BI{BV9U;M
zmytnZvLmzD<RBgqjynwZc^DorJe-`z({22ihoKV`)e1OmgC<ju>Cbo=o-kaT?82++
z@`{JSlfesQ#~U7oI0)+<4?_}!^?`>WjUk<j;S<9bc81T43<8LdcF8YI%1Py6_{#8Y
z@>*Usl^;9|`3wahgMRTaOlFt@V*TM^SjeylWaB>`hUW|~CcoviVrOJ!WM^k&o2<vD
zD#XaaAj`<Wnw*oGSj5iA#mFEsc_N<(7dIm-BM%QFFC*XNW<HI2MgblMZ*UYa3h^++
zLs%j_49OtYCq^+IMsbF8Mh5N_u#>_Pb4pXW7#JBPc^EPnGC?e99)@Oy77$C8hhZ+m
zJP=EshhZzjHZBHcMnxV*CPrpP29CVca<FDb1|c7WNBt)&@JpI9s`D_aFsd>#u%&ty
z2d9=WGO%cPYDR%vs?Ecw!w|s8z@Ay`np;p($;A-EsK>*o&uB0?k6$H^(TImpgHaP?
zrwI?EDM%$ps%LRPQGP`wC}@sxFj_D&a42Xb=clAvDR3}aF*0!IDC8yPf_XNK4BR^4
zM4Fmc0+P0a2o$BJWR?_Lfs!br0}sO~Mn^^l84Z`oiULwxTnzgeok3zQljjM@Pd+3N
z%IG~=LePZ8kC8zalzt|9iBGN-Y-E(3{9n+B*M)(FA%cN}A%}s7p<%L}kdNpx1{MZC
z25yEV1|fzr21$l4204c1ljjRrGj5oCTPTWiCj&dfE(S4%J(KN(T^Wx~4iFKYJX6?R
z@Eijx!+8cSh6@aW3>O(x7%olzC>+OlYjS`{jNoGiR)!}GTntYc1R0(&s4zUA{83nZ
z@)Z$x#`j?ThNA9*KNwgUell<|{9+Jf_|2fg@CU4Bfv7tp3s}uxQFlRJ23AHs1};W^
z20=yv1{Fp@u$mk(S4K&&n&V<&qDl;`jLHmLj4BL*jH(RsjA{%<j2e@T#INcaGH@^&
zF>o;&GYB%8Feo#cGN?0}F_<x$GuSd(Ft{^XGI%jsF$6MNGbA$FOg527W^@6Yx>h1w
z)R%#k(T{<P(Vsz(F@QmVF_6KSF?h11<Tc$G1`ftp1}?@p20_Mn24%(s26e_n1~bMa
z23y8t26x631~0}`hCs$Nh9t)H$ud$l^$QsmF)%X7F)%QAF)%SOGB7X*Yi(m#EWkdW
zft7KC);5Oa2N+gwU|?WiW>95dVBlh4Vqjp*XW(WmU{GUVVBmphVK8DaW?*3O0IOr<
zW?%%BA5e1x7+4sX85kJ&w6qT}v<k56Y-3pOs{=BUi9xj<Ze}F|4`UVBOa+K?sF@55
zd<>fzwt(&7W2j-M1v_&q!#0TVjC>3nVD;_VAjd9a5P&&9LHig(jF$EehV3&M<aRUc
zjoi(!KT_!6c80@R+Zc{+V>q#m;mmezhO_$_eL*^pF>q?>Y-2d*t9^_?2;@>NR-x58
zI~lrJ8GN<0b+$2Fn!Hm|ww_&Edpkq$Hioc`V84RG#EOBBfq}7^L6otDL6)(V!Gf`k
z!HTh+!I80p!JV;_!JDy*A&Rk^A(63%A)B$6A&;?-p_H+op^b3@l7HLb{%wc)*NVXq
z>R(W}@-wiBD*dTv;A3Yf6Z*v<EY83PDw-joz%Y%0g@J{Efx%d26$1!pF)%Q&Lop~q
zmxH{gyN%(TA1D@9>uzJXv_VT-Mt3{I6;Mn-B3F!om4ShACW8p$YzAq@ISh)7a~ZT5
z=Yt)o1u?!J?n+~ZYYf-Hv0}_{gW)D9T`(Af-OCJ42doUtB0QW7jG*cO>d2!|N5()M
z84PkM)RFoO3=AMXGPYx2U~pw%VDQn}#&GKZ!yRqio%Ia&m>D)`G3st(=z~!6Ar#Cz
zj}YFGVqjxnU|h*yz_^;ho^dUM8{>KgU&f6LA&i@myc7fXQ4HKiF>oKnAo+-$fz_a%
zkByCufe}<~K|NK>zzX)eE-2kW0-r${>M2kRh=39oC@pF4WN2q)*r27oo#83Mk$j-U
z%ea?8f^k2CI^#jG!^9v4!X2gyb_63RSnC;B7?>pZ7#Km-7}Nz1puw6f4Y587Em%z$
z7#J)W7#Kjo>CC{u;LX6m5Wv8|5DE%bP!@j)B3^@tw;<yE4u+2)`a6jD2_k-P(2|ys
z-OliL11P^j5{niC7Xt(1X$Awvvkaz;=NYURFEZFOUS@D%yvpFic%31T@g_qU<86j$
z#=BroK@w0h+*8TmFa{Mk$qfG)8NgmnW@Kapl{BFA&dtDSz{0}9!p_3N!oUcs8A0By
zXJBB|VPFOY8pA}We>>6q>kjo_Bm)CO5(5K69s>hIIRgVj1IWKS8Ce(^Kn$G&jGQ|e
zxtSQkH)`n|V2Ihq$PZ%(!WhC}#;0wJqT3iH!0h_QZH!W2*6eMJGGNB)ZH#gowWM{n
zGb$j;gdheH1_s6#3<iv^7%UlIGq^LpVenvl#}L5yo*|I&BSR$PCx$4-FAPbHUm21a
zzcb`9{$R*w{KZht_?w}E@h?LI<3EN*CI*I1CPs!XCT4~SOf29~tcMhi6XC%)5gv>a
z8I>578JIw+gaH(I;v5_t+#DPn42+-#11Rtq7#RLCFoQ$702+3gXkiCRCyopZ44w=O
z41o*`4B-q646zIh49TD%+sVjM&&aS*YZHS!IJ7n~C~jjE1o4%(F$!<g;sb{gBRGT@
z!NJ1_37hSVYKWlmV-RLwVB%#kVB%-6WD;PoViIC-WD;g@ViINWWD;ZWVv=A8WRheE
zVv=SEXOdxvV3K2qWs+xzV^U;Du4htWNMTZ8$YfGw$YN4w$Y;_3hYKXj6u^U}02(Z?
zl*Gx-&d$op%F4h9Y6C$6gRuaVnHU%tK0^cJ4O(EhK@-n31_lODm+dqIg9yVl1_p+Q
zT3Z<Gk1+^>sGW>jlT+l>m>6{@_duvE5bBPcZv8ff-^UnOS=KPG(URWIXt)MmXMl4L
zlOclvlQDxklPN<!lR3k5CQF9>Ox6r%m~0uYGubmdVsd17%jAsYzt3?0eMa)1JcE>h
z2%`YAfCD1~GReir#lZ-I42%rNCpXHA)H52-WZ=-+&S<s)R2PC6+Zhh~XbUr%Z(}$S
zuC28Nlrv6*YYQ`4!US}{3}HrVFs-$PK@ZFjX0!#<T3Z+lwlUg=YYS*@V{{7F-o|hS
zQMMT|@Gvki`7-b@`7=l`1u$eOFa<JbG6gXhG6geOF@-QVF@-XCGlek(Glet6FhwvV
zGesi#HUsKg35EbhS4KAmZ~@4`%)rRQz{Cj3<V=hnjG%-n#K6R0&gjMH!^X+L%;?ML
H&%g-)x?)PZ

delta 2433
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

diff --git a/bin/WebPageCourses/impl/RelatedCoursesImpl.class b/bin/WebPageCourses/impl/RelatedCoursesImpl.class
index afff70383ba5ff2388c6247550584e89f495831b..f571bc5cbfc8d34062929322deb64631e1fc8c3b 100644
GIT binary patch
delta 56
zcmaDV^+;;M9Y)8=j%*T>`B<bU3ox>77GpfZ$n314i7Yr-j5&Z&YBD3E$mSa6mz)5@
CR1RtY

delta 56
zcmaDP^;BxY9Y&|g4_PE8`!GsR7GPv$Ox-NXc!ZJBW%5U6Q;5K15#|6!>B)?YB8;h<
JE16$%0s#Jh5Geov

diff --git a/bin/WebPageCourses/impl/RequierementImpl.class b/bin/WebPageCourses/impl/RequirementImpl.class
similarity index 78%
rename from bin/WebPageCourses/impl/RequierementImpl.class
rename to bin/WebPageCourses/impl/RequirementImpl.class
index 69759382668ccc7617b2c23797889b362d94702f..6fd29e8f531e15169f403d6493b6c8c7526691ff 100644
GIT binary patch
delta 87
zcmcaDdrem0)W2Q(7#J8#7^bi@FflSHPZW@xsO2Ln6`q<DkeHt8oL^d0oLa0Olv-Gt
pxv@u-kxA8OqJZS&y^J+%+(E8^p`M!^m?p5WiGUSszRt$N0RX#68vXzP

delta 95
zcmca6ds|lE)W2Q(7#J8#7^bi@FflTyOkT(+$(TA((??7?JT)mGF+J5ezqF`0wOBtW
wwXifZbz_$(Bcs~n1&mURsgrjx*0A#gxdw)Mx^A{%n!v&?3Q@HA5*rH#0H_ijtpET3

diff --git a/bin/WebPageCourses/impl/StudyProgramImpl.class b/bin/WebPageCourses/impl/StudyProgramImpl.class
index 4ccb474bd2744769a98e2def2b6158a446a588a4..075119083744fb8b98132018a08e7251c55d0871 100644
GIT binary patch
delta 1612
zcmZ3YvQ3Ta)W2Q(7#J8#7`AWZTF%O7JK2CqZ1M?KaqjTUk_^whvecsD)XDc*RX78A
z7{nQZ7#VCQOR!prdTNF-GH|Ct6*#7(Ff#OLOx9--pKQQZ!5PNG;K5+a&JZzqBb%;p
zI71W<Lo`DSBLhcLVsU1&V@k^8FKo4JaXbvc3?Y-t*_#acU?v5n=H{2Bax;W8r1LOj
zfb?*K^+3eA7?>Hdco<R{LMDG_SCz`+VNhdG=VD-FDBxkRVXy^B7x6G;GvrJ*<FMtc
z<YCZY(Bx*QW~gOnsF~czp{8HQAjrtTnw*oGSj5iIz{ntyl~|UjUs{rxqwk!blarcU
zl9`_e($U1j(9F;>`5K2NTN@8U8AJJGR!$Rz9v+5HhAu`1wp7pJ;M5XE1{MuZ%_uGg
zD~1U?3=<h9O^)PLuCHd8!ox6?L6?z%J+s&~x1gjF<gV#F4806}j0_wl`N1VcnR)3T
zXV2ncm<>|Mk?L6-P?TQ*Rymi4VFrUbJHvcN263?SauV~>^&y&^N;7j(Qj544<}oY;
z#fK&b!(v7T4h4<8#N1RX1&}z~QXYn749h1oa#{1vV^|5|tYT!4(Quxuz$L>xk74fQ
z46bOFO^ggGlOvc^Ccoz5W!cKepbLuki2>r1HMu<*`6d^0YcU#4p2uy;8NtB9V8g)8
z5IOk)w>4wZWEmbC#_Y+FJTZbL46F>L3|tIl41x^h3@Qv2laKM#a5gZoGc+=YF*Hy1
z<~4|qU|?rpWME*B)!M?~b(}#&Yd3>Wq>!H$s{s3UhJdXMULf%e3=9m+45ADS415gC
z3=9lC4D1ZO3=$0e3}Orn3_K767-Se^85kHW!D<;L7#P86=LWC3aOeSsaBbb443W$X
z8?>}#bhk6aP8Q-b(2QqD0BhA|NMuN2U}9ik&}K+xNMT?G8^XfCB*MqQ2u@2kc-8A+
zrli45$wYV83I-8|RSe1uYryW(VqgIq32_(5aN;b?X2@Y+WDsItV3^Lp0ye`~dKJUu
zIzAbb+zndW81g|x=msrm8QJX&g$Or@F|aZ)Fl=LxVc5Z-$gqn+jbRUiHp9Nj=lI06
zK^_DJvoS+4LkZZc#tfwlB~Y)jF|f$6u&^*Ng43}8zj1xVMvz528LAi=Kn$G&4D~x1
z8krcvLE@n>@la%OX`Ss1tsB9i4~i*025trhhLa3345t}X7|t-LGMr=3V>r)X!*GGY
zmf;eE8^dLW5QZxZp$yj;q8YA(Lrei2yD<zhTHvT;V2A<749MXz4DAdZ3{2pd0XdgL
zT%3Usl-DM|;Wt8dF2aEuwWPN*bR%4(#=yzI!0>=UhT#!|GQ(pA6^5q_x(v@4^cY?+
zm@~X&uwZ!2V9W3Z>=H3>7}-J76a#}D)FGhM1+t!<laqlFlwZLyHF>UpYh3?K26pD<
z3@j{bw6-wVA7c;%Q9BtXGcwF#U}agu3=;N&2z#LjOK)eGwgw(<kXZc6Aj9yT!G+-`
zLo~y0h9ZW)lN|)b>mjiSasw{|my7_jfCD3g2%`ui10$$F06T?&p_PFd?06HcZ45JK
zGH_^ZXPC2LH^aP05Mw*T0v~OmMcWvbgllVUVUPkd1T?oXtO(cM#;_WZn4}ok7#JAY
z8F&~u86+6F7~~nb8Q3)#c^LE=c_-f$6gODIu$F-l939LIj64iX4C@#e7?>E=Gl0wx
XVqjuWWZ1~CnT?ZynPCgVHU>@rAWut>

delta 1345
zcmdm{wnT;N)W2Q(7#J8#7}js(TF%O7G?|fIdh%ITp~<gURm9yG8Te8?^U6|-ic^D9
zbMwnm85w#sd?qupi%oW56P(<~md+W%!{EVS%gzus`5&9ESSUjT4?`qF6e9z7Qetst
zGDO#8JN8<(7#@Z|hM>s@*_$SpaVSfr@i3?{sB<weGGy>D*f7{~F)%Y^@h~Jaq)gt-
zVar#@!=S;S$<0vAP|D6wGWj2enqV1&AR_~7a!zVu5j#T#BZJ7~L{1Sdkdi7MhH8eI
z$-$hOY;`;gc?|iJn>bArT6h>58JZXw*it=<gHuZw8CWztHKVu~tQb0Y7&;lcCST)J
z_9<rQ;bG`y&}C#`&n$M$Ehwo3Ii#P5p_QSHk%6NmKe(hQGcO(F&PhBBlR*kOQay_U
zit;PKDyQ-=OkhxFXPC~&AU=6Mm$(ua!!(AOJPhItnj8$X85uYfH1ZO2Q>_$0;&XWz
z<}u8lT*qb2F^yp%h_h(&K`uq+X$(^*Kjn&MTs7H|+k|B;BZDp|h$jY!PhQ6D$;dnT
z1Gg5V@nmTpOU_6J76w}eZicAIu{_p{$&+XD*f8cyzQz+HSjxc4P{zQ;P|hI8P{E+W
zP&wI|w}!Kkft{g=L5!hg@(Er8n=l4821W)325GG=3|_|>gtT@u_(Tf%X|Zl+2-wQt
z1rpuBz`(%FAj-hNz{kMMz`)SUz|PReAjU9Z@(Er!W>5sa;!_t6KEM#Ft-F&UoS9*R
zmbQ%Uc82K56Zs4@V;SPW7HBiXGbAuDF)%P_GbA!3F)%Y&GB7Z(FffVmF))JTxRzhv
zBz1$<HimQ%5xhZ5T1Iv|Lngv{F$Pu!28I<3G7PI26dBeqs4=W#&}P^$`2oMUHpp<0
zKa3f&8FIkZ7&GKD<Up-qV_=bCVPRol1g8Wg0pt3DjUbD5G88c~fEYRl7|M4tR5CGy
zgT#Yj;=#z`(mLB2YB$0ILyv)*fq`K+gABu71{H>V45|zV81xtpGT1O2Vz6a6!r;bm
zlp%!S7(*z-35IBflMG@E3=9h30E}Uf(PEHg0D%~AsDK<E!%)xAz`z6!6_9f|#KjpH
zL8*1}KLI0T=OP@qQA>I|Lo>ofY7CqV3=EeTWEie6C^KATP+_>vpv!QBL66}UgE_-(
z1`CF}47LpSz%CI3hmjqF4AdcZP=|mb1!O%tCnp0VD8(}{G6*qDUN7ic-#(Lpoq0I}
z3(Fd<Ee!U@7z9DoPKItqhFJ`(ENhrS!d?(zFBD<v?F@Zu;Nb>|#pet%3@;g67+y0(
zGrVOeVt9|_stUNPDv(??xmZXrdjf+x*g*^otqjayFPLa;W0*LTfkSIM!;}rX8Ky;o
z7~2_U_-G5w+Qu*^Tw7}kgA|w{pt+4<LAdrdhQ){^CB?wTz`*d6frsHYg9O7L26=|R
z3>pmo81xzbPkt{XZm@)5DFY)oPM8@Oc^H@&mN76eFflA=Si!)+AjH7LpvbV2VKo~k
M12e-KhII^_0D2T3*8l(j

diff --git a/bin/WebPageCourses/impl/WebPageCoursesFactoryImpl.class b/bin/WebPageCourses/impl/WebPageCoursesFactoryImpl.class
index 33e43675234a32d2b3f7f0f9657b15aaa7bdd575..160480501f8677c937d4a9c9a0487287dc2bd352 100644
GIT binary patch
delta 112
zcmeyM{aSm&Iu;$l<f7EXlGLEo!qUv5)ZEm(5=I6&4Naf$)TDsK^i=2k(xT$jVtugu
u<~uCwSs0Zk3W!Wzz{#ozQSO;rki*3=nL&Y(fx8IV6jdLn!p)C3`FH@+5hZ>A

delta 119
zcmaE@{Xu)fIu<>l<f7EXlGLEo!qUvtqSV~fyb?wRc@0gU@YJM$#Pn3>{L-T0)M9;z
wg3Y&B*0W45<Q7$j@F5yJa|?2~7$!3)Ff#BIp%|n#`6G`g8$|8qyPSMH06d2&`v3p{

diff --git a/bin/WebPageCourses/impl/WebPageCoursesPackageImpl.class b/bin/WebPageCourses/impl/WebPageCoursesPackageImpl.class
index 550ee7f5fee50507d8ec3a7bf3dc3eeb7afb0d4c..56ba461bb23a2bde743584ecd238d170394b5652 100644
GIT binary patch
delta 5428
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

delta 5237
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

diff --git a/bin/WebPageCourses/util/WebPageCoursesAdapterFactory$1.class b/bin/WebPageCourses/util/WebPageCoursesAdapterFactory$1.class
index aad769f498abad3eb9953cc47215ecde7b8b271c..bfc46040b128be888bc75e64993f489a6009aec6 100644
GIT binary patch
delta 201
zcmeyM{aSm&0%l?U<iz6Cpwz<B%%arX)VvZ#2G_~<++wU?-ef^8y~+QWIb<Y~i&7Iy
zkkvV+Bo>sU7BMo&Om^TF-E7Gs&OZ4(8~^0F+@g$SlQ(m_F;-6g#cj`6GuevAoU@*X
zL772?kwI^AEW7OF={%yGO*{;~41SCZ1|Zwmz_yi4e#kAs*2=@6$)L4)6VFXHM)%1*
m!p4k|lMe_RGX_uoB5cg4JXu4;n9+A~jEFI#=H>|^35)<Oojck9

delta 214
zcmaE@{Xu)f0%lQx<iz6Cpwz<B%+#XP+|;}hMg}*H$qFo@>`?yXg-p7W|1fh1OC}ek
zCYGS6oh;8THQ9iLl`(a*DT_EehzZxm$Sc8C#>1e=pf%Zo+k&xjav`@HW6k6p-1dz1
zlYelVGd4{&;IU$B<zet;@Y}qW=O!DoCPT?&MPZT2bA@G@-5JWk?2E#(jFFSy3mY>B
fGt`1bEJb9Ql^Ghq>|7C9W?zP85PS1N5idpnIEFr#

diff --git a/bin/WebPageCourses/util/WebPageCoursesAdapterFactory.class b/bin/WebPageCourses/util/WebPageCoursesAdapterFactory.class
index e1c14671a4eda452f9abe95dde5fedb325a8470c..a2795a1b1802265da40ebe709552cd9c8d1288f0 100644
GIT binary patch
delta 25
gcmeAX?-t*X#>yj+T$Gwvk{Xm+Sem)Hm{pPu0B$!3NdN!<

delta 26
hcmeAc?-AdS#>y+1T$Gwvk{Xm+Selu-xrkMg4FGqu2(JJD

diff --git a/bin/WebPageCourses/util/WebPageCoursesResourceFactoryImpl.class b/bin/WebPageCourses/util/WebPageCoursesResourceFactoryImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..faa6456bcf5c13ecb76f4c11dd4a05242e92c8b9
GIT binary patch
literal 790
zcmX^0Z`VEs1_l!bX?6xCMh4UH)TDsK^i=2k(xT$jV*S#R%p84Gv7prA{L-T2RJX+B
zlKi4d&)k9>b_Nzk2J`%)bp6!ioXmpaRQ=T4H2u`%{GwF-BB*lx%-n(;eJq+88Q5$x
z^D;~97#Wx~G{YDfSe)}yQn?tI88~?uSQ*$D8TfrN^HTjvbCXhwLK2g5QW+V9eDaeM
zbHWmfGC_Q(AWKO`W-%j!xeuy)iS&atBLiP@QEFmID$I?H3_cn@=$=Z>&&|!xgP0i_
z<Y}#mp#sg@Fw?Br83Y*_^oVyGC}6o51Q>)tp&-J@phARW!WbEtON%lY85A*`h3;@h
z2DYNq;?kTFMh4>jz{tQA42k?qP&BBa`Ud7zq?DnTl~|U@pvb_;z{~&wObm>mIAvgD
zU}s=pFlJz6U}RumVAa~rz_F2mfq{vEi-CcGi-C!OfkBFag+ZEun}LCW2cn39hk=)Y
zfq{{MkAWX*fG-0x*kJD63<8nb+Zlv>bvB?GqsqX^pawQZ0iqOY3<Co<gD8U-10w?`
R0~3Qdg9HP}ZIWQ!QUD-s(?b9N

literal 0
HcmV?d00001

diff --git a/bin/WebPageCourses/util/WebPageCoursesResourceImpl.class b/bin/WebPageCourses/util/WebPageCoursesResourceImpl.class
new file mode 100644
index 0000000000000000000000000000000000000000..f1fbb746d531ee9babb5dfba5de826c2508ac318
GIT binary patch
literal 463
zcmX^0Z`VEs1_l!bA$A5PMh3m`)TDsK^i=2k(xT$jV*S#R%p84Gv7prA{L-T2RL|Uk
z9Cij4Mh3n7qICV#<ebcc;#B?A+%)~v<ou#k{fgX7{mk5g9Q_DiPh>re3~V-;d6^}4
zj0`FoKInRr^K*0a^C0$y26<X*hA}d*IOnINaxpM7aPly)GO#f+@cU%urTUfTCZ!gI
zBqrsgGBODH<R>TQge4Ybg7{EDmXeIjVnzl7A5;%O3`Z41cAzyQ19NFnCL@C)LDw-d
za0P<{!z~l!3VGay>SZOCB{C>7FfuSRfB+){Bgiidj124y3=DP*Obkp63=C{q+S?g8
yHZm|UFfnj3Ffed|MI{+n8KfAv85kJEz<f3a9tK{JAq;E`d<^^yAhQI(dISM!WqL*c

literal 0
HcmV?d00001

diff --git a/bin/WebPageCourses/util/WebPageCoursesSwitch.class b/bin/WebPageCourses/util/WebPageCoursesSwitch.class
index 33be6dcdba948eea6d4305b1e4e6a5ee6a6f29e1..46c191992f224f2fa1b619f209bbba126f983254 100644
GIT binary patch
delta 143
zcmaE1_{eaB6pNKqcxqBWVtT4`erZv0YO#J$YGG++QEF~#UI`ZiBZD;$gAIc%BLjbO
zVsR>x93z9l<c-{7n{!!Sv#4+vAv7^E$oOD0a&sN05fh^#ND~{x_{j@-Bq!fx5!n2l
H`y&qkONcO0

delta 166
zcmaE4_`-056icLZcxqBWVtT4`erZv0YO#J$YGG++YEf!#YF-H!10#bq4}%SZEhB?K
za$<2RvLqvep@t70&65{0i*0UWInTn&Q-oyZ<cFNXY!GucS8^ILO%~=6;(_oXmQJ3{
PBRTmNi@@fO+#h)WaG^Q}

diff --git a/bin/WebPageCourses/util/WebPageCoursesValidator.class b/bin/WebPageCourses/util/WebPageCoursesValidator.class
index 5de1c241db41c1b9fb5ed4fdee5c453fd64c0296..8d1aa1c857520b0314e9766587ff8f7bce94bb3f 100644
GIT binary patch
delta 142
zcmZ4HxxjP78x}^X$%29+T1Bb3sd*(_42%r6JPdXW_KXa|Wr;bNDTyViL8*nMnGktK
zhG>n+0)nD!5boqaF2~JXtRK0U8c~El@~8827a?ntLDp3$Dmr;CE8pY~tTvMsL^U^W
I5&R?s02K2q{{R30

delta 165
zcmZ4Bxy*CJ8<ueC@YJM$#Pn3>{L-T0)MEXh)WXut)S}ef)VvZd21W*39tJxGdqxJ4
zvc#Osl*E!$WCe^2F&aKt4cP3!YQZhhghO_+1FO^IcpgoDMh2cDBnu}m6cJ{FSg=_^
Hut69ANs2eO

diff --git a/model/coursewebpage.ecore b/model/coursewebpage.ecore
index c6e52e8..c01321f 100644
--- a/model/coursewebpage.ecore
+++ b/model/coursewebpage.ecore
@@ -20,6 +20,8 @@
         containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="relatedcourses" eType="#//RelatedCourses"
         containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="studyprograms" eType="#//StudyProgram"
+        eOpposite="#//StudyProgram/courses"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CourseInstance">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="semester" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
@@ -58,7 +60,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="schedule" upperBound="-1"
         eType="#//Schedule"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="courses" upperBound="-1"
-        eType="#//Course" containment="true"/>
+        eType="#//Course" containment="true" eOpposite="#//Course/studyprograms"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Coursework">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="lectureHours" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
diff --git a/model/coursewebpage.genmodel b/model/coursewebpage.genmodel
index 878892d..34d5026 100644
--- a/model/coursewebpage.genmodel
+++ b/model/coursewebpage.genmodel
@@ -5,7 +5,8 @@
     importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
     operationReflection="true" importOrganizing="true">
   <foreignModel>coursewebpage.ecore</foreignModel>
-  <genPackages prefix="WebPageCourses" disposableProviderFactory="true" ecorePackage="coursewebpage.ecore#/">
+  <genPackages prefix="WebPageCourses" resource="XMI" disposableProviderFactory="true"
+      ecorePackage="coursewebpage.ecore#/">
     <genClasses ecoreClass="coursewebpage.ecore#//Course">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference coursewebpage.ecore#//Course/instances"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//Course/code"/>
@@ -14,6 +15,7 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//Course/credits"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference coursewebpage.ecore#//Course/coursework"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference coursewebpage.ecore#//Course/relatedcourses"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference coursewebpage.ecore#//Course/studyprograms"/>
     </genClasses>
     <genClasses ecoreClass="coursewebpage.ecore#//CourseInstance">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//CourseInstance/semester"/>
@@ -25,10 +27,10 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//People/Role"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//People/name"/>
     </genClasses>
-    <genClasses ecoreClass="coursewebpage.ecore#//Requierement">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//Requierement/code"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//Requierement/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//Requierement/TypeOfRequierement"/>
+    <genClasses ecoreClass="coursewebpage.ecore#//Requirement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//Requirement/code"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//Requirement/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute coursewebpage.ecore#//Requirement/TypeOfRequierement"/>
     </genClasses>
     <genClasses ecoreClass="coursewebpage.ecore#//EvaluationForm">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference coursewebpage.ecore#//EvaluationForm/Work"/>
diff --git a/plugin.xml b/plugin.xml
index 2de5c9f..ebe5305 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -14,4 +14,11 @@
             genModel="model/coursewebpage.genmodel"/>
    </extension>
 
+   <extension point="org.eclipse.emf.ecore.extension_parser">
+      <!-- @generated coursewebpage -->
+      <parser
+            type="webpagecourses"
+            class="WebPageCourses.util.WebPageCoursesResourceFactoryImpl"/>
+   </extension>
+
 </plugin>
diff --git a/src/Main/GenHTML.java b/src/Main/GenHTML.java
new file mode 100644
index 0000000..7a556ba
--- /dev/null
+++ b/src/Main/GenHTML.java
@@ -0,0 +1,133 @@
+package Main;
+
+import java.io.FileNotFoundException;
+
+import java.io.PrintWriter;
+
+import java.util.ArrayList;
+
+
+import WebPageCourses.Course;
+
+import WebPageCourses.Coursework;
+import WebPageCourses.Organization;
+import WebPageCourses.StudyProgram;
+import WebPageCourses.CreditReductionCourse;
+import WebPageCourses.People;
+import WebPageCourses.Schedule;
+import WebPageCourses.EvaluationForm;
+import WebPageCourses.Requirement;
+import WebPageCourses.Work;
+import WebPageCourses.RelatedCourses;
+import WebPageCourses.Timetable;
+
+
+public class GenHTML {
+	
+	
+	ArrayList<String> genHtml(StudyProgram studyprogram) throws FileNotFoundException{
+			ArrayList<String> strings = new ArrayList<String>();
+			
+		for(Course course : studyprogram.getCourses()) {
+			strings.add(genCourse(course));
+		}
+		
+			for(int i = 0; i < strings.size(); i++) {
+				PrintWriter out = new PrintWriter("src/Main/WebPage" + i + ".html");
+				out.println(strings.get(i));
+				out.close();
+			}
+		
+		return strings;
+	}
+
+
+
+	String genCourse(Course course) {
+		String html = "<html>" + "<h1>"	+ course.getCode() + " " + course.getName()	+ "</h1>" + "<br>"
+				+ genCourseWork(course)	+ genPeople(course) + genSchedule(course) + genWork(course)
+				+ genCreditReduction(course) + genRequirement(course) + "</html>" ;
+
+		return html;
+	}
+
+	
+	
+	String genCourseWork(Course course) {
+		Coursework coursework = course.getCoursework();
+		String table = "<div> <h2> Course Work </h2> <table border=\"1\">" +"<tr>" + "<th>"	+ "Lab Hours" + "</th>"
+						+ "<th>" + "Lecture Hours" + " </th>" + "</tr>"	+ "<tr>" + "<th>" + coursework.getLabHours()
+						+ "</th>" + "<th>" + coursework.getLectureHours() + "</th>"	+ "</tr>" +"</table> </div>";
+		return table;
+	}
+
+	
+	String genPeople(Course course) {
+		Organization organization = course.getInstances().get(0).getOrganizations().get(0);
+		String table = "<div> <h2> People </h2> <table border=\"1\">" + "<p>"  + organization.getDepartment()
+						+ "</p>" +"<tr>" + "<th>" + "Name" + "</th>" + "<th>" + "Role" + " </th>" + "</tr>";
+		for (People people : organization.getPeople()) {
+			table += "<tr>"	+ "<th>" + people.getName()	+ "</th>" + "<th>" + people.getRole()+ "</th>"
+				  + "</tr>";
+		}
+		table += "</table> </div>";
+		return table;
+
+	}
+	
+		
+	String genSchedule(Course course) {
+		Timetable timetable = course.getInstances().get(0).getTimetable();
+		String table = "<div> <h2> Schedule </h2> <table border=\"1\">" +"<tr>"	+ "<th>"+ "Room" + "</th>"
+						+ "<th>" + "Date" + " </th>" + "<th>" + "Time" + " </th>" + "</tr>";
+			for (Schedule schedule : timetable.getSchedule()) {
+			table += "<tr>"	+ "<th>" + schedule.getRoom() + "</th>" + "<th>" + schedule.getDate()
+				  + "</th>" + "<th>" + schedule.getTime()	+ "</th>" + "</tr>";
+			}
+			table += "</table> </div>";
+			return table;
+		}
+
+			
+	String genWork(Course course) {
+		EvaluationForm evaluation = course.getInstances().get(0).getEvaluationform();
+		String table = "<div> <h2> Work </h2> <table border=\"1\">"	+"<tr>"	+ "<th>" + "Type" + "</th>"
+							+ "<th>" + "Porcentage"	+ " </th>" + "</tr>";
+		for (Work work : evaluation.getWork()) {
+			table += "<tr>"	+ "<th>" + work.getName() + "</th>"	+ "<th>" + work.getPorcentage()
+				  + "</th>" + "</tr>";
+		}
+		table += "</table> </div>";
+		return table;
+
+	}
+	
+		
+	String genRequirement (Course course) {
+		RelatedCourses related = course.getRelatedcourses();
+		String table = "<div> <h2> Requirement Courses </h2> <table border=\"1\">" +"<tr>" + "<th>" + "Name"
+						+ "</th>" + "<th>" + "Code" + " </th>" + "<th>" + "Type" + " </th>"	+ "</tr>";
+		for (Requirement requirement : related.getRequiredcourses()) {
+			table += "<tr>" + "<th>" + requirement.getName() + "</th>" + "<th>"	+ requirement.getCode()
+				  + "</th>" + "<th>" + requirement.getTypeOfRequierement() + "</th>" + "</tr>";
+		}
+		table += "</table> </div>";
+		return table;
+	}
+	
+	
+	String genCreditReduction (Course course) {
+		RelatedCourses related = course.getRelatedcourses();
+		String table = "<div> <h2> Credit Reduction Courses </h2> <table border=\"1\">"	+"<tr>" + "<th>" + "Code"
+						+ "</th>" + "<th>" + "Credit Reduction"	+ " </th>" + "</tr>";
+		for (CreditReductionCourse reduction : related.getReductioncourses()) {
+			table += "<tr>"	+ "<th>" + reduction.getCode() + "</th>" + "<th>" + reduction.getCreditReduction()
+				  + "</th>" + "</tr>";
+		}
+		table += "</table> </div>";
+		return table;
+	}
+	
+	
+	
+}
diff --git a/src/Main/GenWebCourse.java b/src/Main/GenWebCourse.java
new file mode 100644
index 0000000..ee2e133
--- /dev/null
+++ b/src/Main/GenWebCourse.java
@@ -0,0 +1,46 @@
+package Main;
+
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+
+
+import WebPageCourses.StudyProgram;
+import WebPageCourses.WebPageCoursesPackage;
+import WebPageCourses.util.WebPageCoursesResourceFactoryImpl;
+
+
+public class GenWebCourse {
+	
+	public static void main(String[] args) throws IOException {
+		
+		StudyProgram studyprogram = genStudy(args[0]);
+		GenHTML generator = new GenHTML();
+		generator.genHtml(studyprogram);
+	}
+		
+	public static StudyProgram genStudy(String args) throws IOException {
+		ResourceSet resourceSet = new ResourceSetImpl();
+		resourceSet.getPackageRegistry().put(WebPageCoursesPackage.eNS_URI, WebPageCoursesPackage.eINSTANCE);
+		resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new WebPageCoursesResourceFactoryImpl());
+		Resource resource = resourceSet.getResource(URI.createFileURI(args), true);
+			for (EObject eObject : resource.getContents()) {
+				if (eObject instanceof StudyProgram) {
+					return (StudyProgram) eObject;
+				}
+			}	
+		
+		return null;
+	}
+	
+	
+}
diff --git a/src/Main/WebPage0.html b/src/Main/WebPage0.html
new file mode 100644
index 0000000..83ea7af
--- /dev/null
+++ b/src/Main/WebPage0.html
@@ -0,0 +1 @@
+<html><h1>TDT4250 Advanced Software Design</h1><br><div> <h2> Course Work </h2> <table border="1"><tr><th>Lab Hours</th><th>Lecture Hours </th></tr><tr><th>2.0</th><th>3.0</th></tr></table> </div><div> <h2> People </h2> <table border="1"><p>Department of Computer Science</p><tr><th>Name</th><th>Role </th></tr><tr><th>Hallvard Tr�tteberg</th><th>Course coordinator:</th></tr></table> </div><div> <h2> Schedule </h2> <table border="1"><tr><th>Room</th><th>Date </th><th>Time </th></tr><tr><th>K5</th><th>Monday </th><th>10:15 - 11:00</th></tr><tr><th>A34</th><th>Tuesday</th><th>14:15 - 16:00</th></tr><tr><th>F6</th><th>Wednesday</th><th>10:15 - 12:00</th></tr><tr><th>A32</th><th>Thursday</th><th>12:15 - 14:00</th></tr></table> </div><div> <h2> Work </h2> <table border="1"><tr><th>Type</th><th>Porcentage </th></tr><tr><th>Exam</th><th>70.0</th></tr><tr><th>Assignments</th><th>30.0</th></tr></table> </div><div> <h2> Credit Reduction Courses </h2> <table border="1"><tr><th>Code</th><th>Credit Reduction </th></tr><tr><th>SIF8060</th><th>7.5</th></tr></table> </div><div> <h2> Requirement Courses </h2> <table border="1"><tr><th>Name</th><th>Code </th><th>Type </th></tr><tr><th>Object-oriented programming</th><th>TDT4100 </th><th>Recommended</th></tr><tr><th>Software Engineering</th><th>TDT4140 </th><th>Recommended</th></tr><tr><th> Information Systems</th><th>TDT4175</th><th>Recommended</th></tr><tr><th> Software Architecture</th><th>TDT4240</th><th>Recommended</th></tr></table> </div></html>
diff --git a/src/Main/webpage1.html b/src/Main/webpage1.html
new file mode 100644
index 0000000..b10efc8
--- /dev/null
+++ b/src/Main/webpage1.html
@@ -0,0 +1 @@
+<html><h1>TDT4100 Object-Oriented Programming</h1><br><div> <h2> Course Work </h2> <table border="1"><tr><th>Lab Hours</th><th>Lecture Hours </th></tr><tr><th>7.0</th><th>4.0</th></tr></table> </div><div> <h2> People </h2> <table border="1"><p>Department of Computer Science</p><tr><th>Name</th><th>Role </th></tr><tr><th>Hallvard Tr�tteberg</th><th>Course coordinator</th></tr><tr><th>Hallvard Tr�tteberg</th><th>Lecturer</th></tr><tr><th>Rune S�tre</th><th>Lecturer</th></tr></table> </div><div> <h2> Schedule </h2> <table border="1"><tr><th>Room</th><th>Date </th><th>Time </th></tr><tr><th>F1</th><th>Monday</th><th>12-14</th></tr><tr><th>F1</th><th>Wednesday</th><th>12-14</th></tr><tr><th>R1</th><th>Thursday</th><th>12-14</th></tr></table> </div><div> <h2> Work </h2> <table border="1"><tr><th>Type</th><th>Porcentage </th></tr><tr><th>Exam</th><th>100.0</th></tr></table> </div><div> <h2> Credit Reduction Courses </h2> <table border="1"><tr><th>Code</th><th>Credit Reduction </th></tr><tr><th>IT1104</th><th>7.5</th></tr><tr><th>SIF8005</th><th>7.5</th></tr><tr><th>TDT4102</th><th>5.0</th></tr><tr><th>TDT4130</th><th>3.7</th></tr></table> </div><div> <h2> Requirement Courses </h2> <table border="1"><tr><th>Name</th><th>Code </th><th>Type </th></tr></table> </div></html>
diff --git a/src/WebPageCourses/Course.java b/src/WebPageCourses/Course.java
index 222aa23..f6ccc11 100644
--- a/src/WebPageCourses/Course.java
+++ b/src/WebPageCourses/Course.java
@@ -22,6 +22,7 @@ import org.eclipse.emf.ecore.EObject;
  *   <li>{@link WebPageCourses.Course#getCredits <em>Credits</em>}</li>
  *   <li>{@link WebPageCourses.Course#getCoursework <em>Coursework</em>}</li>
  *   <li>{@link WebPageCourses.Course#getRelatedcourses <em>Relatedcourses</em>}</li>
+ *   <li>{@link WebPageCourses.Course#getStudyprograms <em>Studyprograms</em>}</li>
  * </ul>
  *
  * @see WebPageCourses.WebPageCoursesPackage#getCourse()
@@ -202,4 +203,32 @@ public interface Course extends EObject {
 	 */
 	void setRelatedcourses(RelatedCourses value);
 
+	/**
+	 * Returns the value of the '<em><b>Studyprograms</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link WebPageCourses.StudyProgram#getCourses <em>Courses</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Studyprograms</em>' container reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Studyprograms</em>' container reference.
+	 * @see #setStudyprograms(StudyProgram)
+	 * @see WebPageCourses.WebPageCoursesPackage#getCourse_Studyprograms()
+	 * @see WebPageCourses.StudyProgram#getCourses
+	 * @model opposite="courses" transient="false"
+	 * @generated
+	 */
+	StudyProgram getStudyprograms();
+
+	/**
+	 * Sets the value of the '{@link WebPageCourses.Course#getStudyprograms <em>Studyprograms</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Studyprograms</em>' container reference.
+	 * @see #getStudyprograms()
+	 * @generated
+	 */
+	void setStudyprograms(StudyProgram value);
+
 } // Course
diff --git a/src/WebPageCourses/RelatedCourses.java b/src/WebPageCourses/RelatedCourses.java
index cecb42d..8e532b2 100644
--- a/src/WebPageCourses/RelatedCourses.java
+++ b/src/WebPageCourses/RelatedCourses.java
@@ -26,7 +26,7 @@ import org.eclipse.emf.ecore.EObject;
 public interface RelatedCourses extends EObject {
 	/**
 	 * Returns the value of the '<em><b>Requiredcourses</b></em>' containment reference list.
-	 * The list contents are of type {@link WebPageCourses.Requierement}.
+	 * The list contents are of type {@link WebPageCourses.Requirement}.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Requiredcourses</em>' containment reference list isn't clear,
@@ -38,7 +38,7 @@ public interface RelatedCourses extends EObject {
 	 * @model containment="true"
 	 * @generated
 	 */
-	EList<Requierement> getRequiredcourses();
+	EList<Requirement> getRequiredcourses();
 
 	/**
 	 * Returns the value of the '<em><b>Reductioncourses</b></em>' containment reference list.
diff --git a/src/WebPageCourses/Requierement.java b/src/WebPageCourses/Requirement.java
similarity index 65%
rename from src/WebPageCourses/Requierement.java
rename to src/WebPageCourses/Requirement.java
index f49cf0f..c9069bf 100644
--- a/src/WebPageCourses/Requierement.java
+++ b/src/WebPageCourses/Requirement.java
@@ -6,23 +6,23 @@ import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Requierement</b></em>'.
+ * A representation of the model object '<em><b>Requirement</b></em>'.
  * <!-- end-user-doc -->
  *
  * <p>
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link WebPageCourses.Requierement#getCode <em>Code</em>}</li>
- *   <li>{@link WebPageCourses.Requierement#getName <em>Name</em>}</li>
- *   <li>{@link WebPageCourses.Requierement#getTypeOfRequierement <em>Type Of Requierement</em>}</li>
+ *   <li>{@link WebPageCourses.Requirement#getCode <em>Code</em>}</li>
+ *   <li>{@link WebPageCourses.Requirement#getName <em>Name</em>}</li>
+ *   <li>{@link WebPageCourses.Requirement#getTypeOfRequierement <em>Type Of Requierement</em>}</li>
  * </ul>
  *
- * @see WebPageCourses.WebPageCoursesPackage#getRequierement()
+ * @see WebPageCourses.WebPageCoursesPackage#getRequirement()
  * @model
  * @generated
  */
-public interface Requierement extends EObject {
+public interface Requirement extends EObject {
 	/**
 	 * Returns the value of the '<em><b>Code</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -33,14 +33,14 @@ public interface Requierement extends EObject {
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Code</em>' attribute.
 	 * @see #setCode(String)
-	 * @see WebPageCourses.WebPageCoursesPackage#getRequierement_Code()
+	 * @see WebPageCourses.WebPageCoursesPackage#getRequirement_Code()
 	 * @model
 	 * @generated
 	 */
 	String getCode();
 
 	/**
-	 * Sets the value of the '{@link WebPageCourses.Requierement#getCode <em>Code</em>}' attribute.
+	 * Sets the value of the '{@link WebPageCourses.Requirement#getCode <em>Code</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @param value the new value of the '<em>Code</em>' attribute.
@@ -59,14 +59,14 @@ public interface Requierement extends EObject {
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Name</em>' attribute.
 	 * @see #setName(String)
-	 * @see WebPageCourses.WebPageCoursesPackage#getRequierement_Name()
+	 * @see WebPageCourses.WebPageCoursesPackage#getRequirement_Name()
 	 * @model
 	 * @generated
 	 */
 	String getName();
 
 	/**
-	 * Sets the value of the '{@link WebPageCourses.Requierement#getName <em>Name</em>}' attribute.
+	 * Sets the value of the '{@link WebPageCourses.Requirement#getName <em>Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @param value the new value of the '<em>Name</em>' attribute.
@@ -85,14 +85,14 @@ public interface Requierement extends EObject {
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Type Of Requierement</em>' attribute.
 	 * @see #setTypeOfRequierement(String)
-	 * @see WebPageCourses.WebPageCoursesPackage#getRequierement_TypeOfRequierement()
+	 * @see WebPageCourses.WebPageCoursesPackage#getRequirement_TypeOfRequierement()
 	 * @model
 	 * @generated
 	 */
 	String getTypeOfRequierement();
 
 	/**
-	 * Sets the value of the '{@link WebPageCourses.Requierement#getTypeOfRequierement <em>Type Of Requierement</em>}' attribute.
+	 * Sets the value of the '{@link WebPageCourses.Requirement#getTypeOfRequierement <em>Type Of Requierement</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @param value the new value of the '<em>Type Of Requierement</em>' attribute.
@@ -101,4 +101,4 @@ public interface Requierement extends EObject {
 	 */
 	void setTypeOfRequierement(String value);
 
-} // Requierement
+} // Requirement
diff --git a/src/WebPageCourses/StudyProgram.java b/src/WebPageCourses/StudyProgram.java
index 608b2d8..339019e 100644
--- a/src/WebPageCourses/StudyProgram.java
+++ b/src/WebPageCourses/StudyProgram.java
@@ -70,6 +70,7 @@ public interface StudyProgram extends EObject {
 	/**
 	 * Returns the value of the '<em><b>Courses</b></em>' containment reference list.
 	 * The list contents are of type {@link WebPageCourses.Course}.
+	 * It is bidirectional and its opposite is '{@link WebPageCourses.Course#getStudyprograms <em>Studyprograms</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Courses</em>' containment reference list isn't clear,
@@ -78,7 +79,8 @@ public interface StudyProgram extends EObject {
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Courses</em>' containment reference list.
 	 * @see WebPageCourses.WebPageCoursesPackage#getStudyProgram_Courses()
-	 * @model containment="true"
+	 * @see WebPageCourses.Course#getStudyprograms
+	 * @model opposite="studyprograms" containment="true"
 	 * @generated
 	 */
 	EList<Course> getCourses();
diff --git a/src/WebPageCourses/WebPageCoursesFactory.java b/src/WebPageCourses/WebPageCoursesFactory.java
index 6380bda..e8febcc 100644
--- a/src/WebPageCourses/WebPageCoursesFactory.java
+++ b/src/WebPageCourses/WebPageCoursesFactory.java
@@ -49,13 +49,13 @@ public interface WebPageCoursesFactory extends EFactory {
 	People createPeople();
 
 	/**
-	 * Returns a new object of class '<em>Requierement</em>'.
+	 * Returns a new object of class '<em>Requirement</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Requierement</em>'.
+	 * @return a new object of class '<em>Requirement</em>'.
 	 * @generated
 	 */
-	Requierement createRequierement();
+	Requirement createRequirement();
 
 	/**
 	 * Returns a new object of class '<em>Evaluation Form</em>'.
diff --git a/src/WebPageCourses/WebPageCoursesPackage.java b/src/WebPageCourses/WebPageCoursesPackage.java
index 6d4bf85..d25dea4 100644
--- a/src/WebPageCourses/WebPageCoursesPackage.java
+++ b/src/WebPageCourses/WebPageCoursesPackage.java
@@ -129,6 +129,15 @@ public interface WebPageCoursesPackage extends EPackage {
 	 */
 	int COURSE__RELATEDCOURSES = 6;
 
+	/**
+	 * The feature id for the '<em><b>Studyprograms</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COURSE__STUDYPROGRAMS = 7;
+
 	/**
 	 * The number of structural features of the '<em>Course</em>' class.
 	 * <!-- begin-user-doc -->
@@ -136,7 +145,7 @@ public interface WebPageCoursesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int COURSE_FEATURE_COUNT = 7;
+	int COURSE_FEATURE_COUNT = 8;
 
 	/**
 	 * The number of operations of the '<em>Course</em>' class.
@@ -258,14 +267,14 @@ public interface WebPageCoursesPackage extends EPackage {
 	int PEOPLE_OPERATION_COUNT = 0;
 
 	/**
-	 * The meta object id for the '{@link WebPageCourses.impl.RequierementImpl <em>Requierement</em>}' class.
+	 * The meta object id for the '{@link WebPageCourses.impl.RequirementImpl <em>Requirement</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see WebPageCourses.impl.RequierementImpl
-	 * @see WebPageCourses.impl.WebPageCoursesPackageImpl#getRequierement()
+	 * @see WebPageCourses.impl.RequirementImpl
+	 * @see WebPageCourses.impl.WebPageCoursesPackageImpl#getRequirement()
 	 * @generated
 	 */
-	int REQUIEREMENT = 3;
+	int REQUIREMENT = 3;
 
 	/**
 	 * The feature id for the '<em><b>Code</b></em>' attribute.
@@ -274,7 +283,7 @@ public interface WebPageCoursesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int REQUIEREMENT__CODE = 0;
+	int REQUIREMENT__CODE = 0;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -283,7 +292,7 @@ public interface WebPageCoursesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int REQUIEREMENT__NAME = 1;
+	int REQUIREMENT__NAME = 1;
 
 	/**
 	 * The feature id for the '<em><b>Type Of Requierement</b></em>' attribute.
@@ -292,25 +301,25 @@ public interface WebPageCoursesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int REQUIEREMENT__TYPE_OF_REQUIEREMENT = 2;
+	int REQUIREMENT__TYPE_OF_REQUIEREMENT = 2;
 
 	/**
-	 * The number of structural features of the '<em>Requierement</em>' class.
+	 * The number of structural features of the '<em>Requirement</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int REQUIEREMENT_FEATURE_COUNT = 3;
+	int REQUIREMENT_FEATURE_COUNT = 3;
 
 	/**
-	 * The number of operations of the '<em>Requierement</em>' class.
+	 * The number of operations of the '<em>Requirement</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int REQUIEREMENT_OPERATION_COUNT = 0;
+	int REQUIREMENT_OPERATION_COUNT = 0;
 
 	/**
 	 * The meta object id for the '{@link WebPageCourses.impl.EvaluationFormImpl <em>Evaluation Form</em>}' class.
@@ -832,6 +841,17 @@ public interface WebPageCoursesPackage extends EPackage {
 	 */
 	EReference getCourse_Relatedcourses();
 
+	/**
+	 * Returns the meta object for the container reference '{@link WebPageCourses.Course#getStudyprograms <em>Studyprograms</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the container reference '<em>Studyprograms</em>'.
+	 * @see WebPageCourses.Course#getStudyprograms()
+	 * @see #getCourse()
+	 * @generated
+	 */
+	EReference getCourse_Studyprograms();
+
 	/**
 	 * Returns the meta object for class '{@link WebPageCourses.CourseInstance <em>Course Instance</em>}'.
 	 * <!-- begin-user-doc -->
@@ -919,47 +939,47 @@ public interface WebPageCoursesPackage extends EPackage {
 	EAttribute getPeople_Name();
 
 	/**
-	 * Returns the meta object for class '{@link WebPageCourses.Requierement <em>Requierement</em>}'.
+	 * Returns the meta object for class '{@link WebPageCourses.Requirement <em>Requirement</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Requierement</em>'.
-	 * @see WebPageCourses.Requierement
+	 * @return the meta object for class '<em>Requirement</em>'.
+	 * @see WebPageCourses.Requirement
 	 * @generated
 	 */
-	EClass getRequierement();
+	EClass getRequirement();
 
 	/**
-	 * Returns the meta object for the attribute '{@link WebPageCourses.Requierement#getCode <em>Code</em>}'.
+	 * Returns the meta object for the attribute '{@link WebPageCourses.Requirement#getCode <em>Code</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the attribute '<em>Code</em>'.
-	 * @see WebPageCourses.Requierement#getCode()
-	 * @see #getRequierement()
+	 * @see WebPageCourses.Requirement#getCode()
+	 * @see #getRequirement()
 	 * @generated
 	 */
-	EAttribute getRequierement_Code();
+	EAttribute getRequirement_Code();
 
 	/**
-	 * Returns the meta object for the attribute '{@link WebPageCourses.Requierement#getName <em>Name</em>}'.
+	 * Returns the meta object for the attribute '{@link WebPageCourses.Requirement#getName <em>Name</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see WebPageCourses.Requierement#getName()
-	 * @see #getRequierement()
+	 * @see WebPageCourses.Requirement#getName()
+	 * @see #getRequirement()
 	 * @generated
 	 */
-	EAttribute getRequierement_Name();
+	EAttribute getRequirement_Name();
 
 	/**
-	 * Returns the meta object for the attribute '{@link WebPageCourses.Requierement#getTypeOfRequierement <em>Type Of Requierement</em>}'.
+	 * Returns the meta object for the attribute '{@link WebPageCourses.Requirement#getTypeOfRequierement <em>Type Of Requierement</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the attribute '<em>Type Of Requierement</em>'.
-	 * @see WebPageCourses.Requierement#getTypeOfRequierement()
-	 * @see #getRequierement()
+	 * @see WebPageCourses.Requirement#getTypeOfRequierement()
+	 * @see #getRequirement()
 	 * @generated
 	 */
-	EAttribute getRequierement_TypeOfRequierement();
+	EAttribute getRequirement_TypeOfRequierement();
 
 	/**
 	 * Returns the meta object for class '{@link WebPageCourses.EvaluationForm <em>Evaluation Form</em>}'.
@@ -1360,6 +1380,14 @@ public interface WebPageCoursesPackage extends EPackage {
 		 */
 		EReference COURSE__RELATEDCOURSES = eINSTANCE.getCourse_Relatedcourses();
 
+		/**
+		 * The meta object literal for the '<em><b>Studyprograms</b></em>' container reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COURSE__STUDYPROGRAMS = eINSTANCE.getCourse_Studyprograms();
+
 		/**
 		 * The meta object literal for the '{@link WebPageCourses.impl.CourseInstanceImpl <em>Course Instance</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -1429,14 +1457,14 @@ public interface WebPageCoursesPackage extends EPackage {
 		EAttribute PEOPLE__NAME = eINSTANCE.getPeople_Name();
 
 		/**
-		 * The meta object literal for the '{@link WebPageCourses.impl.RequierementImpl <em>Requierement</em>}' class.
+		 * The meta object literal for the '{@link WebPageCourses.impl.RequirementImpl <em>Requirement</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see WebPageCourses.impl.RequierementImpl
-		 * @see WebPageCourses.impl.WebPageCoursesPackageImpl#getRequierement()
+		 * @see WebPageCourses.impl.RequirementImpl
+		 * @see WebPageCourses.impl.WebPageCoursesPackageImpl#getRequirement()
 		 * @generated
 		 */
-		EClass REQUIEREMENT = eINSTANCE.getRequierement();
+		EClass REQUIREMENT = eINSTANCE.getRequirement();
 
 		/**
 		 * The meta object literal for the '<em><b>Code</b></em>' attribute feature.
@@ -1444,7 +1472,7 @@ public interface WebPageCoursesPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute REQUIEREMENT__CODE = eINSTANCE.getRequierement_Code();
+		EAttribute REQUIREMENT__CODE = eINSTANCE.getRequirement_Code();
 
 		/**
 		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
@@ -1452,7 +1480,7 @@ public interface WebPageCoursesPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute REQUIEREMENT__NAME = eINSTANCE.getRequierement_Name();
+		EAttribute REQUIREMENT__NAME = eINSTANCE.getRequirement_Name();
 
 		/**
 		 * The meta object literal for the '<em><b>Type Of Requierement</b></em>' attribute feature.
@@ -1460,7 +1488,7 @@ public interface WebPageCoursesPackage extends EPackage {
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute REQUIEREMENT__TYPE_OF_REQUIEREMENT = eINSTANCE.getRequierement_TypeOfRequierement();
+		EAttribute REQUIREMENT__TYPE_OF_REQUIEREMENT = eINSTANCE.getRequirement_TypeOfRequierement();
 
 		/**
 		 * The meta object literal for the '{@link WebPageCourses.impl.EvaluationFormImpl <em>Evaluation Form</em>}' class.
diff --git a/src/WebPageCourses/impl/CourseImpl.java b/src/WebPageCourses/impl/CourseImpl.java
index d144806..858c05d 100644
--- a/src/WebPageCourses/impl/CourseImpl.java
+++ b/src/WebPageCourses/impl/CourseImpl.java
@@ -6,6 +6,7 @@ import WebPageCourses.Course;
 import WebPageCourses.CourseInstance;
 import WebPageCourses.Coursework;
 import WebPageCourses.RelatedCourses;
+import WebPageCourses.StudyProgram;
 import WebPageCourses.WebPageCoursesPackage;
 
 import java.util.Collection;
@@ -22,6 +23,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 /**
@@ -39,6 +41,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link WebPageCourses.impl.CourseImpl#getCredits <em>Credits</em>}</li>
  *   <li>{@link WebPageCourses.impl.CourseImpl#getCoursework <em>Coursework</em>}</li>
  *   <li>{@link WebPageCourses.impl.CourseImpl#getRelatedcourses <em>Relatedcourses</em>}</li>
+ *   <li>{@link WebPageCourses.impl.CourseImpl#getStudyprograms <em>Studyprograms</em>}</li>
  * </ul>
  *
  * @generated
@@ -355,6 +358,63 @@ public class CourseImpl extends MinimalEObjectImpl.Container implements Course {
 			eNotify(new ENotificationImpl(this, Notification.SET, WebPageCoursesPackage.COURSE__RELATEDCOURSES, newRelatedcourses, newRelatedcourses));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public StudyProgram getStudyprograms() {
+		if (eContainerFeatureID() != WebPageCoursesPackage.COURSE__STUDYPROGRAMS) return null;
+		return (StudyProgram)eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetStudyprograms(StudyProgram newStudyprograms, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject)newStudyprograms, WebPageCoursesPackage.COURSE__STUDYPROGRAMS, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStudyprograms(StudyProgram newStudyprograms) {
+		if (newStudyprograms != eInternalContainer() || (eContainerFeatureID() != WebPageCoursesPackage.COURSE__STUDYPROGRAMS && newStudyprograms != null)) {
+			if (EcoreUtil.isAncestor(this, newStudyprograms))
+				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			if (newStudyprograms != null)
+				msgs = ((InternalEObject)newStudyprograms).eInverseAdd(this, WebPageCoursesPackage.STUDY_PROGRAM__COURSES, StudyProgram.class, msgs);
+			msgs = basicSetStudyprograms(newStudyprograms, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WebPageCoursesPackage.COURSE__STUDYPROGRAMS, newStudyprograms, newStudyprograms));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case WebPageCoursesPackage.COURSE__STUDYPROGRAMS:
+				if (eInternalContainer() != null)
+					msgs = eBasicRemoveFromContainer(msgs);
+				return basicSetStudyprograms((StudyProgram)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -369,10 +429,26 @@ public class CourseImpl extends MinimalEObjectImpl.Container implements Course {
 				return basicSetCoursework(null, msgs);
 			case WebPageCoursesPackage.COURSE__RELATEDCOURSES:
 				return basicSetRelatedcourses(null, msgs);
+			case WebPageCoursesPackage.COURSE__STUDYPROGRAMS:
+				return basicSetStudyprograms(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+			case WebPageCoursesPackage.COURSE__STUDYPROGRAMS:
+				return eInternalContainer().eInverseRemove(this, WebPageCoursesPackage.STUDY_PROGRAM__COURSES, StudyProgram.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -395,6 +471,8 @@ public class CourseImpl extends MinimalEObjectImpl.Container implements Course {
 				return getCoursework();
 			case WebPageCoursesPackage.COURSE__RELATEDCOURSES:
 				return getRelatedcourses();
+			case WebPageCoursesPackage.COURSE__STUDYPROGRAMS:
+				return getStudyprograms();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -430,6 +508,9 @@ public class CourseImpl extends MinimalEObjectImpl.Container implements Course {
 			case WebPageCoursesPackage.COURSE__RELATEDCOURSES:
 				setRelatedcourses((RelatedCourses)newValue);
 				return;
+			case WebPageCoursesPackage.COURSE__STUDYPROGRAMS:
+				setStudyprograms((StudyProgram)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -463,6 +544,9 @@ public class CourseImpl extends MinimalEObjectImpl.Container implements Course {
 			case WebPageCoursesPackage.COURSE__RELATEDCOURSES:
 				setRelatedcourses((RelatedCourses)null);
 				return;
+			case WebPageCoursesPackage.COURSE__STUDYPROGRAMS:
+				setStudyprograms((StudyProgram)null);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -489,6 +573,8 @@ public class CourseImpl extends MinimalEObjectImpl.Container implements Course {
 				return coursework != null;
 			case WebPageCoursesPackage.COURSE__RELATEDCOURSES:
 				return relatedcourses != null;
+			case WebPageCoursesPackage.COURSE__STUDYPROGRAMS:
+				return getStudyprograms() != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/src/WebPageCourses/impl/RelatedCoursesImpl.java b/src/WebPageCourses/impl/RelatedCoursesImpl.java
index ba540bb..9f22d8b 100644
--- a/src/WebPageCourses/impl/RelatedCoursesImpl.java
+++ b/src/WebPageCourses/impl/RelatedCoursesImpl.java
@@ -4,7 +4,7 @@ package WebPageCourses.impl;
 
 import WebPageCourses.CreditReductionCourse;
 import WebPageCourses.RelatedCourses;
-import WebPageCourses.Requierement;
+import WebPageCourses.Requirement;
 import WebPageCourses.WebPageCoursesPackage;
 
 import java.util.Collection;
@@ -44,7 +44,7 @@ public class RelatedCoursesImpl extends MinimalEObjectImpl.Container implements
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<Requierement> requiredcourses;
+	protected EList<Requirement> requiredcourses;
 
 	/**
 	 * The cached value of the '{@link #getReductioncourses() <em>Reductioncourses</em>}' containment reference list.
@@ -80,9 +80,9 @@ public class RelatedCoursesImpl extends MinimalEObjectImpl.Container implements
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList<Requierement> getRequiredcourses() {
+	public EList<Requirement> getRequiredcourses() {
 		if (requiredcourses == null) {
-			requiredcourses = new EObjectContainmentEList<Requierement>(Requierement.class, this, WebPageCoursesPackage.RELATED_COURSES__REQUIREDCOURSES);
+			requiredcourses = new EObjectContainmentEList<Requirement>(Requirement.class, this, WebPageCoursesPackage.RELATED_COURSES__REQUIREDCOURSES);
 		}
 		return requiredcourses;
 	}
@@ -142,7 +142,7 @@ public class RelatedCoursesImpl extends MinimalEObjectImpl.Container implements
 		switch (featureID) {
 			case WebPageCoursesPackage.RELATED_COURSES__REQUIREDCOURSES:
 				getRequiredcourses().clear();
-				getRequiredcourses().addAll((Collection<? extends Requierement>)newValue);
+				getRequiredcourses().addAll((Collection<? extends Requirement>)newValue);
 				return;
 			case WebPageCoursesPackage.RELATED_COURSES__REDUCTIONCOURSES:
 				getReductioncourses().clear();
diff --git a/src/WebPageCourses/impl/RequierementImpl.java b/src/WebPageCourses/impl/RequirementImpl.java
similarity index 75%
rename from src/WebPageCourses/impl/RequierementImpl.java
rename to src/WebPageCourses/impl/RequirementImpl.java
index e251d2a..83bdb80 100644
--- a/src/WebPageCourses/impl/RequierementImpl.java
+++ b/src/WebPageCourses/impl/RequirementImpl.java
@@ -2,7 +2,7 @@
  */
 package WebPageCourses.impl;
 
-import WebPageCourses.Requierement;
+import WebPageCourses.Requirement;
 import WebPageCourses.WebPageCoursesPackage;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -14,20 +14,20 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Requierement</b></em>'.
+ * An implementation of the model object '<em><b>Requirement</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link WebPageCourses.impl.RequierementImpl#getCode <em>Code</em>}</li>
- *   <li>{@link WebPageCourses.impl.RequierementImpl#getName <em>Name</em>}</li>
- *   <li>{@link WebPageCourses.impl.RequierementImpl#getTypeOfRequierement <em>Type Of Requierement</em>}</li>
+ *   <li>{@link WebPageCourses.impl.RequirementImpl#getCode <em>Code</em>}</li>
+ *   <li>{@link WebPageCourses.impl.RequirementImpl#getName <em>Name</em>}</li>
+ *   <li>{@link WebPageCourses.impl.RequirementImpl#getTypeOfRequierement <em>Type Of Requierement</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class RequierementImpl extends MinimalEObjectImpl.Container implements Requierement {
+public class RequirementImpl extends MinimalEObjectImpl.Container implements Requirement {
 	/**
 	 * The default value of the '{@link #getCode() <em>Code</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -93,7 +93,7 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected RequierementImpl() {
+	protected RequirementImpl() {
 		super();
 	}
 
@@ -104,7 +104,7 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return WebPageCoursesPackage.Literals.REQUIEREMENT;
+		return WebPageCoursesPackage.Literals.REQUIREMENT;
 	}
 
 	/**
@@ -125,7 +125,7 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 		String oldCode = code;
 		code = newCode;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WebPageCoursesPackage.REQUIEREMENT__CODE, oldCode, code));
+			eNotify(new ENotificationImpl(this, Notification.SET, WebPageCoursesPackage.REQUIREMENT__CODE, oldCode, code));
 	}
 
 	/**
@@ -146,7 +146,7 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 		String oldName = name;
 		name = newName;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WebPageCoursesPackage.REQUIEREMENT__NAME, oldName, name));
+			eNotify(new ENotificationImpl(this, Notification.SET, WebPageCoursesPackage.REQUIREMENT__NAME, oldName, name));
 	}
 
 	/**
@@ -167,7 +167,7 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 		String oldTypeOfRequierement = typeOfRequierement;
 		typeOfRequierement = newTypeOfRequierement;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WebPageCoursesPackage.REQUIEREMENT__TYPE_OF_REQUIEREMENT, oldTypeOfRequierement, typeOfRequierement));
+			eNotify(new ENotificationImpl(this, Notification.SET, WebPageCoursesPackage.REQUIREMENT__TYPE_OF_REQUIEREMENT, oldTypeOfRequierement, typeOfRequierement));
 	}
 
 	/**
@@ -178,11 +178,11 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case WebPageCoursesPackage.REQUIEREMENT__CODE:
+			case WebPageCoursesPackage.REQUIREMENT__CODE:
 				return getCode();
-			case WebPageCoursesPackage.REQUIEREMENT__NAME:
+			case WebPageCoursesPackage.REQUIREMENT__NAME:
 				return getName();
-			case WebPageCoursesPackage.REQUIEREMENT__TYPE_OF_REQUIEREMENT:
+			case WebPageCoursesPackage.REQUIREMENT__TYPE_OF_REQUIEREMENT:
 				return getTypeOfRequierement();
 		}
 		return super.eGet(featureID, resolve, coreType);
@@ -196,13 +196,13 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case WebPageCoursesPackage.REQUIEREMENT__CODE:
+			case WebPageCoursesPackage.REQUIREMENT__CODE:
 				setCode((String)newValue);
 				return;
-			case WebPageCoursesPackage.REQUIEREMENT__NAME:
+			case WebPageCoursesPackage.REQUIREMENT__NAME:
 				setName((String)newValue);
 				return;
-			case WebPageCoursesPackage.REQUIEREMENT__TYPE_OF_REQUIEREMENT:
+			case WebPageCoursesPackage.REQUIREMENT__TYPE_OF_REQUIEREMENT:
 				setTypeOfRequierement((String)newValue);
 				return;
 		}
@@ -217,13 +217,13 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case WebPageCoursesPackage.REQUIEREMENT__CODE:
+			case WebPageCoursesPackage.REQUIREMENT__CODE:
 				setCode(CODE_EDEFAULT);
 				return;
-			case WebPageCoursesPackage.REQUIEREMENT__NAME:
+			case WebPageCoursesPackage.REQUIREMENT__NAME:
 				setName(NAME_EDEFAULT);
 				return;
-			case WebPageCoursesPackage.REQUIEREMENT__TYPE_OF_REQUIEREMENT:
+			case WebPageCoursesPackage.REQUIREMENT__TYPE_OF_REQUIEREMENT:
 				setTypeOfRequierement(TYPE_OF_REQUIEREMENT_EDEFAULT);
 				return;
 		}
@@ -238,11 +238,11 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case WebPageCoursesPackage.REQUIEREMENT__CODE:
+			case WebPageCoursesPackage.REQUIREMENT__CODE:
 				return CODE_EDEFAULT == null ? code != null : !CODE_EDEFAULT.equals(code);
-			case WebPageCoursesPackage.REQUIEREMENT__NAME:
+			case WebPageCoursesPackage.REQUIREMENT__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case WebPageCoursesPackage.REQUIEREMENT__TYPE_OF_REQUIEREMENT:
+			case WebPageCoursesPackage.REQUIREMENT__TYPE_OF_REQUIEREMENT:
 				return TYPE_OF_REQUIEREMENT_EDEFAULT == null ? typeOfRequierement != null : !TYPE_OF_REQUIEREMENT_EDEFAULT.equals(typeOfRequierement);
 		}
 		return super.eIsSet(featureID);
@@ -268,4 +268,4 @@ public class RequierementImpl extends MinimalEObjectImpl.Container implements Re
 		return result.toString();
 	}
 
-} //RequierementImpl
+} //RequirementImpl
diff --git a/src/WebPageCourses/impl/StudyProgramImpl.java b/src/WebPageCourses/impl/StudyProgramImpl.java
index 231fb76..a60929a 100644
--- a/src/WebPageCourses/impl/StudyProgramImpl.java
+++ b/src/WebPageCourses/impl/StudyProgramImpl.java
@@ -19,8 +19,7 @@ import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
-import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
@@ -139,11 +138,26 @@ public class StudyProgramImpl extends MinimalEObjectImpl.Container implements St
 	 */
 	public EList<Course> getCourses() {
 		if (courses == null) {
-			courses = new EObjectContainmentEList<Course>(Course.class, this, WebPageCoursesPackage.STUDY_PROGRAM__COURSES);
+			courses = new EObjectContainmentWithInverseEList<Course>(Course.class, this, WebPageCoursesPackage.STUDY_PROGRAM__COURSES, WebPageCoursesPackage.COURSE__STUDYPROGRAMS);
 		}
 		return courses;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case WebPageCoursesPackage.STUDY_PROGRAM__COURSES:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getCourses()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/src/WebPageCourses/impl/WebPageCoursesFactoryImpl.java b/src/WebPageCourses/impl/WebPageCoursesFactoryImpl.java
index 1d6f4d3..d6a672e 100644
--- a/src/WebPageCourses/impl/WebPageCoursesFactoryImpl.java
+++ b/src/WebPageCourses/impl/WebPageCoursesFactoryImpl.java
@@ -59,7 +59,7 @@ public class WebPageCoursesFactoryImpl extends EFactoryImpl implements WebPageCo
 			case WebPageCoursesPackage.COURSE: return createCourse();
 			case WebPageCoursesPackage.COURSE_INSTANCE: return createCourseInstance();
 			case WebPageCoursesPackage.PEOPLE: return createPeople();
-			case WebPageCoursesPackage.REQUIEREMENT: return createRequierement();
+			case WebPageCoursesPackage.REQUIREMENT: return createRequirement();
 			case WebPageCoursesPackage.EVALUATION_FORM: return createEvaluationForm();
 			case WebPageCoursesPackage.WORK: return createWork();
 			case WebPageCoursesPackage.STUDY_PROGRAM: return createStudyProgram();
@@ -109,9 +109,9 @@ public class WebPageCoursesFactoryImpl extends EFactoryImpl implements WebPageCo
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Requierement createRequierement() {
-		RequierementImpl requierement = new RequierementImpl();
-		return requierement;
+	public Requirement createRequirement() {
+		RequirementImpl requirement = new RequirementImpl();
+		return requirement;
 	}
 
 	/**
diff --git a/src/WebPageCourses/impl/WebPageCoursesPackageImpl.java b/src/WebPageCourses/impl/WebPageCoursesPackageImpl.java
index eb72d58..4a96673 100644
--- a/src/WebPageCourses/impl/WebPageCoursesPackageImpl.java
+++ b/src/WebPageCourses/impl/WebPageCoursesPackageImpl.java
@@ -10,7 +10,7 @@ import WebPageCourses.EvaluationForm;
 import WebPageCourses.Organization;
 import WebPageCourses.People;
 import WebPageCourses.RelatedCourses;
-import WebPageCourses.Requierement;
+import WebPageCourses.Requirement;
 import WebPageCourses.Schedule;
 import WebPageCourses.StudyProgram;
 import WebPageCourses.Timetable;
@@ -61,7 +61,7 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass requierementEClass = null;
+	private EClass requirementEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -268,6 +268,15 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 		return (EReference)courseEClass.getEStructuralFeatures().get(6);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCourse_Studyprograms() {
+		return (EReference)courseEClass.getEStructuralFeatures().get(7);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -345,8 +354,8 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getRequierement() {
-		return requierementEClass;
+	public EClass getRequirement() {
+		return requirementEClass;
 	}
 
 	/**
@@ -354,8 +363,8 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getRequierement_Code() {
-		return (EAttribute)requierementEClass.getEStructuralFeatures().get(0);
+	public EAttribute getRequirement_Code() {
+		return (EAttribute)requirementEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -363,8 +372,8 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getRequierement_Name() {
-		return (EAttribute)requierementEClass.getEStructuralFeatures().get(1);
+	public EAttribute getRequirement_Name() {
+		return (EAttribute)requirementEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -372,8 +381,8 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getRequierement_TypeOfRequierement() {
-		return (EAttribute)requierementEClass.getEStructuralFeatures().get(2);
+	public EAttribute getRequirement_TypeOfRequierement() {
+		return (EAttribute)requirementEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -673,6 +682,7 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 		createEAttribute(courseEClass, COURSE__CREDITS);
 		createEReference(courseEClass, COURSE__COURSEWORK);
 		createEReference(courseEClass, COURSE__RELATEDCOURSES);
+		createEReference(courseEClass, COURSE__STUDYPROGRAMS);
 
 		courseInstanceEClass = createEClass(COURSE_INSTANCE);
 		createEAttribute(courseInstanceEClass, COURSE_INSTANCE__SEMESTER);
@@ -684,10 +694,10 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 		createEAttribute(peopleEClass, PEOPLE__ROLE);
 		createEAttribute(peopleEClass, PEOPLE__NAME);
 
-		requierementEClass = createEClass(REQUIEREMENT);
-		createEAttribute(requierementEClass, REQUIEREMENT__CODE);
-		createEAttribute(requierementEClass, REQUIEREMENT__NAME);
-		createEAttribute(requierementEClass, REQUIEREMENT__TYPE_OF_REQUIEREMENT);
+		requirementEClass = createEClass(REQUIREMENT);
+		createEAttribute(requirementEClass, REQUIREMENT__CODE);
+		createEAttribute(requirementEClass, REQUIREMENT__NAME);
+		createEAttribute(requirementEClass, REQUIREMENT__TYPE_OF_REQUIEREMENT);
 
 		evaluationFormEClass = createEClass(EVALUATION_FORM);
 		createEReference(evaluationFormEClass, EVALUATION_FORM__WORK);
@@ -766,6 +776,7 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 		initEAttribute(getCourse_Credits(), ecorePackage.getEDouble(), "credits", null, 0, 1, Course.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getCourse_Coursework(), this.getCoursework(), null, "coursework", null, 0, 1, Course.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getCourse_Relatedcourses(), this.getRelatedCourses(), null, "relatedcourses", null, 0, 1, Course.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCourse_Studyprograms(), this.getStudyProgram(), this.getStudyProgram_Courses(), "studyprograms", null, 0, 1, Course.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(courseInstanceEClass, CourseInstance.class, "CourseInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getCourseInstance_Semester(), ecorePackage.getEString(), "semester", null, 0, 1, CourseInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -777,10 +788,10 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 		initEAttribute(getPeople_Role(), ecorePackage.getEString(), "Role", null, 0, 1, People.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getPeople_Name(), ecorePackage.getEString(), "name", null, 0, 1, People.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(requierementEClass, Requierement.class, "Requierement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getRequierement_Code(), ecorePackage.getEString(), "code", null, 0, 1, Requierement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getRequierement_Name(), ecorePackage.getEString(), "name", null, 0, 1, Requierement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getRequierement_TypeOfRequierement(), ecorePackage.getEString(), "TypeOfRequierement", null, 0, 1, Requierement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(requirementEClass, Requirement.class, "Requirement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getRequirement_Code(), ecorePackage.getEString(), "code", null, 0, 1, Requirement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getRequirement_Name(), ecorePackage.getEString(), "name", null, 0, 1, Requirement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getRequirement_TypeOfRequierement(), ecorePackage.getEString(), "TypeOfRequierement", null, 0, 1, Requirement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(evaluationFormEClass, EvaluationForm.class, "EvaluationForm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getEvaluationForm_Work(), this.getWork(), null, "Work", null, 0, -1, EvaluationForm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -792,7 +803,7 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 		initEClass(studyProgramEClass, StudyProgram.class, "StudyProgram", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getStudyProgram_Name(), ecorePackage.getEString(), "name", null, 0, 1, StudyProgram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getStudyProgram_Schedule(), this.getSchedule(), null, "schedule", null, 0, -1, StudyProgram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getStudyProgram_Courses(), this.getCourse(), null, "courses", null, 0, -1, StudyProgram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getStudyProgram_Courses(), this.getCourse(), this.getCourse_Studyprograms(), "courses", null, 0, -1, StudyProgram.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(courseworkEClass, Coursework.class, "Coursework", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getCoursework_LectureHours(), ecorePackage.getEDouble(), "lectureHours", null, 0, 1, Coursework.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -808,7 +819,7 @@ public class WebPageCoursesPackageImpl extends EPackageImpl implements WebPageCo
 		initEReference(getTimetable_Schedule(), this.getSchedule(), null, "schedule", null, 0, -1, Timetable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(relatedCoursesEClass, RelatedCourses.class, "RelatedCourses", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getRelatedCourses_Requiredcourses(), this.getRequierement(), null, "requiredcourses", null, 0, -1, RelatedCourses.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRelatedCourses_Requiredcourses(), this.getRequirement(), null, "requiredcourses", null, 0, -1, RelatedCourses.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getRelatedCourses_Reductioncourses(), this.getCreditReductionCourse(), null, "reductioncourses", null, 0, -1, RelatedCourses.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(creditReductionCourseEClass, CreditReductionCourse.class, "CreditReductionCourse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
diff --git a/src/WebPageCourses/util/WebPageCoursesAdapterFactory.java b/src/WebPageCourses/util/WebPageCoursesAdapterFactory.java
index 9c09be6..2fa1e42 100644
--- a/src/WebPageCourses/util/WebPageCoursesAdapterFactory.java
+++ b/src/WebPageCourses/util/WebPageCoursesAdapterFactory.java
@@ -80,8 +80,8 @@ public class WebPageCoursesAdapterFactory extends AdapterFactoryImpl {
 				return createPeopleAdapter();
 			}
 			@Override
-			public Adapter caseRequierement(Requierement object) {
-				return createRequierementAdapter();
+			public Adapter caseRequirement(Requirement object) {
+				return createRequirementAdapter();
 			}
 			@Override
 			public Adapter caseEvaluationForm(EvaluationForm object) {
@@ -182,16 +182,16 @@ public class WebPageCoursesAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link WebPageCourses.Requierement <em>Requierement</em>}'.
+	 * Creates a new adapter for an object of class '{@link WebPageCourses.Requirement <em>Requirement</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
 	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
 	 * <!-- end-user-doc -->
 	 * @return the new adapter.
-	 * @see WebPageCourses.Requierement
+	 * @see WebPageCourses.Requirement
 	 * @generated
 	 */
-	public Adapter createRequierementAdapter() {
+	public Adapter createRequirementAdapter() {
 		return null;
 	}
 
diff --git a/src/WebPageCourses/util/WebPageCoursesResourceFactoryImpl.java b/src/WebPageCourses/util/WebPageCoursesResourceFactoryImpl.java
new file mode 100644
index 0000000..cb3939c
--- /dev/null
+++ b/src/WebPageCourses/util/WebPageCoursesResourceFactoryImpl.java
@@ -0,0 +1,41 @@
+/**
+ */
+package WebPageCourses.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see WebPageCourses.util.WebPageCoursesResourceImpl
+ * @generated
+ */
+public class WebPageCoursesResourceFactoryImpl extends ResourceFactoryImpl {
+	/**
+	 * Creates an instance of the resource factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public WebPageCoursesResourceFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Resource createResource(URI uri) {
+		Resource result = new WebPageCoursesResourceImpl(uri);
+		return result;
+	}
+
+} //WebPageCoursesResourceFactoryImpl
diff --git a/src/WebPageCourses/util/WebPageCoursesResourceImpl.java b/src/WebPageCourses/util/WebPageCoursesResourceImpl.java
new file mode 100644
index 0000000..55cf571
--- /dev/null
+++ b/src/WebPageCourses/util/WebPageCoursesResourceImpl.java
@@ -0,0 +1,28 @@
+/**
+ */
+package WebPageCourses.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see WebPageCourses.util.WebPageCoursesResourceFactoryImpl
+ * @generated
+ */
+public class WebPageCoursesResourceImpl extends XMIResourceImpl {
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param uri the URI of the new resource.
+	 * @generated
+	 */
+	public WebPageCoursesResourceImpl(URI uri) {
+		super(uri);
+	}
+
+} //WebPageCoursesResourceImpl
diff --git a/src/WebPageCourses/util/WebPageCoursesSwitch.java b/src/WebPageCourses/util/WebPageCoursesSwitch.java
index d30e7e6..8f346d3 100644
--- a/src/WebPageCourses/util/WebPageCoursesSwitch.java
+++ b/src/WebPageCourses/util/WebPageCoursesSwitch.java
@@ -84,9 +84,9 @@ public class WebPageCoursesSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case WebPageCoursesPackage.REQUIEREMENT: {
-				Requierement requierement = (Requierement)theEObject;
-				T result = caseRequierement(requierement);
+			case WebPageCoursesPackage.REQUIREMENT: {
+				Requirement requirement = (Requirement)theEObject;
+				T result = caseRequirement(requirement);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -194,17 +194,17 @@ public class WebPageCoursesSwitch<T> extends Switch<T> {
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Requierement</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Requirement</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch.
 	 * <!-- end-user-doc -->
 	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Requierement</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Requirement</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseRequierement(Requierement object) {
+	public T caseRequirement(Requirement object) {
 		return null;
 	}
 
diff --git a/src/WebPageCourses/util/WebPageCoursesValidator.java b/src/WebPageCourses/util/WebPageCoursesValidator.java
index 10cb958..2cb6374 100644
--- a/src/WebPageCourses/util/WebPageCoursesValidator.java
+++ b/src/WebPageCourses/util/WebPageCoursesValidator.java
@@ -92,8 +92,8 @@ public class WebPageCoursesValidator extends EObjectValidator {
 				return validateCourseInstance((CourseInstance)value, diagnostics, context);
 			case WebPageCoursesPackage.PEOPLE:
 				return validatePeople((People)value, diagnostics, context);
-			case WebPageCoursesPackage.REQUIEREMENT:
-				return validateRequierement((Requierement)value, diagnostics, context);
+			case WebPageCoursesPackage.REQUIREMENT:
+				return validateRequirement((Requirement)value, diagnostics, context);
 			case WebPageCoursesPackage.EVALUATION_FORM:
 				return validateEvaluationForm((EvaluationForm)value, diagnostics, context);
 			case WebPageCoursesPackage.WORK:
@@ -216,8 +216,8 @@ public class WebPageCoursesValidator extends EObjectValidator {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateRequierement(Requierement requierement, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint(requierement, diagnostics, context);
+	public boolean validateRequirement(Requirement requirement, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(requirement, diagnostics, context);
 	}
 
 	/**
-- 
GitLab