1 package de.campussource.cse.cdmm;
2
3 import java.util.ArrayList;
4 import java.util.Date;
5 import java.util.List;
6
7 import javax.ejb.EJB;
8 import javax.ejb.Remote;
9 import javax.ejb.Stateless;
10
11 import de.campussource.cse.cdmm.dao.*;
12 import de.campussource.cse.cdmm.domain.Category;
13 import de.campussource.cse.cdmm.domain.Course;
14 import de.campussource.cse.cdmm.domain.Role;
15 import de.campussource.cse.cdmm.domain.State;
16
17
18
19
20
21
22 @Stateless
23 @Remote(value=DataModelManager.class)
24 public class DataModelManagerBean implements DataModelManager {
25
26 @EJB
27 private CategoryDao categoryDao;
28
29 @EJB
30 private CourseDao courseDao;
31
32 @Override
33 public List<EventMessage> createOrUpdateCategory(CategoryMessage categoryMessage) {
34
35 return null;
36 }
37
38 @Override
39 public List<EventMessage> createOrUpdateCourse(CourseMessage courseMessage) {
40
41 List<EventMessage> events = new ArrayList<EventMessage>();
42
43 State state = null;
44 Course loadedCourse = null;
45 try {
46 loadedCourse = courseDao.find(courseMessage.getCourse().getId());
47 state=loadedCourse.getState();
48 } catch (DataModelManagerException e1) {
49
50 }
51
52
53 if (courseMessage.getInputEvent()==InputEventType.CREATE_UPDATE){
54
55 EventMessage eventMessage = new EventMessage();
56 Course course = courseMessage.getCourse();
57 course.setState(State.EXISTS);
58 eventMessage.setEntity(course);
59 try {
60 courseDao.persist(course);
61 } catch (DataModelManagerException e) {
62
63 }
64 if (state==State.EXISTS){
65 eventMessage.setOutputEvent(OutputEventType.UPDATE);
66 } else {
67 eventMessage.setOutputEvent(OutputEventType.CREATE);
68 }
69 eventMessage.setEventTime(new Date());
70 events.add(eventMessage);
71
72
73
74 for (Category category : course.getCategories()){
75 createByReference(category);
76 }
77
78 for (Course workgroup : course.getWorkgroups()){
79 createByReference(workgroup);
80 }
81
82 createByReference(course.getParent());
83
84 for (Role role : course.getRoles()){
85 createByReference(role);
86 }
87
88 } else if (courseMessage.getInputEvent()==InputEventType.DELETE){
89 return deleteCourse(courseMessage);
90 } else if (courseMessage.getInputEvent()==InputEventType.CREATE_BY_REFERENCE){
91
92
93 }
94
95
96 return events;
97 }
98
99 private void createByReference(Category category) {
100 try {
101 Category loadedCategory = categoryDao.find(category.getId());
102 } catch (DataModelManagerException e) {
103 CategoryMessage cm = new CategoryMessage();
104 cm.setCategory(category);
105 cm.setInputEvent(InputEventType.CREATE_BY_REFERENCE);
106 cm.setEventTime(new Date());
107 createOrUpdateCategory(cm);
108 }
109 }
110
111 private void createByReference(Course course) {
112 try {
113 Course loadedCourse = courseDao.find(course.getId());
114 } catch (DataModelManagerException e) {
115 CourseMessage cm = new CourseMessage();
116 cm.setCourse(course);
117 cm.setInputEvent(InputEventType.CREATE_BY_REFERENCE);
118 cm.setEventTime(new Date());
119 createOrUpdateCourse(cm);
120 }
121 }
122
123 private void createByReference(Role role) {
124
125 }
126
127 @Override
128 public List<EventMessage> deleteCategory(CategoryMessage categoryMessage) {
129
130 return null;
131 }
132
133 @Override
134 public List<EventMessage> deleteCourse(CourseMessage courseMessage) {
135
136 return null;
137 }
138
139 }