Rev 1310 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1310 | Rev 1315 | ||
---|---|---|---|
1 | package pt.estgp.estgweb.services.courseunits; |
1 | package pt.estgp.estgweb.services.courseunits; |
2 | 2 | ||
3 | import jomm.dao.impl.AbstractDao; |
3 | import jomm.dao.impl.AbstractDao; |
4 | import org.apache.log4j.Logger; |
4 | import org.apache.log4j.Logger; |
5 | import org.hibernate.Query; |
5 | import org.hibernate.Query; |
6 | import pt.estgp.estgweb.domain.*; |
6 | import pt.estgp.estgweb.domain.*; |
7 | import pt.estgp.estgweb.domain.dao.DaoFactory; |
7 | import pt.estgp.estgweb.domain.dao.DaoFactory; |
8 | import pt.estgp.estgweb.domain.views.CourseUnitView; |
8 | import pt.estgp.estgweb.domain.views.CourseUnitView; |
9 | import pt.utl.ist.berserk.logic.serviceManager.IService; |
9 | import pt.utl.ist.berserk.logic.serviceManager.IService; |
10 | 10 | ||
11 | import java.util.ArrayList; |
11 | import java.util.ArrayList; |
12 | import java.util.Iterator; |
12 | import java.util.Iterator; |
13 | import java.util.List; |
13 | import java.util.List; |
14 | import java.util.Set; |
14 | import java.util.Set; |
15 | 15 | ||
16 | /** |
16 | /** |
17 | * Created by jorgemachado on 15/12/15. |
17 | * Created by jorgemachado on 15/12/15. |
18 | */ |
18 | */ |
19 | public class DeleteCourseUnitService implements IService |
19 | public class DeleteCourseUnitService implements IService |
20 | { |
20 | { |
21 | 21 | ||
22 | private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(DeleteCourseUnitService.class); |
22 | private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(DeleteCourseUnitService.class); |
23 | 23 | ||
24 | public static class CourseUnitContentsInfo |
24 | public static class CourseUnitContentsInfo |
25 | { |
25 | { |
26 | public List<String> warnings = new ArrayList<String>(); |
26 | public List<String> warnings = new ArrayList<String>(); |
27 | public 1.5.0/docs/api/java/lang/String.html">String messageResult = ""; |
27 | public 1.5.0/docs/api/java/lang/String.html">String messageResult = ""; |
28 | boolean canDelete = false; |
28 | boolean canDelete = false; |
29 | public CourseUnitView cuv; |
29 | public CourseUnitView cuv; |
- | 30 | boolean deleted = false; |
|
30 | 31 | ||
31 | public List<String> getWarnings() { |
32 | public List<String> getWarnings() { |
32 | return warnings; |
33 | return warnings; |
33 | } |
34 | } |
34 | 35 | ||
35 | public 1.5.0/docs/api/java/lang/String.html">String getMessageResult() { |
36 | public 1.5.0/docs/api/java/lang/String.html">String getMessageResult() { |
36 | return messageResult; |
37 | return messageResult; |
37 | } |
38 | } |
38 | 39 | ||
39 | public boolean isCanDelete() { |
40 | public boolean isCanDelete() { |
40 | return canDelete; |
41 | return canDelete; |
41 | } |
42 | } |
42 | 43 | ||
43 | public CourseUnitView getCuv() { |
44 | public CourseUnitView getCuv() { |
44 | return cuv; |
45 | return cuv; |
45 | } |
46 | } |
46 | } |
47 | } |
47 | /** |
48 | /** |
48 | * |
49 | * |
49 | * @param courseUnitId |
50 | * @param courseUnitId |
50 | * @return a list of warnings |
51 | * @return a list of warnings |
51 | * |
52 | * |
52 | */ |
53 | */ |
53 | public CourseUnitContentsInfo checkDelete(long courseUnitId,UserSession session) |
54 | public CourseUnitContentsInfo checkDelete(long courseUnitId,UserSession session) |
54 | { |
55 | { |
55 | CourseUnitContentsInfo result = new CourseUnitContentsInfo(); |
56 | CourseUnitContentsInfo result = new CourseUnitContentsInfo(); |
56 | result.canDelete = true; |
57 | result.canDelete = true; |
57 | 58 | ||
58 | CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId); |
59 | CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId); |
59 | 60 | ||
60 | boolean alert = false; |
61 | boolean alert = false; |
61 | if(cu.getStudents() != null && cu.getStudents().size() > 0) |
62 | if(cu.getStudents() != null && cu.getStudents().size() > 0) |
62 | { |
63 | { |
63 | result.warnings.add("ALERT - Tem Alunos (NAO PODE APAGAR, remova os alunos primeiro)"); |
64 | result.warnings.add("ALERT - Tem Alunos (NAO PODE APAGAR, remova os alunos primeiro)"); |
64 | result.canDelete = false; |
65 | result.canDelete = false; |
65 | } |
66 | } |
66 | if(cu.getTeachers() != null && cu.getTeachers().size() > 0) |
67 | if(cu.getTeachers() != null && cu.getTeachers().size() > 0) |
67 | { |
68 | { |
68 | result.warnings.add("ALERT - Tem Professores"); |
69 | result.warnings.add("ALERT - Tem Professores"); |
69 | } |
70 | } |
70 | if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0) |
71 | if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0) |
71 | { |
72 | { |
72 | result.warnings.add("ALERT - Tem Anuncios"); |
73 | result.warnings.add("ALERT - Tem Anuncios"); |
73 | } |
74 | } |
74 | if(cu.getAssignements() != null && cu.getAssignements().size() > 0) |
75 | if(cu.getAssignements() != null && cu.getAssignements().size() > 0) |
75 | { |
76 | { |
76 | result.warnings.add("ALERT - Tem Trabalhos (NAO PODE APAGAR, remova os trabalhos primeiro (tarefa do professor))"); |
77 | result.warnings.add("ALERT - Tem Trabalhos (NAO PODE APAGAR, remova os trabalhos primeiro (tarefa do professor))"); |
77 | } |
78 | } |
78 | if(cu.getBlogs() != null && cu.getBlogs().size() > 0) |
79 | if(cu.getBlogs() != null && cu.getBlogs().size() > 0) |
79 | { |
80 | { |
80 | result.warnings.add("ALERT - Tem BLOGS"); |
81 | result.warnings.add("ALERT - Tem BLOGS"); |
81 | } |
82 | } |
82 | if(cu.getCourseUnitEvaluation() != null) |
83 | if(cu.getCourseUnitEvaluation() != null) |
83 | { |
84 | { |
84 | result.warnings.add("ALERT - Tem Relatorio de Avaliacao (NAO PODE APAGAR, contacte a equipa de desenvolvimento para encontrar solucao)"); |
85 | result.warnings.add("ALERT - Tem Relatorio de Avaliacao (NAO PODE APAGAR, contacte a equipa de desenvolvimento para encontrar solucao)"); |
85 | result.canDelete = false; |
86 | result.canDelete = false; |
86 | } |
87 | } |
87 | if(cu.getCourseUnitProgram() != null) |
88 | if(cu.getCourseUnitProgram() != null) |
88 | { |
89 | { |
89 | result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup"); |
90 | result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup"); |
90 | } |
91 | } |
91 | if(cu.getSummaries() != null && cu.getSummaries().size() > 0) |
92 | if(cu.getSummaries() != null && cu.getSummaries().size() > 0) |
92 | { |
93 | { |
93 | result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente"); |
94 | result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente"); |
94 | } |
95 | } |
95 | if(result.canDelete) |
96 | if(result.canDelete) |
96 | { |
97 | { |
97 | result.messageResult ="Pode Apagar"; |
98 | result.messageResult ="Pode Apagar"; |
98 | } |
99 | } |
99 | else |
100 | else |
100 | { |
101 | { |
101 | result.messageResult ="Não é permitido apagar esta unidade"; |
102 | result.messageResult ="Não é permitido apagar esta unidade"; |
102 | } |
103 | } |
103 | result.cuv = new CourseUnitView(cu,false,false,false,false); |
104 | result.cuv = new CourseUnitView(cu,false,false,false,false); |
104 | return result; |
105 | return result; |
105 | } |
106 | } |
106 | 107 | ||
107 | /** |
108 | /** |
108 | * |
109 | * |
109 | * @param courseUnitId |
110 | * @param courseUnitId |
110 | * @return a list of warnings |
111 | * @return a list of warnings |
111 | * |
112 | * |
112 | */ |
113 | */ |
113 | public CourseUnitContentsInfo tryDelete(long courseUnitId,UserSession session) |
114 | public CourseUnitContentsInfo tryDelete(long courseUnitId,UserSession session) |
114 | { |
115 | { |
115 | CourseUnitContentsInfo result = checkDelete(courseUnitId,session); |
116 | CourseUnitContentsInfo result = checkDelete(courseUnitId,session); |
116 | 117 | ||
117 | if(result.canDelete) |
118 | if(result.canDelete) |
118 | { |
119 | { |
119 | CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId); |
120 | CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId); |
120 | logger.warn("Will Delete courseUnit: " + cu.getImportYear() + ";" + cu.getSemestre() + ";" + cu.getCode() + ";" + cu.getName() + ";" + cu.getCourseCode() + ";" + cu.getCourseName()); |
121 | logger.warn("Will Delete courseUnit: " + cu.getImportYear() + ";" + cu.getSemestre() + ";" + cu.getCode() + ";" + cu.getName() + ";" + cu.getCourseCode() + ";" + cu.getCourseName()); |
121 | 122 | ||
122 | if(cu.getTeachers() != null && cu.getTeachers().size() > 0) |
123 | if(cu.getTeachers() != null && cu.getTeachers().size() > 0) |
123 | { |
124 | { |
124 | Iterator<TeacherImpl> teachers = cu.getTeachers().iterator(); |
125 | Iterator<TeacherImpl> teachers = cu.getTeachers().iterator(); |
125 | while(teachers.hasNext()) |
126 | while(teachers.hasNext()) |
126 | { |
127 | { |
127 | Teacher t = teachers.next(); |
128 | Teacher t = teachers.next(); |
128 | teachers.remove(); |
129 | teachers.remove(); |
129 | t.getTeachedUnits().remove(cu); |
130 | t.getTeachedUnits().remove(cu); |
130 | logger.warn("Removing Teacher: " + t.getSigesCode() + " - id:" + t.getId() + " name:" + t.getName()); |
131 | logger.warn("Removing Teacher: " + t.getSigesCode() + " - id:" + t.getId() + " name:" + t.getName()); |
131 | } |
132 | } |
132 | } |
133 | } |
133 | if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0) |
134 | if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0) |
134 | { |
135 | { |
135 | Iterator<CourseUnitAnnouncement> annoucements = cu.getAnnouncements().iterator(); |
136 | Iterator<CourseUnitAnnouncement> annoucements = cu.getAnnouncements().iterator(); |
136 | while(annoucements.hasNext()) |
137 | while(annoucements.hasNext()) |
137 | { |
138 | { |
138 | CourseUnitAnnouncement a = annoucements.next(); |
139 | CourseUnitAnnouncement a = annoucements.next(); |
139 | annoucements.remove(); |
140 | annoucements.remove(); |
140 | a.setCourseUnit(null); |
141 | a.setCourseUnit(null); |
141 | logger.warn("Removing Annoucement: " + a.getId()); |
142 | logger.warn("Removing Annoucement: " + a.getId()); |
142 | DaoFactory.getAnnouncementDaoImpl().delete(a); |
143 | DaoFactory.getAnnouncementDaoImpl().delete(a); |
143 | } |
144 | } |
144 | } |
145 | } |
145 | if(cu.getBlogs() != null && cu.getBlogs().size() > 0) |
146 | if(cu.getBlogs() != null && cu.getBlogs().size() > 0) |
146 | { |
147 | { |
147 | Iterator<CourseUnitBlog> blogs = cu.getBlogs().iterator(); |
148 | Iterator<CourseUnitBlog> blogs = cu.getBlogs().iterator(); |
148 | while(blogs.hasNext()) |
149 | while(blogs.hasNext()) |
149 | { |
150 | { |
150 | CourseUnitBlog a = blogs.next(); |
151 | CourseUnitBlog a = blogs.next(); |
151 | blogs.remove(); |
152 | blogs.remove(); |
152 | Set<BlogPost> posts = a.getPosts(); |
153 | Set<BlogPost> posts = a.getPosts(); |
153 | Iterator<BlogPost> postsIter = posts.iterator(); |
154 | Iterator<BlogPost> postsIter = posts.iterator(); |
154 | while(postsIter.hasNext()) |
155 | while(postsIter.hasNext()) |
155 | { |
156 | { |
156 | BlogPost bp = postsIter.next(); |
157 | BlogPost bp = postsIter.next(); |
157 | a.getPosts().remove(bp); |
158 | a.getPosts().remove(bp); |
158 | bp.setBlog(null); |
159 | bp.setBlog(null); |
159 | DaoFactory.getBlogPostDaoImpl().delete(bp); |
160 | DaoFactory.getBlogPostDaoImpl().delete(bp); |
160 | } |
161 | } |
161 | a.setCourseUnit(null); |
162 | a.setCourseUnit(null); |
162 | logger.warn("Removing Blog: " + a.getId()); |
163 | logger.warn("Removing Blog: " + a.getId()); |
163 | DaoFactory.getCourseUnitBlogDaoImpl().delete(a); |
164 | DaoFactory.getCourseUnitBlogDaoImpl().delete(a); |
164 | } |
165 | } |
165 | } |
166 | } |
166 | 167 | ||
167 | if(cu.getCourseUnitProgram() != null) |
168 | if(cu.getCourseUnitProgram() != null) |
168 | { |
169 | { |
169 | result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup"); |
170 | result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup"); |
170 | cu.setCourseUnitProgram(null); |
171 | cu.setCourseUnitProgram(null); |
171 | } |
172 | } |
172 | if(cu.getSummaries() != null && cu.getSummaries().size() > 0) |
173 | if(cu.getSummaries() != null && cu.getSummaries().size() > 0) |
173 | { |
174 | { |
174 | result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente"); |
175 | result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente"); |
175 | Iterator<CourseUnitSummary> summaries = cu.getSummaries().iterator(); |
176 | Iterator<CourseUnitSummary> summaries = cu.getSummaries().iterator(); |
176 | while(summaries.hasNext()) |
177 | while(summaries.hasNext()) |
177 | { |
178 | { |
178 | CourseUnitSummary a = summaries.next(); |
179 | CourseUnitSummary a = summaries.next(); |
179 | summaries.remove(); |
180 | summaries.remove(); |
180 | a.setCourseUnit(null); |
181 | a.setCourseUnit(null); |
181 | logger.warn("Removing Summary: " + a.getId()); |
182 | logger.warn("Removing Summary: " + a.getId()); |
182 | DaoFactory.getCourseUnitSummaryDaoImpl().delete(a); |
183 | DaoFactory.getCourseUnitSummaryDaoImpl().delete(a); |
183 | } |
184 | } |
184 | 185 | ||
185 | } |
186 | } |
186 | DaoFactory.getCourseUnitDaoImpl().delete(cu); |
187 | DaoFactory.getCourseUnitDaoImpl().delete(cu); |
- | 188 | result.deleted = true; |
|
187 | result.messageResult = "Unidade Apagada"; |
189 | result.messageResult = "Unidade Apagada"; |
188 | } |
190 | } |
189 | 191 | ||
190 | return result; |
192 | return result; |
191 | } |
193 | } |
192 | 194 | ||
193 | public List<CourseUnitContentsInfo> loadDeleteCandidates(1.5.0/docs/api/java/lang/String.html">String importYear,UserSession session) |
195 | public List<CourseUnitContentsInfo> loadDeleteCandidates(1.5.0/docs/api/java/lang/String.html">String importYear,UserSession session) |
194 | { |
196 | { |
195 | List<CourseUnitContentsInfo> courseUnitContentsInfos = new ArrayList<CourseUnitContentsInfo>(); |
197 | List<CourseUnitContentsInfo> courseUnitContentsInfos = new ArrayList<CourseUnitContentsInfo>(); |
196 | 1.5.0/docs/api/javax/management/Query.html">Query q = AbstractDao.getCurrentSession().createQuery("select c.id from c in class " + CourseUnit.class.getName() + |
198 | 1.5.0/docs/api/javax/management/Query.html">Query q = AbstractDao.getCurrentSession().createQuery("select c.id from c in class " + CourseUnit.class.getName() + |
197 | " where size(c.students) = 0 and c.importYear = ? order by c.importYear, c.semestre, c.code"); |
199 | " where size(c.students) = 0 and c.importYear = ? order by c.importYear, c.semestre, c.code"); |
198 | q.setString(0,importYear); |
200 | q.setString(0,importYear); |
199 | 1.5.0/docs/api/java/util/Iterator.html">Iterator iter = q.iterate(); |
201 | 1.5.0/docs/api/java/util/Iterator.html">Iterator iter = q.iterate(); |
200 | while(iter.hasNext()) |
202 | while(iter.hasNext()) |
201 | { |
203 | { |
202 | 1.5.0/docs/api/java/lang/Long.html">Long id = (1.5.0/docs/api/java/lang/Long.html">Long) iter.next(); |
204 | 1.5.0/docs/api/java/lang/Long.html">Long id = (1.5.0/docs/api/java/lang/Long.html">Long) iter.next(); |
203 | CourseUnitContentsInfo cuInfo = checkDelete(id,session); |
205 | CourseUnitContentsInfo cuInfo = checkDelete(id,session); |
204 | courseUnitContentsInfos.add(cuInfo); |
206 | courseUnitContentsInfos.add(cuInfo); |
205 | } |
207 | } |
206 | return courseUnitContentsInfos; |
208 | return courseUnitContentsInfos; |
207 | } |
209 | } |
- | 210 | ||
- | 211 | ||
- | 212 | public 1.5.0/docs/api/java/lang/Integer.html">Integer deleteCandidatesNoWarn(1.5.0/docs/api/java/lang/String.html">String importYear,UserSession session) |
|
- | 213 | { |
|
- | 214 | int count = 0; |
|
- | 215 | List<CourseUnitContentsInfo> courseUnitContentsInfos = loadDeleteCandidates(importYear,session); |
|
- | 216 | for(CourseUnitContentsInfo info: courseUnitContentsInfos) |
|
- | 217 | { |
|
- | 218 | if(info.isCanDelete() && info.getWarnings().size() == 0) |
|
- | 219 | { |
|
- | 220 | CourseUnitContentsInfo result = tryDelete(info.getCuv().getId(),session); |
|
- | 221 | if(result.deleted) |
|
- | 222 | count++; |
|
- | 223 | } |
|
- | 224 | } |
|
- | 225 | return count; |
|
- | 226 | } |
|
- | 227 | ||
- | 228 | public 1.5.0/docs/api/java/lang/Integer.html">Integer deleteCandidatesAll(1.5.0/docs/api/java/lang/String.html">String importYear,UserSession session) |
|
- | 229 | { |
|
- | 230 | int count = 0; |
|
- | 231 | List<CourseUnitContentsInfo> courseUnitContentsInfos = loadDeleteCandidates(importYear,session); |
|
- | 232 | ||
- | 233 | for(CourseUnitContentsInfo info: courseUnitContentsInfos) |
|
- | 234 | { |
|
- | 235 | if(info.isCanDelete()) |
|
- | 236 | { |
|
- | 237 | CourseUnitContentsInfo result = tryDelete(info.getCuv().getId(),session); |
|
- | 238 | if(result.deleted) |
|
- | 239 | count++; |
|
- | 240 | } |
|
- | 241 | } |
|
- | 242 | return count; |
|
- | 243 | } |
|
- | 244 | ||
- | 245 | ||
208 | } |
246 | } |
209 | 247 |