From ad6d3083de5f81a218e013b401c8c1f4c3ed6fbe Mon Sep 17 00:00:00 2001 From: Nils Gerstner Date: Mon, 21 Aug 2017 14:51:43 +0200 Subject: [PATCH] =?UTF-8?q?jpa=20course=20+=20diverse=20=C3=A4ndringar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 +- com.rotanareg.skolan.iml | 47 ++++++++++ src/main/java/Java/ejb/CourseService.java | 20 ----- src/main/java/Java/ejb/CourseServiceImpl.java | 69 -------------- src/main/java/com/rotanareg/skolan/Role.java | 4 +- .../com/rotanareg/skolan/course/Course.java | 28 ------ .../skolan/course/CourseDetails.java | 35 -------- .../skolan/course/CourseService.java | 7 -- .../skolan/course/CourseServiceImpl.java | 36 -------- .../skolan/course/MostStudiedCourses.java | 26 ------ .../skolan/coursePersist/CourseEntity.java} | 13 +-- .../skolan/coursePersist/CourseService.java | 20 +++++ .../coursePersist/CourseServiceImpl.java | 81 +++++++++++++++++ .../rotanareg/skolan/domains/Course.java} | 19 +++- .../java/com/rotanareg/skolan/user/DateB.java | 21 +++++ .../user/admin/admindomain/AdminDomain.java | 4 + .../user/admin/adminejb/AdminService.java | 4 + .../user/admin/adminejb/AdminServiceImpl.java | 4 + .../skolan/user/admin/adminjpa/Admin.java | 4 + .../skolan/user/admin/adminjsf/AdminBean.java | 4 + .../student/studentdomain/StudentDomain.java | 4 + .../student/studentejb/StudentService.java | 4 + .../studentejb/StudentServiceImpl.java | 4 + .../user/student/studentjpa/Student.java | 4 + .../user/student/studentjsf/StudentBean.java | 5 ++ .../teacher/teacherdomain/TeacherDomain.java | 4 + .../teacherejb/TeacherServiceImpl.java | 4 + .../teacher/teacherejb/TeaherService.java | 4 + .../user/teacher/teacherjpa/Teacher.java | 4 + .../user/teacher/teacherjsf/TeacherBean.java | 4 + .../EmailAddressValidator.java | 2 +- .../{user => userManager}/PhoneNumber.java | 2 +- .../PhoneNumberConverter.java | 2 +- .../PhoneNumberValidator.java | 2 +- .../skolan/{user => userManager}/SignIn.java | 6 +- .../skolan/{user => userManager}/User.java | 47 +++++++--- .../{user => userManager}/UserDetail.java | 2 +- .../{user => userManager}/UserManager.java | 26 +++--- .../{user => userManager}/UserService.java | 2 +- .../UserServiceImpl.java | 2 +- .../ValidEmailAddress.java | 2 +- src/main/resources/META-INF/persistence.xml | 4 +- src/main/webapp/admin.xhtml | 32 +++---- src/main/webapp/course_detail.xhtml | 24 +++++ src/main/webapp/course_details.xhtml | 8 +- src/main/webapp/create_course.xhtml | 34 +++++-- src/main/webapp/index.xhtml | 24 +++-- .../webapp/resources/skolan/css/style.css | 83 +++++++++++++++++ .../resources/skolan/images/testBild2.jpg | Bin 0 -> 93028 bytes .../resources/skolan/theme/blueheven.css | 62 +++++++++++++ src/main/webapp/signIn.xhtml | 60 +++++-------- src/main/webapp/student.xhtml | 85 ++++++++++++++---- src/main/webapp/teacher.xhtml | 25 +++--- .../webapp/templates/footer_template.xhtml | 12 +++ .../webapp/templates/header_template.xhtml | 12 +++ src/main/webapp/templates/page_template.xhtml | 41 +++++++++ .../webapp/templates/top_panel_template.xhtml | 11 +++ src/main/webapp/user_detail.xhtml | 76 ++++++++-------- 58 files changed, 764 insertions(+), 417 deletions(-) create mode 100644 com.rotanareg.skolan.iml delete mode 100644 src/main/java/Java/ejb/CourseService.java delete mode 100644 src/main/java/Java/ejb/CourseServiceImpl.java delete mode 100644 src/main/java/com/rotanareg/skolan/course/Course.java delete mode 100644 src/main/java/com/rotanareg/skolan/course/CourseDetails.java delete mode 100644 src/main/java/com/rotanareg/skolan/course/CourseService.java delete mode 100644 src/main/java/com/rotanareg/skolan/course/CourseServiceImpl.java delete mode 100644 src/main/java/com/rotanareg/skolan/course/MostStudiedCourses.java rename src/main/java/{Java/jpa/Course.java => com/rotanareg/skolan/coursePersist/CourseEntity.java} (81%) create mode 100644 src/main/java/com/rotanareg/skolan/coursePersist/CourseService.java create mode 100644 src/main/java/com/rotanareg/skolan/coursePersist/CourseServiceImpl.java rename src/main/java/{Java/domain/CourseDomain.java => com/rotanareg/skolan/domains/Course.java} (62%) create mode 100644 src/main/java/com/rotanareg/skolan/user/DateB.java create mode 100644 src/main/java/com/rotanareg/skolan/user/admin/admindomain/AdminDomain.java create mode 100644 src/main/java/com/rotanareg/skolan/user/admin/adminejb/AdminService.java create mode 100644 src/main/java/com/rotanareg/skolan/user/admin/adminejb/AdminServiceImpl.java create mode 100644 src/main/java/com/rotanareg/skolan/user/admin/adminjpa/Admin.java create mode 100644 src/main/java/com/rotanareg/skolan/user/admin/adminjsf/AdminBean.java create mode 100644 src/main/java/com/rotanareg/skolan/user/student/studentdomain/StudentDomain.java create mode 100644 src/main/java/com/rotanareg/skolan/user/student/studentejb/StudentService.java create mode 100644 src/main/java/com/rotanareg/skolan/user/student/studentejb/StudentServiceImpl.java create mode 100644 src/main/java/com/rotanareg/skolan/user/student/studentjpa/Student.java create mode 100644 src/main/java/com/rotanareg/skolan/user/student/studentjsf/StudentBean.java create mode 100644 src/main/java/com/rotanareg/skolan/user/teacher/teacherdomain/TeacherDomain.java create mode 100644 src/main/java/com/rotanareg/skolan/user/teacher/teacherejb/TeacherServiceImpl.java create mode 100644 src/main/java/com/rotanareg/skolan/user/teacher/teacherejb/TeaherService.java create mode 100644 src/main/java/com/rotanareg/skolan/user/teacher/teacherjpa/Teacher.java create mode 100644 src/main/java/com/rotanareg/skolan/user/teacher/teacherjsf/TeacherBean.java rename src/main/java/com/rotanareg/skolan/{user => userManager}/EmailAddressValidator.java (91%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/PhoneNumber.java (93%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/PhoneNumberConverter.java (97%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/PhoneNumberValidator.java (95%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/SignIn.java (80%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/User.java (69%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/UserDetail.java (93%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/UserManager.java (63%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/UserService.java (80%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/UserServiceImpl.java (92%) rename src/main/java/com/rotanareg/skolan/{user => userManager}/ValidEmailAddress.java (92%) create mode 100644 src/main/webapp/course_detail.xhtml create mode 100644 src/main/webapp/resources/skolan/css/style.css create mode 100644 src/main/webapp/resources/skolan/images/testBild2.jpg create mode 100644 src/main/webapp/resources/skolan/theme/blueheven.css create mode 100644 src/main/webapp/templates/footer_template.xhtml create mode 100644 src/main/webapp/templates/header_template.xhtml create mode 100644 src/main/webapp/templates/page_template.xhtml create mode 100644 src/main/webapp/templates/top_panel_template.xhtml diff --git a/.gitignore b/.gitignore index 8f51a4a..a6c44cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,4 @@ .idea/* target/* -<<<<<<< HEAD -======= *.war ->>>>>>> 21f7771889fbd331d8067aeaacba276c2ab841e7 -target/RotanaReg.war -com.rotanareg.skolan.iml +target/RotanaReg.war \ No newline at end of file diff --git a/com.rotanareg.skolan.iml b/com.rotanareg.skolan.iml new file mode 100644 index 0000000..46af354 --- /dev/null +++ b/com.rotanareg.skolan.iml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/Java/ejb/CourseService.java b/src/main/java/Java/ejb/CourseService.java deleted file mode 100644 index 428627b..0000000 --- a/src/main/java/Java/ejb/CourseService.java +++ /dev/null @@ -1,20 +0,0 @@ -package ejb; - -import domain.CourseDomain; - -import javax.ejb.Local; -import java.util.List; - -/** - * Created by Solidbeans on 2017-03-20. - */ -@Local -public interface CourseService { - - void addCourse(CourseDomain course); - void updateCourse(CourseDomain course); - void removeCourse(Long id); - CourseDomain getCourse(Long id); - List getCourses(); - public List getCoursesContaining(String filter); -} diff --git a/src/main/java/Java/ejb/CourseServiceImpl.java b/src/main/java/Java/ejb/CourseServiceImpl.java deleted file mode 100644 index c642901..0000000 --- a/src/main/java/Java/ejb/CourseServiceImpl.java +++ /dev/null @@ -1,69 +0,0 @@ -package ejb; - -import domain.CourseDomain; -import jpa.Course; - -import javax.ejb.Stateless; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Created by Solidbeans on 2017-03-20. - */ - -@Stateless -public class CourseServiceImpl implements CourseService{ - @PersistenceContext - EntityManager em; - - @Override - public void addCourse(CourseDomain course) { - Course c = new Course(course.getName(),course.getDescription(),course.getCourseNr()); - em.persist(c); - - } - - @Override - public void updateCourse(CourseDomain course) { - Course c = em.find(Course.class,course.getId()); - c.setName(course.getName()); - c.setDescription(course.getDescription()); - c.setCourseNr(course.getCourseNr()); - em.merge(c); - } - - @Override - public void removeCourse(Long id) { - Course c = em.find(Course.class, id); - em.remove(c); - } - - @Override - public CourseDomain getCourse(Long id) { - Course c = em.find(Course.class,id); - CourseDomain cd = new CourseDomain(c.getId(),c.getName(),c.getDescription(),c.getCourseNr()); - - return cd; - } - - @Override - public List getCourses() { - List courseList = em.createNamedQuery("selectAll").getResultList(); - - return courseList.stream(). - map(c->new CourseDomain(c.getId(),c.getName(),c.getDescription(),c.getCourseNr())). - collect(Collectors.toList()); - } - - @Override - public List getCoursesContaining(String filter) { - List courseList = em.createNamedQuery("selectSome").setParameter("filt",filter).getResultList(); - - return courseList.stream(). - map(c->new CourseDomain(c.getId(),c.getName(),c.getDescription(),c.getCourseNr())). - collect(Collectors.toList()); - } - -} diff --git a/src/main/java/com/rotanareg/skolan/Role.java b/src/main/java/com/rotanareg/skolan/Role.java index 070e1ae..2601485 100644 --- a/src/main/java/com/rotanareg/skolan/Role.java +++ b/src/main/java/com/rotanareg/skolan/Role.java @@ -10,9 +10,9 @@ public enum Role { public String toString() { switch (this) { case STUDENT: - return "Student"; + return "StudentJAS"; case TEACHER: - return "Teacher"; + return "TeacherJAS"; case ADMIN: return "Admin"; } diff --git a/src/main/java/com/rotanareg/skolan/course/Course.java b/src/main/java/com/rotanareg/skolan/course/Course.java deleted file mode 100644 index 8b1f8f9..0000000 --- a/src/main/java/com/rotanareg/skolan/course/Course.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.rotanareg.skolan.course; -import java.io.Serializable; - -public final class Course implements Serializable { - - private static final long serialVersionUID = 1L; - - private final long id; - private final String name; - private final String description; - -public Course (long id, String name, String description){ - this.id = id; - this.name = name; - this.description = description; -} - public long getId() { - return id; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } -} diff --git a/src/main/java/com/rotanareg/skolan/course/CourseDetails.java b/src/main/java/com/rotanareg/skolan/course/CourseDetails.java deleted file mode 100644 index 17b1146..0000000 --- a/src/main/java/com/rotanareg/skolan/course/CourseDetails.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.rotanareg.skolan.course; - -import javax.faces.view.ViewScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.io.Serializable; - -@Named -@ViewScoped -public class CourseDetails implements Serializable{ - private static final long serialVersionUID = 1L; - - @Inject - private CourseService courseService; - - private long courseId; - - private Course course; - - public long getCourseId() { - return courseId; - } - - public void setCourseId(long courseId) { - this.courseId = courseId; - } - - public void onload() { - course = courseService.getCourse(courseId); - } - - //public course getCourse() { - // return course; - //} -} \ No newline at end of file diff --git a/src/main/java/com/rotanareg/skolan/course/CourseService.java b/src/main/java/com/rotanareg/skolan/course/CourseService.java deleted file mode 100644 index 7e0ed37..0000000 --- a/src/main/java/com/rotanareg/skolan/course/CourseService.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.rotanareg.skolan.course; -import java.util.List; - -public interface CourseService { - List getMostStudiedCourses (); - Course getCourse (long id); -} diff --git a/src/main/java/com/rotanareg/skolan/course/CourseServiceImpl.java b/src/main/java/com/rotanareg/skolan/course/CourseServiceImpl.java deleted file mode 100644 index 15f2595..0000000 --- a/src/main/java/com/rotanareg/skolan/course/CourseServiceImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.rotanareg.skolan.course; - -import javax.enterprise.context.ApplicationScoped; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@ApplicationScoped -public class CourseServiceImpl implements CourseService { - - private final Map courses; - - private final List mostStudiedCourses; - - public CourseServiceImpl (){ - Map map = new HashMap<>(); - map.put(1L, new Course(1L,"Design och konstruktion av grafiska gränssnitt","Kursen innehåller en genomgång av standardklasserna i ett välutvecklat grafiskt bibliotek, en översikt över vilka riktlinjer som krävs för att skapa lättanvända gränssnitt samt metoder för att iterativt utveckla och förbättra ett gränssnitt. Kursen ger praktisk erfarenhet i implementering samt användbarhet genom ett grupprojekt som ger en fördjupning av delmomentet kring grafiska komponenter från kursen Objektorienterad programvaruutveckling. Projektets mål är att utveckla en applikation för en specifik användargrupp och att genom att låta dessa testa programmet iterativt förbättra det.")); - map.put(2L, new Course(2L," Objektorienterad programmering","Grundläggande begrepp i objektorienterad programutveckling. Vad som skiljer det objektorienterade synsättet från andra synsätt.I kursen används programspråket Java. Momenten så som objekt och klass, datainkapsling,konstruktorer, metoder, instansvariabler, klassvariabler behandals men även modularisering av program, användning av dokumentation för standardbibliotek, användning av standardklasser för datasamlingar samt kodningsstandard, namnsättning och kommentering. Testning av program också ingår i kursen och det behandlas även arv, dynamisk bindning och polymorfism, abstrakta klasser och gränssnitt, grafiska användargränssnitt, händelser och lyssnare.")); - map.put(3L, new Course(3L,"Datastrukturer","Abstrakta datatyper. Enkel komplexitetsanalys. Vanliga datastrukturer som fält, listor, träd och hashtabeller samt hur dessa kan användas för att implementera abstrakta datatyper som köer, prioritetsköer, lexika och grafer. Standardalgoritmer för dessa datastrukturer och deras resurskrav. Iteratorer. Sorteringsalgoritmer. Standardbibliotek för datastrukturer och algoritmer.")); - - courses =Collections.unmodifiableMap(map); - mostStudiedCourses = Collections.unmodifiableList(new ArrayList<>(courses.values())); - -} - @Override - public List getMostStudiedCourses() { - return mostStudiedCourses; - } - @Override - public Course getCourse (long id) { - return courses.get(id); - - } -} diff --git a/src/main/java/com/rotanareg/skolan/course/MostStudiedCourses.java b/src/main/java/com/rotanareg/skolan/course/MostStudiedCourses.java deleted file mode 100644 index be78cec..0000000 --- a/src/main/java/com/rotanareg/skolan/course/MostStudiedCourses.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.rotanareg.skolan.course; - -import javax.annotation.PostConstruct; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.inject.Named; -import java.util.List; - -@Named -@RequestScoped -public class MostStudiedCourses { - - @Inject - private com.rotanareg.skolan.course.CourseService courseService; - - private List courses; - - @PostConstruct - public void initialize() { - courses = courseService.getMostStudiedCourses (); - } - - public List getCourses() { - return courses; - } -} diff --git a/src/main/java/Java/jpa/Course.java b/src/main/java/com/rotanareg/skolan/coursePersist/CourseEntity.java similarity index 81% rename from src/main/java/Java/jpa/Course.java rename to src/main/java/com/rotanareg/skolan/coursePersist/CourseEntity.java index a703208..0c23c04 100644 --- a/src/main/java/Java/jpa/Course.java +++ b/src/main/java/com/rotanareg/skolan/coursePersist/CourseEntity.java @@ -1,4 +1,4 @@ -package jpa; +package com.rotanareg.skolan.coursePersist; import javax.persistence.*; @@ -6,11 +6,12 @@ import javax.persistence.*; * Created by Solidbeans on 2017-03-20. */ @Entity +@Table(name = "Course") @NamedQueries({ - @NamedQuery(name="selectAll",query="SELECT c FROM Course c"), - @NamedQuery(name="selectSome",query="SELECT t FROM Course t WHERE LOCATE(:filt,t.name) OR LOCATE(:filt,t.courseNr) >0 ") + @NamedQuery(name="selectAll",query="SELECT c FROM CourseEntity c"), + @NamedQuery(name="selectSome",query="SELECT t FROM CourseEntity t WHERE LOCATE(:filt,t.name) >0 ") }) -public class Course { +public class CourseEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) @@ -20,10 +21,10 @@ public class Course { private String description; private String courseNr; - public Course() { + public CourseEntity() { } - public Course(String name, String description, String courseNr) { + public CourseEntity(String name, String description, String courseNr) { this.name = name; this.description = description; this.courseNr = courseNr; diff --git a/src/main/java/com/rotanareg/skolan/coursePersist/CourseService.java b/src/main/java/com/rotanareg/skolan/coursePersist/CourseService.java new file mode 100644 index 0000000..6769a80 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/coursePersist/CourseService.java @@ -0,0 +1,20 @@ +package com.rotanareg.skolan.coursePersist; + +import com.rotanareg.skolan.domains.Course; + +import javax.ejb.Local; +import java.util.List; + +/** + * Created by Solidbeans on 2017-03-20. + */ +@Local +public interface CourseService { + + void addCourse(Course course); + void updateCourse(Course course); + void removeCourse(Long id); + Course getCourse(Long id); + List getCourses(); + public List getCoursesContaining(String filter); +} diff --git a/src/main/java/com/rotanareg/skolan/coursePersist/CourseServiceImpl.java b/src/main/java/com/rotanareg/skolan/coursePersist/CourseServiceImpl.java new file mode 100644 index 0000000..2cbf259 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/coursePersist/CourseServiceImpl.java @@ -0,0 +1,81 @@ +package com.rotanareg.skolan.coursePersist; + +import com.rotanareg.skolan.domains.Course; + +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by Solidbeans on 2017-03-20. + */ + +@Stateless +public class CourseServiceImpl implements CourseService{ + @PersistenceContext + EntityManager em; + + @Override + public void addCourse(Course course) { + CourseEntity c = new CourseEntity(course.getName(),course.getDescription(),course.getCourseNr()); + em.persist(c); + + } + + @Override + public void updateCourse(Course course) { + CourseEntity c = em.find(CourseEntity.class,course.getId()); + c.setName(course.getName()); + c.setDescription(course.getDescription()); + c.setCourseNr(course.getCourseNr()); + em.merge(c); + } + + @Override + public void removeCourse(Long id) { + CourseEntity c = em.find(CourseEntity.class, id); + em.remove(c); + } + + @Override + public Course getCourse(Long id) { + CourseEntity c = em.find(CourseEntity.class,id); + Course cd = new Course(c.getId(),c.getName(),c.getDescription(),c.getCourseNr()); + + return cd; + } + + @Override + public List getCourses() { + List courseEntityList = em.createNamedQuery("selectAll").getResultList(); + if (courseEntityList.isEmpty()){ + CourseEntity a = new CourseEntity("Engelska", + "Du som behärskar engelska kommer långt. Engelska är ett världsspråk och antalet engelsktalande människor i världen ökar ständigt. Men engelska är inte bara samtal. Det är också litteratur att läsa och texter att skriva. Välkommen till oss när du vill förbättra din engelska!", + "E1234A"); + em.persist(a); + CourseEntity b = new CourseEntity("Svenska", + "Utbildningen är individualiserad och innan antagning sker en intestning. Du kan delta i utbildningen även om du inte har avslutat din Svenska för invandrare, SFI. Korta vägen pågår i 25 veckor och därutöver ingår 5 veckors praktik. Utbildningen utförs av Folkuniversitetet i Umeå i samarbete med Umeå universitet. Det finns möjlighet till individuell förlängning.", + "Sv234B"); + em.persist(b); + CourseEntity c = new CourseEntity("allmän datakunskap", + "Kom igång och lär dig data från början. Folkuniversitetet är en erfaren data- och IT-utbildare. Vi har kurser för både nybörjare och erfarna dataanvändare, för juniorer såväl som seniorer och inom både allmän datakunskap och enskilda datorprogram.", + "DK234C"); + em.persist(c); + } + return courseEntityList.stream(). + map(c->new Course(c.getId(),c.getName(),c.getDescription(),c.getCourseNr())). + collect(Collectors.toList()); + } + + @Override + public List getCoursesContaining(String filter) { + List courseEntityList = em.createNamedQuery("selectSome").setParameter("filt",filter).getResultList(); + + return courseEntityList.stream(). + map(c->new Course(c.getId(),c.getName(),c.getDescription(),c.getCourseNr())). + collect(Collectors.toList()); + } + +} diff --git a/src/main/java/Java/domain/CourseDomain.java b/src/main/java/com/rotanareg/skolan/domains/Course.java similarity index 62% rename from src/main/java/Java/domain/CourseDomain.java rename to src/main/java/com/rotanareg/skolan/domains/Course.java index e55da57..98ba738 100644 --- a/src/main/java/Java/domain/CourseDomain.java +++ b/src/main/java/com/rotanareg/skolan/domains/Course.java @@ -1,21 +1,21 @@ -package domain; +package com.rotanareg.skolan.domains; /** * Created by Nils Gerstner on 8/20/17. */ -public class CourseDomain { +public class Course { private long id; private String name; private String description; private String courseNr; - public CourseDomain(String name, String description, String courseNr){ + public Course(){ this.name = name; this.description = description; this.courseNr = courseNr; } - public CourseDomain(long id, String name, String description, String courseNr){ + public Course(long id, String name, String description, String courseNr){ this.id = id; this.name = name; this.description = description; @@ -53,4 +53,15 @@ public class CourseDomain { public void setCourseNr(String courseNr) { this.courseNr = courseNr; } + + @Override + public String toString(){ + final StringBuilder sbc = new StringBuilder("CourseEntity{"); + sbc.append("id=").append(id); + sbc.append(", courseCode='").append(courseNr).append('\''); + sbc.append(", courseTitle='").append(name).append('\''); + sbc.append(", description='").append(description).append('\''); + sbc.append('}'); + return sbc.toString(); + } } \ No newline at end of file diff --git a/src/main/java/com/rotanareg/skolan/user/DateB.java b/src/main/java/com/rotanareg/skolan/user/DateB.java new file mode 100644 index 0000000..81628bf --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/DateB.java @@ -0,0 +1,21 @@ +package com.rotanareg.skolan.user; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + + + +public class DateB { + + public static Date date(String s) { + SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); + try { + return dateFormat.parse(s); + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } +} + diff --git a/src/main/java/com/rotanareg/skolan/user/admin/admindomain/AdminDomain.java b/src/main/java/com/rotanareg/skolan/user/admin/admindomain/AdminDomain.java new file mode 100644 index 0000000..ef27539 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/admin/admindomain/AdminDomain.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.admin.admindomain; + +public class AdminDomain { +} diff --git a/src/main/java/com/rotanareg/skolan/user/admin/adminejb/AdminService.java b/src/main/java/com/rotanareg/skolan/user/admin/adminejb/AdminService.java new file mode 100644 index 0000000..9c01b9d --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/admin/adminejb/AdminService.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.admin.adminejb; + +public class AdminService { +} diff --git a/src/main/java/com/rotanareg/skolan/user/admin/adminejb/AdminServiceImpl.java b/src/main/java/com/rotanareg/skolan/user/admin/adminejb/AdminServiceImpl.java new file mode 100644 index 0000000..5ff00e7 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/admin/adminejb/AdminServiceImpl.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.admin.adminejb; + +public class AdminServiceImpl { +} diff --git a/src/main/java/com/rotanareg/skolan/user/admin/adminjpa/Admin.java b/src/main/java/com/rotanareg/skolan/user/admin/adminjpa/Admin.java new file mode 100644 index 0000000..ada60f2 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/admin/adminjpa/Admin.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.admin.adminjpa; + +public class Admin { +} diff --git a/src/main/java/com/rotanareg/skolan/user/admin/adminjsf/AdminBean.java b/src/main/java/com/rotanareg/skolan/user/admin/adminjsf/AdminBean.java new file mode 100644 index 0000000..78b5556 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/admin/adminjsf/AdminBean.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.admin.adminjsf; + +public class AdminBean { +} diff --git a/src/main/java/com/rotanareg/skolan/user/student/studentdomain/StudentDomain.java b/src/main/java/com/rotanareg/skolan/user/student/studentdomain/StudentDomain.java new file mode 100644 index 0000000..b769e07 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/student/studentdomain/StudentDomain.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.student.studentdomain; + +public class StudentDomain { +} diff --git a/src/main/java/com/rotanareg/skolan/user/student/studentejb/StudentService.java b/src/main/java/com/rotanareg/skolan/user/student/studentejb/StudentService.java new file mode 100644 index 0000000..95a5ea1 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/student/studentejb/StudentService.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.student.studentejb; + +public class StudentService { +} diff --git a/src/main/java/com/rotanareg/skolan/user/student/studentejb/StudentServiceImpl.java b/src/main/java/com/rotanareg/skolan/user/student/studentejb/StudentServiceImpl.java new file mode 100644 index 0000000..7849f7c --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/student/studentejb/StudentServiceImpl.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.student.studentejb; + +public class StudentServiceImpl { +} diff --git a/src/main/java/com/rotanareg/skolan/user/student/studentjpa/Student.java b/src/main/java/com/rotanareg/skolan/user/student/studentjpa/Student.java new file mode 100644 index 0000000..6f17e71 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/student/studentjpa/Student.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.student.studentjpa; + +public class Student { +} diff --git a/src/main/java/com/rotanareg/skolan/user/student/studentjsf/StudentBean.java b/src/main/java/com/rotanareg/skolan/user/student/studentjsf/StudentBean.java new file mode 100644 index 0000000..35747ec --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/student/studentjsf/StudentBean.java @@ -0,0 +1,5 @@ +package com.rotanareg.skolan.user.student.studentjsf; + +public class StudentBean { + +} diff --git a/src/main/java/com/rotanareg/skolan/user/teacher/teacherdomain/TeacherDomain.java b/src/main/java/com/rotanareg/skolan/user/teacher/teacherdomain/TeacherDomain.java new file mode 100644 index 0000000..f5b9a3f --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/teacher/teacherdomain/TeacherDomain.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.teacher.teacherdomain; + +public class TeacherDomain { +} diff --git a/src/main/java/com/rotanareg/skolan/user/teacher/teacherejb/TeacherServiceImpl.java b/src/main/java/com/rotanareg/skolan/user/teacher/teacherejb/TeacherServiceImpl.java new file mode 100644 index 0000000..50dac17 --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/teacher/teacherejb/TeacherServiceImpl.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.teacher.teacherejb; + +public class TeacherServiceImpl { +} diff --git a/src/main/java/com/rotanareg/skolan/user/teacher/teacherejb/TeaherService.java b/src/main/java/com/rotanareg/skolan/user/teacher/teacherejb/TeaherService.java new file mode 100644 index 0000000..dff970c --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/teacher/teacherejb/TeaherService.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.teacher.teacherejb; + +public class TeaherService { +} diff --git a/src/main/java/com/rotanareg/skolan/user/teacher/teacherjpa/Teacher.java b/src/main/java/com/rotanareg/skolan/user/teacher/teacherjpa/Teacher.java new file mode 100644 index 0000000..e1121ac --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/teacher/teacherjpa/Teacher.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.teacher.teacherjpa; + +public class Teacher { +} diff --git a/src/main/java/com/rotanareg/skolan/user/teacher/teacherjsf/TeacherBean.java b/src/main/java/com/rotanareg/skolan/user/teacher/teacherjsf/TeacherBean.java new file mode 100644 index 0000000..b01aa0a --- /dev/null +++ b/src/main/java/com/rotanareg/skolan/user/teacher/teacherjsf/TeacherBean.java @@ -0,0 +1,4 @@ +package com.rotanareg.skolan.user.teacher.teacherjsf; + +public class TeacherBean { +} diff --git a/src/main/java/com/rotanareg/skolan/user/EmailAddressValidator.java b/src/main/java/com/rotanareg/skolan/userManager/EmailAddressValidator.java similarity index 91% rename from src/main/java/com/rotanareg/skolan/user/EmailAddressValidator.java rename to src/main/java/com/rotanareg/skolan/userManager/EmailAddressValidator.java index 755e6d8..4b001b1 100644 --- a/src/main/java/com/rotanareg/skolan/user/EmailAddressValidator.java +++ b/src/main/java/com/rotanareg/skolan/userManager/EmailAddressValidator.java @@ -1,4 +1,4 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; diff --git a/src/main/java/com/rotanareg/skolan/user/PhoneNumber.java b/src/main/java/com/rotanareg/skolan/userManager/PhoneNumber.java similarity index 93% rename from src/main/java/com/rotanareg/skolan/user/PhoneNumber.java rename to src/main/java/com/rotanareg/skolan/userManager/PhoneNumber.java index b709b99..1276f3e 100644 --- a/src/main/java/com/rotanareg/skolan/user/PhoneNumber.java +++ b/src/main/java/com/rotanareg/skolan/userManager/PhoneNumber.java @@ -1,4 +1,4 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; import java.io.Serializable; diff --git a/src/main/java/com/rotanareg/skolan/user/PhoneNumberConverter.java b/src/main/java/com/rotanareg/skolan/userManager/PhoneNumberConverter.java similarity index 97% rename from src/main/java/com/rotanareg/skolan/user/PhoneNumberConverter.java rename to src/main/java/com/rotanareg/skolan/userManager/PhoneNumberConverter.java index 2e43326..577c0ab 100644 --- a/src/main/java/com/rotanareg/skolan/user/PhoneNumberConverter.java +++ b/src/main/java/com/rotanareg/skolan/userManager/PhoneNumberConverter.java @@ -1,4 +1,4 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; diff --git a/src/main/java/com/rotanareg/skolan/user/PhoneNumberValidator.java b/src/main/java/com/rotanareg/skolan/userManager/PhoneNumberValidator.java similarity index 95% rename from src/main/java/com/rotanareg/skolan/user/PhoneNumberValidator.java rename to src/main/java/com/rotanareg/skolan/userManager/PhoneNumberValidator.java index 691d22e..2120eaf 100644 --- a/src/main/java/com/rotanareg/skolan/user/PhoneNumberValidator.java +++ b/src/main/java/com/rotanareg/skolan/userManager/PhoneNumberValidator.java @@ -1,4 +1,4 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; diff --git a/src/main/java/com/rotanareg/skolan/user/SignIn.java b/src/main/java/com/rotanareg/skolan/userManager/SignIn.java similarity index 80% rename from src/main/java/com/rotanareg/skolan/user/SignIn.java rename to src/main/java/com/rotanareg/skolan/userManager/SignIn.java index ec31961..3fccb61 100644 --- a/src/main/java/com/rotanareg/skolan/user/SignIn.java +++ b/src/main/java/com/rotanareg/skolan/userManager/SignIn.java @@ -1,5 +1,4 @@ -package com.rotanareg.skolan.user; - +package com.rotanareg.skolan.userManager; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.inject.Named; @@ -13,13 +12,12 @@ public class SignIn { @Inject private UserManager userManager; - @Pattern(regexp = "[A-Za-z0-9]{2,20}", message = "Användarnamnet skall innehålla bara bokstäver och siffror samt vara långt mellan 2 och 20 tecken.") + @Pattern(regexp = "[A-Za-z0-9]{2,20}", message = "Användarnamnet skall innehålla bara bokstäver och siffror samt vara långt mellan 2 och 20 tecken.") private String username; @Size(min = 8, message = "Ditt password måste innehålla minst 8 tecken.") private String password; - public String getUsername() { return username; } diff --git a/src/main/java/com/rotanareg/skolan/user/User.java b/src/main/java/com/rotanareg/skolan/userManager/User.java similarity index 69% rename from src/main/java/com/rotanareg/skolan/user/User.java rename to src/main/java/com/rotanareg/skolan/userManager/User.java index be0094a..3d87108 100644 --- a/src/main/java/com/rotanareg/skolan/user/User.java +++ b/src/main/java/com/rotanareg/skolan/userManager/User.java @@ -1,27 +1,24 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; import com.rotanareg.skolan.Role; +import javax.validation.constraints.Past; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; +import java.io.Serializable; import java.util.ArrayList; import java.util.Date; -import java.io.Serializable; import java.util.List; + public class User implements Serializable { private static final long serialVersionUID = 1L; - private String username; - private String password; - private String firstName; - private String lastName; - private String emailAddress; - private String phoneNumber; - private Date birthDate; private Role role; private List rolesList; - public User(){ + public User() { rolesList = new ArrayList(); rolesList.add(Role.STUDENT); rolesList.add(Role.TEACHER); @@ -29,6 +26,27 @@ public class User implements Serializable { role = Role.STUDENT; // set the first role as default } + @Pattern(regexp = "[A-Za-z0-9]{2,20}", message = "Skriv in ditt användarnamn mellan 2 och 20 tecken långt, innehållande bokstäver och siffror") + private String username; + + @Size(min = 8, message = "Ditt pasword måste innehålla minst 8 tecken") + private String password; + + @Size(min = 1, max = 30, message = "Skriv in ditt Förnamn mellan 1 och 30 tecken långt.") + private String firstName; + + @Size(min = 1, max = 30, message = "Skriv in ditt Efternamn mellan 1 och 30 tecken långt.") + private String lastName; + + @ValidEmailAddress + private String emailAddress; + + private PhoneNumber phoneNumber; + + @Past(message = "Ditt födelsedatum måste vara i dåtid .") + private Date birthDate; + + public String getUsername() { return username; } @@ -45,6 +63,7 @@ public class User implements Serializable { this.password = password; } + public String getFirstName() { return firstName; } @@ -58,9 +77,11 @@ public class User implements Serializable { } public void setLastName(String lastName) { + this.lastName = lastName; } + public String getEmailAddress() { return emailAddress; } @@ -69,11 +90,11 @@ public class User implements Serializable { this.emailAddress = emailAddress; } - public String getPhoneNumber() { + public PhoneNumber getPhoneNumber() { return phoneNumber; } - public void setPhoneNumber(String phoneNumber) { + public void setPhoneNumber(PhoneNumber phoneNumber) { this.phoneNumber = phoneNumber; } @@ -97,6 +118,6 @@ public class User implements Serializable { return rolesList; } - } + diff --git a/src/main/java/com/rotanareg/skolan/user/UserDetail.java b/src/main/java/com/rotanareg/skolan/userManager/UserDetail.java similarity index 93% rename from src/main/java/com/rotanareg/skolan/user/UserDetail.java rename to src/main/java/com/rotanareg/skolan/userManager/UserDetail.java index 5a3fa93..807f288 100644 --- a/src/main/java/com/rotanareg/skolan/user/UserDetail.java +++ b/src/main/java/com/rotanareg/skolan/userManager/UserDetail.java @@ -1,4 +1,4 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; import javax.faces.view.ViewScoped; diff --git a/src/main/java/com/rotanareg/skolan/user/UserManager.java b/src/main/java/com/rotanareg/skolan/userManager/UserManager.java similarity index 63% rename from src/main/java/com/rotanareg/skolan/user/UserManager.java rename to src/main/java/com/rotanareg/skolan/userManager/UserManager.java index fd0d5c5..b2ad538 100644 --- a/src/main/java/com/rotanareg/skolan/user/UserManager.java +++ b/src/main/java/com/rotanareg/skolan/userManager/UserManager.java @@ -1,14 +1,15 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; + +import com.rotanareg.skolan.Role; import javax.enterprise.context.SessionScoped; -import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.inject.Inject; import javax.inject.Named; import java.io.Serializable; @Named -@SessionScoped // Marko jobbar på +@SessionScoped public class UserManager implements Serializable { private static final long serialVersionUID = 1L; @@ -29,24 +30,29 @@ public class UserManager implements Serializable { public String signIn(String username, String password) { User user = userService.getUser(username); if (user == null || !password.equals(user.getPassword())) { - FacesContext.getCurrentInstance().addMessage(null, - new FacesMessage("Skriv in ditt användarnamn och password")); - return "failure"; + return "signIn"; } - currentUser = user; - return "success"; + + switch (user.getRole()) { + case STUDENT: + return "student"; // xhtml-page to redirect to when signed in + case TEACHER: + return "teacher"; // xhtml-page to redirect to when signed in + case ADMIN: + return "admin"; // xhtml-page to redirect to when signed in + } + return ""; // should never happen, but redirects to the default xhtml-page } public void signOut() { - FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); - //return "index?faces-redirect =true"; } public String save(User user) { userService.saveUser(user); currentUser = user; + return "index"; } } diff --git a/src/main/java/com/rotanareg/skolan/user/UserService.java b/src/main/java/com/rotanareg/skolan/userManager/UserService.java similarity index 80% rename from src/main/java/com/rotanareg/skolan/user/UserService.java rename to src/main/java/com/rotanareg/skolan/userManager/UserService.java index 721cdf3..f07deea 100644 --- a/src/main/java/com/rotanareg/skolan/user/UserService.java +++ b/src/main/java/com/rotanareg/skolan/userManager/UserService.java @@ -1,4 +1,4 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; public interface UserService { // get information om användare diff --git a/src/main/java/com/rotanareg/skolan/user/UserServiceImpl.java b/src/main/java/com/rotanareg/skolan/userManager/UserServiceImpl.java similarity index 92% rename from src/main/java/com/rotanareg/skolan/user/UserServiceImpl.java rename to src/main/java/com/rotanareg/skolan/userManager/UserServiceImpl.java index 5df98d8..27840ff 100644 --- a/src/main/java/com/rotanareg/skolan/user/UserServiceImpl.java +++ b/src/main/java/com/rotanareg/skolan/userManager/UserServiceImpl.java @@ -1,4 +1,4 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; import javax.enterprise.context.ApplicationScoped; import java.util.Map; diff --git a/src/main/java/com/rotanareg/skolan/user/ValidEmailAddress.java b/src/main/java/com/rotanareg/skolan/userManager/ValidEmailAddress.java similarity index 92% rename from src/main/java/com/rotanareg/skolan/user/ValidEmailAddress.java rename to src/main/java/com/rotanareg/skolan/userManager/ValidEmailAddress.java index 4cb0ed5..994871c 100644 --- a/src/main/java/com/rotanareg/skolan/user/ValidEmailAddress.java +++ b/src/main/java/com/rotanareg/skolan/userManager/ValidEmailAddress.java @@ -1,4 +1,4 @@ -package com.rotanareg.skolan.user; +package com.rotanareg.skolan.userManager; import javax.validation.Constraint; import javax.validation.Payload; diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index d67439c..9808c80 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -9,7 +9,7 @@ false - + - + \ No newline at end of file diff --git a/src/main/webapp/admin.xhtml b/src/main/webapp/admin.xhtml index 06c7be8..7754f1f 100644 --- a/src/main/webapp/admin.xhtml +++ b/src/main/webapp/admin.xhtml @@ -1,32 +1,24 @@ - + + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - - - - + + +
- Registrera nya användare -

- Registrera nya kurser + +
+ +
- -
-

här kommer mer

- +
+
-
-
- - - + diff --git a/src/main/webapp/course_detail.xhtml b/src/main/webapp/course_detail.xhtml new file mode 100644 index 0000000..1d70762 --- /dev/null +++ b/src/main/webapp/course_detail.xhtml @@ -0,0 +1,24 @@ + + + + + + + + + + + + +
+ +

#{course.name}

+

+
+
+
+
+ diff --git a/src/main/webapp/course_details.xhtml b/src/main/webapp/course_details.xhtml index db413f7..6183246 100644 --- a/src/main/webapp/course_details.xhtml +++ b/src/main/webapp/course_details.xhtml @@ -8,16 +8,16 @@ - - + +
-

#{courseDetails.course.name}

-

#{courseDetails.course.description}

+

#{course.name}

+

#{course.description}

diff --git a/src/main/webapp/create_course.xhtml b/src/main/webapp/create_course.xhtml index b64e7be..da2073e 100644 --- a/src/main/webapp/create_course.xhtml +++ b/src/main/webapp/create_course.xhtml @@ -1,11 +1,29 @@ - + - - - - + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core"> + + + + +
+ +

Ny kurs panel top

+ +
+
+ + +
+ +

Kurs kod

+

Kurs namn

+

Kurs deskription

+

Ansvarig lärare

+
+
+
+ +
+ \ No newline at end of file diff --git a/src/main/webapp/index.xhtml b/src/main/webapp/index.xhtml index d5d0d08..3bd85b3 100644 --- a/src/main/webapp/index.xhtml +++ b/src/main/webapp/index.xhtml @@ -1,19 +1,27 @@ - + + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - - + + + + +
+ +

Logga in

+ +
+
-
- +
+ +
+ diff --git a/src/main/webapp/resources/skolan/css/style.css b/src/main/webapp/resources/skolan/css/style.css new file mode 100644 index 0000000..00c43bb --- /dev/null +++ b/src/main/webapp/resources/skolan/css/style.css @@ -0,0 +1,83 @@ +html { + margin: 0; + padding: 0; + font-family: Tahoma, sans-serif; +} + +body { + margin: 0; + padding: 0; +} + +h1, h2, h3, h4, h5, h6 { + margin: 0 0 8px 0; + padding: 0; +} + +p { + margin: 8px 0 0 0; + padding: 0; +} + +input, button,select { + font-family: Tahoma, sans-serif; + font-size: 100%; +} + +body > header { + padding: 16px; + clear: both; + text-align: center; + font-size: 200%; +} + +body > header > h1 { + margin: 0; +} + +body > section , body > form > section{ + margin: 8px 20%; + padding: 18px; + overflow: hidden; +.bild +background-image: url("testBild2.jpg"); + background-repeat: no-repeat; + background-size: cover; + background-position: 100%; +} + +body > footer { + padding: 8px; + clear: both; + font-size: 13px; + text-align: center; +} + +body > footer > p { + margin: 0; +} +.student-table { + width: 100%; +} + +.student-header { + padding: 4px; + text-align: left; + font-weight: bold; +} + +.student-col-name { + padding: 4px; + text-align: left; +} + +.student-col-courseCode, .student-col-courseName, .student-col-teacherName { + padding: 4px; + text-align: right; +} + +.student-footer { + padding: 4px; + font-weight: bold; + text-align: right; +} \ No newline at end of file diff --git a/src/main/webapp/resources/skolan/images/testBild2.jpg b/src/main/webapp/resources/skolan/images/testBild2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c622c867260b61cface8571c69f13e19f206d7cd GIT binary patch literal 93028 zcmbTdbyQnV6fT-V3oR5Vw9w)$POu`urG~pD5Uf~%KybITrMN?}V8u01B)GK2ihC$t zBv9NP!prZzyY5}~HVcx&3qd7w||$L0JKC2VZ#a@B#q0 zO8^#mZ@UiwfVw&W2mk=?A-qTUUm?1Cm+&4j z5i#+9_5K6W2lwxj+$Sa`AtNCneTXl_56CIV9+Lle{ojxL_xOKL;g5&+iSPf{V@EIqQ~0i#4IjPgg(XR+-H4L^^;m>be~Pw!u9h55}K#a zXzAEFIJvliA|O#QaS6${@8lH}m6TO<_4L6I14F2#mGuW3TRWJWyN9Qjw~ueom*9}l zu<(e4#IH%oDXD45+`RmP!lL4m((0O8bX|QzW7DsW&aUpB-@Scf;}esZsXx;*OUo;( z*tPY48=D7*N5?0pXXh7}|KYj=ApE~!{V!zy4_uUZTm*O-+$H`G*Bt_{|A158z4t

I-U%>u1 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 header { + background-color: #2badca; + color: white; +} + +body > section, body > form > section { + background-color: rgba(114, 207, 179, 0.38); + color: black; +} + +body > footer { + background-color: #2badca; + color: #e5e5e5; +} +.student-header { + background-color: #2a17f1; + color: white; +} + +.student-row-odd { + background-color: #e0e0e0; +} + +.student-row-even { + background-color: #f0f0f0; +} + +.student-footer { + background-color: #2a17f1; + color: white; +} \ No newline at end of file diff --git a/src/main/webapp/signIn.xhtml b/src/main/webapp/signIn.xhtml index 5fd2b3b..a787040 100644 --- a/src/main/webapp/signIn.xhtml +++ b/src/main/webapp/signIn.xhtml @@ -1,53 +1,41 @@ - + - - - + +
- -

Logga in

-

Skriv ditt användarnamn

-
- - - -

Välkommen, #{userManager.currentUser.firstName}!

-

Du är redan inloggad. - Vill dulogga ut?

-
-
+ + +

+ +
- -
- - - - Användarnamn - - - - - Password - - - - - - -
+
+ + + + Användarnamn + + + Password + + + + + + +
- + \ No newline at end of file diff --git a/src/main/webapp/student.xhtml b/src/main/webapp/student.xhtml index 034995a..738a159 100644 --- a/src/main/webapp/student.xhtml +++ b/src/main/webapp/student.xhtml @@ -1,34 +1,81 @@ - + + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core"> + + + + - - - -
- +
+ + + + Kurs kod + + + #{line.courseCode.name} + + + + Kurs namn + #{line.courseName.name} + + + Ansvarig lärare + #{line.teacherName} + + + + + + + +
- +
-

Mest lästa kurser

- - - + + + Kurs kod + + + #{line.courseCode.name} + + + + Kurs namn + #{line.courseName.name} + + + Ansvarig lärare + #{line.teacherName} + + + + + + - - +
- - - + + \ No newline at end of file diff --git a/src/main/webapp/teacher.xhtml b/src/main/webapp/teacher.xhtml index 6984f2f..2b10212 100644 --- a/src/main/webapp/teacher.xhtml +++ b/src/main/webapp/teacher.xhtml @@ -1,21 +1,24 @@ - + + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> - - - + + +
- - +

lärare sidan panel top

+
-
+ +
+

lärare sidan panel main

- +
+
+
+ \ No newline at end of file diff --git a/src/main/webapp/templates/footer_template.xhtml b/src/main/webapp/templates/footer_template.xhtml new file mode 100644 index 0000000..df389b4 --- /dev/null +++ b/src/main/webapp/templates/footer_template.xhtml @@ -0,0 +1,12 @@ + + + + + +
+

Skolan 2017

+
+
+ diff --git a/src/main/webapp/templates/header_template.xhtml b/src/main/webapp/templates/header_template.xhtml new file mode 100644 index 0000000..114cae4 --- /dev/null +++ b/src/main/webapp/templates/header_template.xhtml @@ -0,0 +1,12 @@ + + + + + +
+

Rotana Reg skola

+
+
+ \ No newline at end of file diff --git a/src/main/webapp/templates/page_template.xhtml b/src/main/webapp/templates/page_template.xhtml new file mode 100644 index 0000000..82c300d --- /dev/null +++ b/src/main/webapp/templates/page_template.xhtml @@ -0,0 +1,41 @@ + + + + + + + RotanaReg Skolan #{pageTitel} + + + + + + + + +
+

Hej

+
+
+ + +
+

Main Panel

+

Placeholder text.

+
+
+ +
+
+ diff --git a/src/main/webapp/templates/top_panel_template.xhtml b/src/main/webapp/templates/top_panel_template.xhtml new file mode 100644 index 0000000..a90fdb3 --- /dev/null +++ b/src/main/webapp/templates/top_panel_template.xhtml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/src/main/webapp/user_detail.xhtml b/src/main/webapp/user_detail.xhtml index 6e4048b..cbfea45 100644 --- a/src/main/webapp/user_detail.xhtml +++ b/src/main/webapp/user_detail.xhtml @@ -1,15 +1,17 @@ - + - + + + + @@ -17,46 +19,48 @@ Tillbaka
- -
- - - Användarnamn - - Password - - - Förnamn - + +
+ + + Användarnamn + - Efternamn - + Password + - E-mail address - + Förnamn + - Telefon nummer - + Efternamn + - Födelsedatum - - - + E-mail address + - - - - + Telefon nummer + + + + Födelsedatum + + + - - - + + + + - -
+ + +
+
+
+
- + \ No newline at end of file