Rev 1779 | Rev 1782 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
112 | jmachado | 1 | package pt.estgp.estgweb.domain; |
2 | |||
1312 | jmachado | 3 | import com.owlike.genson.Genson; |
4 | import org.apache.log4j.Logger; |
||
995 | jmachado | 5 | import pt.estgp.estgweb.Globals; |
1313 | jmachado | 6 | import pt.estgp.estgweb.domain.dao.DaoFactory; |
489 | jmachado | 7 | import pt.estgp.estgweb.domain.enums.CourseUnitContentsGrants; |
1312 | jmachado | 8 | import pt.estgp.estgweb.domain.test.TestCourseUnit; |
9 | import pt.estgp.estgweb.domain.utils.SimpleClearanceRuledSupport; |
||
1670 | jmachado | 10 | import pt.estgp.estgweb.utils.StringsUtils; |
1312 | jmachado | 11 | import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
12 | import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
||
489 | jmachado | 13 | |
1312 | jmachado | 14 | import java.io.IOException; |
146 | jmachado | 15 | import java.io.Serializable; |
1337 | jmachado | 16 | import java.util.*; |
146 | jmachado | 17 | |
112 | jmachado | 18 | /** |
19 | * Created by IntelliJ IDEA. |
||
20 | * User: Jorge Machado |
||
21 | * Date: 7/Mai/2008 |
||
22 | * Time: 20:21:15 |
||
23 | * To change this template use File | Settings | File Templates. |
||
24 | */ |
||
1312 | jmachado | 25 | public class CourseUnitImpl extends CourseUnit implements ICanManage, ClearanceRuled |
146 | jmachado | 26 | { |
489 | jmachado | 27 | |
1312 | jmachado | 28 | 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(CourseUnitImpl.class); |
29 | |||
489 | jmachado | 30 | CourseUnitContentsGrants courseUnitContentsGrants = null; |
31 | |||
146 | jmachado | 32 | public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable() |
33 | { |
||
34 | return getId(); |
||
35 | } |
||
204 | jmachado | 36 | |
1670 | jmachado | 37 | public 1.5.0/docs/api/java/lang/String.html">String getCourseNameInitials() |
38 | { |
||
39 | if(getCourseName() != null) |
||
40 | { |
||
41 | return StringsUtils.getInitials(getCourseName()); |
||
42 | } |
||
43 | else |
||
44 | return null; |
||
45 | } |
||
489 | jmachado | 46 | |
47 | public CourseUnitContentsGrants getCourseUnitContentsGrants() { |
||
48 | if(courseUnitContentsGrants == null) |
||
49 | courseUnitContentsGrants = CourseUnitContentsGrants.parse(super.getContentsGrants()); |
||
50 | return courseUnitContentsGrants; |
||
51 | } |
||
52 | |||
53 | public void setCourseUnitContentsGrants(CourseUnitContentsGrants courseUnitContentsGrants) { |
||
54 | super.setContentsGrants(courseUnitContentsGrants.name()); |
||
55 | this.courseUnitContentsGrants = courseUnitContentsGrants; |
||
56 | } |
||
57 | |||
204 | jmachado | 58 | public boolean isValid() |
59 | { |
||
60 | return true; //To change body of implemented methods use File | Settings | File Templates. |
||
61 | } |
||
62 | |||
63 | public boolean isOwnedBy(GenericUser u) |
||
64 | { |
||
208 | jmachado | 65 | return isOwnedBy(u, false); |
204 | jmachado | 66 | } |
67 | |||
208 | jmachado | 68 | public boolean isOwnedBy(GenericUser u, boolean transaction) |
69 | { |
||
70 | return u != null && u instanceof TeacherImpl && ((TeacherImpl)u).hasCourseUnit(getId(),transaction); |
||
71 | } |
||
72 | |||
204 | jmachado | 73 | /** |
74 | * Not implemented can be variuous teachers |
||
75 | * @return null |
||
76 | * use isOwnedBy in this class |
||
77 | */ |
||
78 | public GenericUser getOwner() |
||
79 | { |
||
80 | return null; |
||
81 | } |
||
82 | /** |
||
83 | * Not implemented |
||
84 | * @return |
||
85 | */ |
||
86 | public List<String> getOwnerRoles() |
||
87 | { |
||
88 | return null; |
||
89 | } |
||
90 | |||
91 | /** |
||
92 | * Not implemented |
||
93 | * @return |
||
94 | */ |
||
95 | public 1.5.0/docs/api/java/lang/String.html">String getChoosedOwnerRole() |
||
96 | { |
||
97 | return null; |
||
98 | } |
||
99 | |||
100 | public boolean isInternal() |
||
101 | { |
||
251 | jmachado | 102 | return true; |
204 | jmachado | 103 | } |
208 | jmachado | 104 | |
105 | public CourseUnitBlogImpl getUnitBlog() |
||
106 | { |
||
107 | if(getBlogs()!=null && getBlogs().size() > 0) |
||
108 | return (CourseUnitBlogImpl) getBlogs().iterator().next(); |
||
109 | return null; |
||
110 | } |
||
251 | jmachado | 111 | |
1315 | jmachado | 112 | |
1312 | jmachado | 113 | public boolean equalsSiges(5+0%2Fdocs%2Fapi+Object">Object anotherInstance,boolean turmasSeparadas) |
251 | jmachado | 114 | { |
115 | if(anotherInstance instanceof CourseUnitImpl) |
||
116 | { |
||
117 | CourseUnitImpl anCourseUnit = (CourseUnitImpl) anotherInstance; |
||
1312 | jmachado | 118 | if(turmasSeparadas) |
119 | { |
||
120 | boolean turmaVazia = getCdTurma() == null || getCdTurma().trim().length() == 0; |
||
121 | boolean anotherTurmaVazia = anCourseUnit.getCdTurma() == null || anCourseUnit.getCdTurma().trim().length() == 0; |
||
122 | boolean turmasIguais = (turmaVazia && anotherTurmaVazia) || (!turmaVazia && !anotherTurmaVazia && getCdTurma().equals(anCourseUnit.getCdTurma())); |
||
123 | return equalsIgnoringTurma(anotherInstance) |
||
124 | && |
||
125 | turmasIguais; |
||
126 | } |
||
127 | else |
||
128 | return equalsIgnoringTurma(anotherInstance); |
||
251 | jmachado | 129 | } |
130 | return false; |
||
131 | |||
132 | } |
||
489 | jmachado | 133 | |
1204 | jmachado | 134 | public boolean equalsIgnoringTurma(5+0%2Fdocs%2Fapi+Object">Object anotherInstance) |
135 | { |
||
136 | if(anotherInstance instanceof CourseUnitImpl) |
||
137 | { |
||
138 | CourseUnitImpl anCourseUnit = (CourseUnitImpl) anotherInstance; |
||
139 | |||
140 | return anCourseUnit.getCode() != null && getCode() != null && getCode().equals(anCourseUnit.getCode()) && |
||
141 | anCourseUnit.getCourseCode() != null && getCourseCode() != null && getCourseCode().equals(anCourseUnit.getCourseCode()) && |
||
142 | anCourseUnit.getSemestre() != null && getSemestre() != null && getSemestre().equals(anCourseUnit.getSemestre()) && |
||
143 | anCourseUnit.getImportYear() != null && getImportYear() != null && getImportYear().equals(anCourseUnit.getImportYear()); |
||
144 | } |
||
145 | return false; |
||
146 | |||
147 | } |
||
148 | |||
973 | jmachado | 149 | /** |
150 | * Means that is teacher os responsable teacher or from course commission |
||
151 | * Only works in open transaction |
||
152 | * |
||
153 | * Needs Course and Responsable Teacher loaded |
||
154 | */ |
||
155 | public boolean isFromCourseUnitCommission(UserSession userSession) |
||
156 | { |
||
157 | return userSession.getUser()!= null && |
||
158 | (((UserImpl) userSession.getUser()).isTeacherOfCourseUnit(getId(), true) |
||
159 | || (getResponsableTeacher() != null && getResponsableTeacher().getId() == userSession.getUser().getId()) |
||
1585 | jmachado | 160 | || ((CourseImpl)getCourse()).isFromCourseCommission(userSession) |
973 | jmachado | 161 | ); |
162 | } |
||
489 | jmachado | 163 | |
1312 | jmachado | 164 | public boolean isFromCourseCommission(UserSession userSession) |
165 | { |
||
166 | return userSession.getUser()!= null && |
||
167 | userSession.getUser().hasRole(getCourse().getValidationRole()); |
||
168 | } |
||
973 | jmachado | 169 | |
1312 | jmachado | 170 | |
995 | jmachado | 171 | public 1.5.0/docs/api/java/lang/String.html">String getSummariosPathIntranet() |
172 | { |
||
173 | return Globals.FTP_IONLINE_START_PATH + "/" + getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_Sumarios; |
||
174 | } |
||
973 | jmachado | 175 | |
1148 | jmachado | 176 | public 1.5.0/docs/api/java/lang/String.html">String getInqueritosPedagogicosPathIntranet() |
177 | { |
||
178 | return Globals.FTP_IONLINE_START_PATH + getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_InqueritoPedagogico; |
||
179 | } |
||
180 | |||
181 | |||
995 | jmachado | 182 | public 1.5.0/docs/api/java/lang/String.html">String getSummariosPathFileIntranet() |
183 | { |
||
184 | return getSummariosPathIntranet() + "/" + getSummariosFileNameIntranet(); |
||
185 | } |
||
186 | |||
187 | public 1.5.0/docs/api/java/lang/String.html">String getSummariosFileNameIntranet(){ |
||
188 | return getCode() + "_" + getNormalizedName() + "_sumarios.pdf"; |
||
189 | } |
||
190 | |||
191 | |||
996 | jmachado | 192 | public 1.5.0/docs/api/java/lang/String.html">String getSigesUniqueIdentifiers() |
193 | { |
||
194 | return "SIGES:" + getCode() + ", COURSE: " + getCourseCode() + |
||
1139 | jmachado | 195 | ", " + getSemestre() + " of " + getImportYear() + " - " + getName() + " Turma - " + getCdTurma(); |
996 | jmachado | 196 | } |
197 | |||
1341 | jmachado | 198 | public int studentsSize() |
199 | { |
||
200 | if(getStudents() !=null) |
||
201 | return getStudents().size(); |
||
202 | return 0; |
||
203 | } |
||
1312 | jmachado | 204 | |
1341 | jmachado | 205 | public int studentsTurmaSize() |
206 | { |
||
207 | int countTotalStudentsTurmas = 0; |
||
208 | if(getTurmas() == null) |
||
209 | return 0; |
||
210 | for(CourseUnitTurma turma: getTurmas()) |
||
211 | { |
||
212 | if(turma.getStudents() != null) |
||
213 | countTotalStudentsTurmas+=turma.getStudents().size(); |
||
214 | } |
||
215 | return countTotalStudentsTurmas; |
||
216 | } |
||
217 | |||
218 | |||
1312 | jmachado | 219 | public boolean hasStudent(long studentId, boolean transaction) |
220 | { |
||
221 | Set<StudentImpl> students; |
||
222 | if(transaction) |
||
223 | students = getStudents(); |
||
224 | else |
||
225 | { |
||
226 | IServiceManager sm; |
||
227 | try { |
||
228 | sm = ServiceManager.getInstance(); |
||
229 | 1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"}; |
||
230 | 5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{getId()}; |
||
231 | students = (Set<StudentImpl>) sm.execute(null, "LoadCourseUnitStudents", args, names); |
||
232 | } catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e) { |
||
233 | logger.error(e,e); |
||
234 | return false; |
||
235 | } |
||
236 | } |
||
237 | if(students == null) |
||
238 | return false; |
||
239 | for(Student s: students) |
||
240 | { |
||
241 | if(s.getId() == studentId) |
||
242 | return true; |
||
243 | } |
||
244 | return false; |
||
245 | } |
||
246 | |||
247 | public boolean hasTeacher(long teacherId, boolean transaction) |
||
248 | { |
||
249 | Set<TeacherImpl> teachers; |
||
250 | if(transaction) |
||
251 | teachers = getTeachers(); |
||
252 | else |
||
253 | { |
||
254 | IServiceManager sm; |
||
255 | try { |
||
256 | sm = ServiceManager.getInstance(); |
||
257 | 1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"}; |
||
258 | 5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{getId()}; |
||
259 | teachers = (Set<TeacherImpl>) sm.execute(null, "LoadCourseUnitTeachers", args, names); |
||
260 | } catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e) { |
||
261 | logger.error(e,e); |
||
262 | return false; |
||
263 | } |
||
264 | } |
||
265 | if(teachers == null) |
||
266 | return false; |
||
267 | for(Teacher t: teachers) |
||
268 | { |
||
269 | if(t.getId() == teacherId) |
||
270 | return true; |
||
271 | } |
||
272 | return false; |
||
273 | } |
||
274 | |||
275 | public boolean isResponsibleTeacher(long teacherId, boolean transaction) |
||
276 | { |
||
277 | Teacher t; |
||
278 | if(transaction) |
||
279 | t = getResponsableTeacher(); |
||
280 | else |
||
281 | { |
||
282 | IServiceManager sm; |
||
283 | try { |
||
284 | sm = ServiceManager.getInstance(); |
||
285 | 1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"}; |
||
286 | 5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{getId()}; |
||
287 | t = (Teacher) sm.execute(null, "LoadCourseUnitResponsibleTeacher", args, names); |
||
288 | } catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e) { |
||
289 | logger.error(e,e); |
||
290 | return false; |
||
291 | } |
||
292 | } |
||
293 | if(t == null) |
||
294 | return false; |
||
295 | if(t.getId() == teacherId) |
||
296 | return true; |
||
297 | return false; |
||
298 | } |
||
299 | |||
300 | SimpleClearanceRuledSupport clearanceRuledSupport = null; |
||
301 | |||
302 | public SimpleClearanceRuledSupport getClearanceRuledSupport() { |
||
303 | return clearanceRuledSupport; |
||
304 | } |
||
305 | |||
306 | public void setClearanceRuledSupport(SimpleClearanceRuledSupport clearanceRuledSupport) { |
||
307 | this.clearanceRuledSupport = clearanceRuledSupport; |
||
308 | } |
||
309 | |||
310 | @1.5.0/docs/api/java/lang/Override.html">Override |
||
311 | public boolean isClearanceInitialized(UserSessionImpl u) { |
||
312 | return clearanceRuledSupport == null ? false : |
||
313 | clearanceRuledSupport.isClearanceInitialized(u); |
||
314 | } |
||
315 | |||
316 | @1.5.0/docs/api/java/lang/Override.html">Override |
||
317 | public boolean isClear(UserSessionImpl u, 1.5.0/docs/api/java/lang/String.html">String OP) { |
||
318 | |||
319 | if(clearanceRuledSupport == null) return false; |
||
320 | if(OP.startsWith("EVALUATION") && !OP.startsWith("EVALUATION_INFO") |
||
321 | && clearanceRuledSupport.isClear(u,CourseUnitClearancesOperation.EVALUATION_ALL.name())) |
||
322 | return true; |
||
323 | return clearanceRuledSupport.isClear(u, OP); |
||
324 | } |
||
325 | |||
1326 | jmachado | 326 | @1.5.0/docs/api/java/lang/Override.html">Override |
327 | public void initClearances(UserSessionImpl usession,boolean force) |
||
328 | { |
||
329 | CourseUnitImpl c = this; |
||
330 | 1.5.0/docs/api/java/lang/String.html">String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear(); |
||
331 | List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees(); |
||
332 | List<Long> activeCourseIds = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveCourseIds(); |
||
333 | |||
334 | boolean isActiveYear = activeYear != null && c.getImportYear().equals(activeYear); |
||
335 | boolean isActiveDegree = activeDegrees!=null && activeDegrees.contains(c.getCourse().getDegree()); |
||
336 | boolean isActiveCourseId = activeCourseIds!=null && activeCourseIds.contains(c.getCourse().getId()); |
||
337 | |||
338 | boolean activePeriod = (isActiveYear && (isActiveCourseId || isActiveDegree)); |
||
339 | boolean active = activePeriod || c.isEvaluationOpenByAdmin(); |
||
340 | |||
341 | boolean isComplete = c.getCourseUnitEvaluation() != null && c.getCourseUnitEvaluation().isTeacherComplete() && !c.getCourseUnitEvaluation().isClosed(); |
||
342 | boolean isClosed = c.getCourseUnitEvaluation() != null && c.getCourseUnitEvaluation().isClosed(); |
||
343 | boolean isEdit = !isClosed && !isComplete; |
||
344 | |||
345 | |||
346 | SimpleClearanceRuledSupport s = new SimpleClearanceRuledSupport(); |
||
347 | s.setDirty(); |
||
348 | |||
349 | if(isEdit) |
||
350 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_STATE_EDIT.name(),usession); |
||
351 | else if(isComplete) |
||
352 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_STATE_COMPLETE.name(),usession); |
||
353 | else if(isClosed) |
||
354 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_STATE_CLOSED.name(),usession); |
||
355 | |||
356 | if(activePeriod) |
||
357 | { |
||
358 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_ACTIVE.name(),usession); |
||
359 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_ACTIVE_REGULAR_PERIOD.name(),usession); |
||
360 | } |
||
361 | if(c.isEvaluationOpenByAdmin()) |
||
362 | { |
||
363 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_ACTIVE.name(),usession); |
||
364 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_ACTIVE_SPECIAL_ADMIN.name(),usession); |
||
365 | } |
||
366 | |||
367 | |||
1554 | jmachado | 368 | if(usession.getUser() != null && (usession.getUser().isSuperuserOrAdmin() || usession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))) |
1326 | jmachado | 369 | { |
1353 | jmachado | 370 | s.addClearance(CourseUnitClearancesOperation.STATISTICS_CAN_VIEW.name(),usession); |
1326 | jmachado | 371 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_ALL.name(),usession); |
1365 | jmachado | 372 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_EDIT_PROGRAM.name(), usession); |
1350 | jmachado | 373 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_CAN_VALIDATE.name(),usession); |
374 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_TEACHER_PART.name(),usession); |
||
375 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_COORDINATOR_PART.name(),usession); |
||
1326 | jmachado | 376 | } |
377 | |||
378 | if(usession.getUser() != null && usession.getUser() instanceof Teacher) |
||
379 | { |
||
1350 | jmachado | 380 | Teacher t = ((Teacher)(usession.getUser())); |
1326 | jmachado | 381 | boolean teacher = ((Teacher)(usession.getUser())).isTeacherOfCourseUnit(c.getId(),true); |
382 | boolean responsable = c.getResponsableTeacher()!=null && usession.getUser().getId() == c.getResponsableTeacher().getId(); |
||
1585 | jmachado | 383 | boolean isCoordinator = ((CourseImpl) DaoFactory.getCourseDaoImpl().narrow(c.getCourse())).isFromCourseCommission(t); |
384 | |||
1326 | jmachado | 385 | if(teacher) |
1350 | jmachado | 386 | { |
1326 | jmachado | 387 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_TEACHER.name(), usession); |
1350 | jmachado | 388 | } |
1326 | jmachado | 389 | if(responsable) |
1350 | jmachado | 390 | { |
1326 | jmachado | 391 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_RESP_TEACHER.name(), usession); |
1350 | jmachado | 392 | } |
1326 | jmachado | 393 | if(teacher || responsable) |
394 | { |
||
1353 | jmachado | 395 | s.addClearance(CourseUnitClearancesOperation.STATISTICS_CAN_VIEW.name(),usession); |
1326 | jmachado | 396 | //s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_TEACHER.name(), usession); |
397 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITION.name(),usession); |
||
398 | if(active && isEdit) |
||
399 | { |
||
400 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession); |
||
401 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession); |
||
402 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_COMPLETE.name(),usession); |
||
403 | } |
||
404 | } |
||
405 | |||
1350 | jmachado | 406 | if(isCoordinator) |
1326 | jmachado | 407 | { |
1353 | jmachado | 408 | s.addClearance(CourseUnitClearancesOperation.STATISTICS_CAN_VIEW.name(),usession); |
1350 | jmachado | 409 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_CAN_VALIDATE.name(),usession); |
410 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_COMMISSION.name(), usession); |
||
411 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITION.name(), usession); |
||
412 | if(active && isEdit) |
||
413 | { |
||
414 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession); |
||
415 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession); |
||
416 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_COMISSION_PART.name(),usession); |
||
417 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_COMPLETE.name(),usession); |
||
418 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_CLOSE.name(),usession); |
||
419 | } |
||
420 | else if(active && isComplete) |
||
421 | { |
||
422 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITSAVE.name(),usession); |
||
423 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_TEACHER_PART.name(),usession); |
||
424 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_PERSIST_COMISSION_PART.name(),usession); |
||
425 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_CLOSE.name(),usession); |
||
426 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_EDIT.name(),usession); |
||
427 | } |
||
428 | else if(active && isClosed) |
||
429 | { |
||
430 | s.addClearance(CourseUnitClearancesOperation.EVALUATION_TRANSITATE_TO_EDIT.name(),usession); |
||
431 | } |
||
1326 | jmachado | 432 | } |
1350 | jmachado | 433 | |
434 | |||
435 | if(!c.isValidProgram()) |
||
1326 | jmachado | 436 | { |
1350 | jmachado | 437 | if(teacher) |
1365 | jmachado | 438 | { |
439 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_EDIT_PROGRAM.name(), usession); |
||
1350 | jmachado | 440 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_TEACHER_PART.name(), usession); |
1365 | jmachado | 441 | } |
1350 | jmachado | 442 | if(isCoordinator) |
443 | { |
||
1365 | jmachado | 444 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_EDIT_PROGRAM.name(), usession); |
1350 | jmachado | 445 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_TEACHER_PART.name(), usession); |
446 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_COORDINATOR_PART.name(), usession); |
||
447 | } |
||
1326 | jmachado | 448 | } |
1350 | jmachado | 449 | else |
1326 | jmachado | 450 | { |
1350 | jmachado | 451 | s.addClearance(CourseUnitClearancesOperation.PROGRAM_INFO_VALID_NOT_ACTIVE.name(), usession); |
1326 | jmachado | 452 | } |
1350 | jmachado | 453 | |
1326 | jmachado | 454 | } |
1350 | jmachado | 455 | |
1326 | jmachado | 456 | c.setClearanceRuledSupport(s); |
457 | } |
||
458 | |||
1312 | jmachado | 459 | public static enum CourseUnitClearancesOperation |
460 | { |
||
461 | EVALUATION_ALL, //SPECIAL OPERATION FOR DENY AND PERMIT REPLACE FULL CONTROL |
||
462 | |||
463 | //COURSE UNIT EVALUATION |
||
464 | EVALUATION_PERSIST_TEACHER_PART, //SERVICE PERSIST THIS PART |
||
465 | EVALUATION_PERSIST_COMISSION_PART, //SERVICE PERSIST THIS PART |
||
466 | |||
467 | EVALUATION_EDITION, //CAN SEE EDITION SCREEN |
||
468 | EVALUATION_EDITSAVE, //CAN PRESS SAVE |
||
469 | EVALUATION_TRANSITATE_TO_COMPLETE, //CAN_TRANSITATE |
||
470 | EVALUATION_TRANSITATE_TO_CLOSE, //CAN CLOSE |
||
471 | EVALUATION_TRANSITATE_TO_EDIT, //CAN REVERT |
||
472 | |||
473 | EVALUATION_INFO_ACTIVE, //INFO CLEARANCE WHEN ACTIVE |
||
474 | EVALUATION_INFO_ACTIVE_SPECIAL_ADMIN, //INFO CLEARANCE REASON OF BEING ACTIVE |
||
475 | EVALUATION_INFO_ACTIVE_REGULAR_PERIOD, //INFO CLEARANCE REASON OF BEING ACTIVE |
||
476 | |||
477 | EVALUATION_INFO_STATE_EDIT, //INFO CLEARANCE |
||
478 | EVALUATION_INFO_STATE_COMPLETE, //INFO CLEARANCE |
||
479 | EVALUATION_INFO_STATE_CLOSED, //INFO CLEARANCE |
||
480 | |||
481 | EVALUATION_INFO_USER_TEACHER, //INFO CLEARANCE |
||
482 | EVALUATION_INFO_USER_RESP_TEACHER, //INFO CLEARANCE |
||
483 | EVALUATION_INFO_USER_COMMISSION, //INFO CLEARANCE |
||
484 | |||
1350 | jmachado | 485 | |
1365 | jmachado | 486 | PROGRAM_EDIT_PROGRAM, |
1350 | jmachado | 487 | PROGRAM_COORDINATOR_PART, |
488 | PROGRAM_TEACHER_PART, |
||
1365 | jmachado | 489 | |
1350 | jmachado | 490 | PROGRAM_CAN_VALIDATE, |
1353 | jmachado | 491 | PROGRAM_INFO_VALID_NOT_ACTIVE, |
1350 | jmachado | 492 | |
1353 | jmachado | 493 | STATISTICS_CAN_VIEW, |
494 | |||
495 | |||
1312 | jmachado | 496 | ; |
497 | |||
498 | public static CourseUnitClearancesOperation parse(1.5.0/docs/api/java/lang/String.html">String clearance) |
||
499 | { |
||
500 | if(clearance == null) |
||
501 | return null; |
||
502 | for(CourseUnitClearancesOperation op: CourseUnitClearancesOperation.values()) |
||
503 | { |
||
504 | if(op.name().equals(clearance)) |
||
505 | return op; |
||
506 | } |
||
507 | return null; |
||
508 | } |
||
509 | } |
||
510 | |||
511 | |||
1776 | jmachado | 512 | public Tipologias getTipologiasClass() throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1312 | jmachado | 513 | { |
514 | return Tipologias.deserialize(getTipologias()); |
||
515 | } |
||
516 | |||
1776 | jmachado | 517 | public void setTipologiasClass(Tipologias tipologias) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1312 | jmachado | 518 | { |
519 | if(tipologias != null) |
||
520 | setTipologias(tipologias.serialize()); |
||
521 | } |
||
522 | |||
1406 | jmachado | 523 | public static class TipologiaLoadExeption extends 1.5.0/docs/api/java/lang/Exception.html">Exception |
1313 | jmachado | 524 | { |
1406 | jmachado | 525 | boolean teacherFail = false; |
526 | boolean turmaFail = false; |
||
527 | |||
528 | public TipologiaLoadExeption(boolean teacherFail, boolean turmaFail) { |
||
529 | this.teacherFail = teacherFail; |
||
530 | this.turmaFail = turmaFail; |
||
531 | } |
||
532 | |||
533 | public boolean isTeacherFail() { |
||
534 | return teacherFail; |
||
535 | } |
||
536 | |||
537 | public boolean isTurmaFail() { |
||
538 | return turmaFail; |
||
539 | } |
||
540 | |||
541 | @1.5.0/docs/api/java/lang/Override.html">Override |
||
542 | public 1.5.0/docs/api/java/lang/String.html">String getMessage() { |
||
543 | return "Professor: " + (teacherFail? "Falhou" : "OK") + " Turma: " + (turmaFail? "Falhou" : "OK"); |
||
544 | } |
||
545 | } |
||
546 | /** |
||
547 | * |
||
548 | * @param myTipo |
||
549 | * @return |
||
550 | */ |
||
551 | public TipologiaPersistent loadPersistent(Tipologia myTipo) throws TipologiaLoadExeption |
||
552 | { |
||
1313 | jmachado | 553 | TipologiaPersistent tipologiaPersistent = new TipologiaPersistent(); |
1626 | jmachado | 554 | tipologiaPersistent.tipologiaOriginal = myTipo; |
1313 | jmachado | 555 | tipologiaPersistent.setTeacher(DaoFactory.getTeacherDaoImpl().loadBySigesCode(1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(myTipo.getCdDocente()))); |
556 | tipologiaPersistent.setCourseUnitTurma(findTurma(myTipo.getCdTurma())); |
||
557 | if(tipologiaPersistent.getCourseUnitTurma() == null || tipologiaPersistent.getTeacher() == null) |
||
558 | { |
||
1338 | jmachado | 559 | logger.error("Turma ou professor nao encontrados enquanto fazia uma tipologia persistente: turma:" + myTipo.getCdTurma() + " teacher code: " + myTipo.getCdDocente()); |
1406 | jmachado | 560 | throw new TipologiaLoadExeption(tipologiaPersistent.getTeacher() == null,tipologiaPersistent.getCourseUnitTurma() == null); |
1313 | jmachado | 561 | } |
562 | return tipologiaPersistent; |
||
563 | } |
||
564 | |||
565 | public CourseUnitTurma findTurma(1.5.0/docs/api/java/lang/String.html">String turma) |
||
566 | { |
||
567 | if(getTurmas() == null) |
||
568 | return null; |
||
569 | for(CourseUnitTurma t: getTurmas()) |
||
570 | { |
||
571 | if(t.getTurma().equals(turma)) |
||
572 | return t; |
||
573 | } |
||
574 | return null; |
||
575 | } |
||
576 | |||
577 | |||
578 | public static class TipologiaPersistent |
||
579 | { |
||
580 | private Teacher teacher; |
||
581 | private CourseUnitTurma courseUnitTurma; |
||
1626 | jmachado | 582 | Tipologia tipologiaOriginal; |
583 | |||
584 | /*private String cdTipologia; |
||
1313 | jmachado | 585 | private Integer ocorrencias = 0; |
586 | protected boolean extra; |
||
587 | protected boolean horRef; |
||
1326 | jmachado | 588 | protected boolean use; //campo auxiliar para marcar se vai ser ou não usada nas afetacoes especificas |
589 | //por omissão apenas as que têm sumários |
||
1626 | jmachado | 590 | protected boolean markWarning; //camp*/ |
1313 | jmachado | 591 | |
1626 | jmachado | 592 | |
1326 | jmachado | 593 | public boolean isUse() { |
1626 | jmachado | 594 | return tipologiaOriginal.isUse(); |
1326 | jmachado | 595 | } |
596 | |||
597 | public void setUse(boolean use) { |
||
1626 | jmachado | 598 | tipologiaOriginal.use = use; |
1326 | jmachado | 599 | } |
600 | |||
601 | public boolean isMarkWarning() { |
||
1626 | jmachado | 602 | return tipologiaOriginal.markWarning; |
1326 | jmachado | 603 | } |
604 | |||
605 | public void setMarkWarning(boolean markWarning) { |
||
1626 | jmachado | 606 | tipologiaOriginal.markWarning = markWarning; |
1326 | jmachado | 607 | } |
608 | |||
1313 | jmachado | 609 | public boolean isExtra() { |
1626 | jmachado | 610 | return tipologiaOriginal.extra; |
1313 | jmachado | 611 | } |
612 | |||
613 | public boolean isHorRef() { |
||
1626 | jmachado | 614 | return tipologiaOriginal.horRef; |
1313 | jmachado | 615 | } |
616 | |||
617 | public boolean isSumario() { |
||
1626 | jmachado | 618 | return tipologiaOriginal.ocorrencias != null && tipologiaOriginal.ocorrencias > 0; |
1313 | jmachado | 619 | } |
620 | |||
621 | public void setExtra(boolean extra) { |
||
1626 | jmachado | 622 | tipologiaOriginal.extra = extra; |
1313 | jmachado | 623 | } |
624 | |||
625 | public void setHorRef(boolean horRef) { |
||
1626 | jmachado | 626 | tipologiaOriginal.horRef = horRef; |
1313 | jmachado | 627 | } |
628 | |||
629 | public Teacher getTeacher() { |
||
630 | return teacher; |
||
631 | } |
||
632 | |||
633 | public void setTeacher(Teacher teacher) { |
||
634 | this.teacher = teacher; |
||
635 | } |
||
636 | |||
637 | public CourseUnitTurma getCourseUnitTurma() { |
||
638 | return courseUnitTurma; |
||
639 | } |
||
640 | |||
641 | public void setCourseUnitTurma(CourseUnitTurma courseUnitTurma) { |
||
642 | this.courseUnitTurma = courseUnitTurma; |
||
643 | } |
||
644 | |||
645 | public 1.5.0/docs/api/java/lang/String.html">String getCdTipologia() { |
||
1626 | jmachado | 646 | return tipologiaOriginal.cdTipologia; |
1313 | jmachado | 647 | } |
648 | |||
649 | public void setCdTipologia(1.5.0/docs/api/java/lang/String.html">String cdTipologia) { |
||
1626 | jmachado | 650 | tipologiaOriginal.cdTipologia = cdTipologia; |
1313 | jmachado | 651 | } |
652 | |||
653 | public 1.5.0/docs/api/java/lang/Integer.html">Integer getOcorrencias() { |
||
1626 | jmachado | 654 | return tipologiaOriginal.ocorrencias == null ? 0:tipologiaOriginal.ocorrencias; |
1313 | jmachado | 655 | } |
656 | |||
657 | public void setOcorrencias(1.5.0/docs/api/java/lang/Integer.html">Integer ocorrencias) { |
||
1626 | jmachado | 658 | tipologiaOriginal.ocorrencias = ocorrencias; |
1313 | jmachado | 659 | } |
1626 | jmachado | 660 | |
661 | public boolean isExclude() { |
||
662 | return tipologiaOriginal.exclude; |
||
663 | } |
||
664 | |||
665 | public void setExclude(boolean exclude) { |
||
666 | tipologiaOriginal.exclude = exclude; |
||
667 | } |
||
1313 | jmachado | 668 | } |
1312 | jmachado | 669 | /** |
670 | * Os codigos de tipologia devem ser limitados a T TP OT etc |
||
671 | */ |
||
672 | public static class Tipologia |
||
673 | { |
||
1313 | jmachado | 674 | protected 1.5.0/docs/api/java/lang/String.html">String cdDocente; |
675 | protected 1.5.0/docs/api/java/lang/String.html">String cdTurma; |
||
676 | protected 1.5.0/docs/api/java/lang/String.html">String cdTipologia; |
||
677 | protected 1.5.0/docs/api/java/lang/String.html">String dsTipologia; |
||
1338 | jmachado | 678 | protected 1.5.0/docs/api/java/lang/Integer.html">Integer ocorrencias = 0; // apenas faz sentido nos sumarios. no horario ref nao. |
1312 | jmachado | 679 | |
1325 | jmachado | 680 | protected boolean use; //campo auxiliar para marcar se vai ser ou não usada nas afetacoes especificas |
681 | //por omissão apenas as que têm sumários |
||
682 | protected boolean markWarning; //campo auxiliar para marcar se vai ser ou não usada nas afetacoes especificas |
||
683 | |||
1313 | jmachado | 684 | protected boolean extra; |
685 | protected boolean horRef; |
||
1422 | jmachado | 686 | protected boolean tdocturma = false; |
1313 | jmachado | 687 | |
1626 | jmachado | 688 | //NOVO |
689 | protected boolean exclude = false; |
||
690 | |||
1422 | jmachado | 691 | public boolean isTdocturma() { |
692 | return tdocturma; |
||
693 | } |
||
694 | |||
695 | public void setTdocturma(boolean tdocturma) { |
||
696 | this.tdocturma = tdocturma; |
||
697 | } |
||
698 | |||
1325 | jmachado | 699 | public boolean isUse() { |
700 | return use; |
||
701 | } |
||
702 | |||
1626 | jmachado | 703 | public boolean isExclude() { |
704 | return exclude; |
||
705 | } |
||
706 | |||
707 | public void setExclude(boolean exclude) { |
||
708 | this.exclude = exclude; |
||
709 | } |
||
710 | |||
1325 | jmachado | 711 | public void setUse(boolean use) { |
712 | this.use = use; |
||
713 | } |
||
714 | |||
715 | public boolean isMarkWarning() { |
||
716 | return markWarning; |
||
717 | } |
||
718 | |||
719 | public void setMarkWarning(boolean markWarning) { |
||
720 | this.markWarning = markWarning; |
||
721 | } |
||
722 | |||
1312 | jmachado | 723 | public 1.5.0/docs/api/java/lang/Integer.html">Integer getOcorrencias() { |
1338 | jmachado | 724 | return ocorrencias == null ? 0:ocorrencias; |
1312 | jmachado | 725 | } |
726 | |||
1338 | jmachado | 727 | public boolean hasOcorrencias() { |
728 | return ocorrencias != null && ocorrencias > 0; |
||
729 | } |
||
730 | |||
1312 | jmachado | 731 | public void setOcorrencias(1.5.0/docs/api/java/lang/Integer.html">Integer ocorrencias) { |
732 | this.ocorrencias = ocorrencias; |
||
733 | } |
||
734 | |||
735 | public 1.5.0/docs/api/java/lang/String.html">String getCdDocente() { |
||
736 | return cdDocente; |
||
737 | } |
||
738 | |||
739 | public void setCdDocente(1.5.0/docs/api/java/lang/String.html">String cdDocente) { |
||
740 | this.cdDocente = cdDocente; |
||
741 | } |
||
742 | |||
743 | public 1.5.0/docs/api/java/lang/String.html">String getCdTurma() { |
||
744 | return cdTurma; |
||
745 | } |
||
746 | |||
747 | public void setCdTurma(1.5.0/docs/api/java/lang/String.html">String cdTurma) { |
||
748 | this.cdTurma = cdTurma; |
||
749 | } |
||
750 | |||
751 | public 1.5.0/docs/api/java/lang/String.html">String getCdTipologia() { |
||
752 | return cdTipologia; |
||
753 | } |
||
754 | |||
755 | public void setCdTipologia(1.5.0/docs/api/java/lang/String.html">String cdTipologia) { |
||
756 | this.cdTipologia = cdTipologia; |
||
757 | } |
||
758 | |||
1313 | jmachado | 759 | public 1.5.0/docs/api/java/lang/String.html">String getDsTipologia() { |
760 | return dsTipologia; |
||
761 | } |
||
762 | |||
763 | public void setDsTipologia(1.5.0/docs/api/java/lang/String.html">String dsTipologia) { |
||
764 | this.dsTipologia = dsTipologia; |
||
765 | } |
||
766 | |||
767 | public boolean isExtra() { |
||
768 | return extra; |
||
769 | } |
||
770 | |||
771 | public boolean isSumario() { |
||
772 | return ocorrencias != null && ocorrencias > 0; |
||
773 | } |
||
774 | |||
775 | public boolean isHorRef() { |
||
776 | return horRef; |
||
777 | } |
||
778 | |||
779 | |||
780 | |||
1312 | jmachado | 781 | @1.5.0/docs/api/java/lang/Override.html">Override |
782 | public boolean equals(5+0%2Fdocs%2Fapi+Object">Object o) |
||
783 | { |
||
1626 | jmachado | 784 | if(o instanceof Tipologia){ |
785 | boolean equalTurma = ( |
||
786 | (((Tipologia)o).getCdTurma() == null && getCdTurma() == null) |
||
787 | || |
||
788 | (((Tipologia)o).getCdTurma().equals(getCdTurma())) |
||
789 | ); |
||
790 | boolean equalDocente = ( |
||
791 | (((Tipologia)o).getCdDocente() == null && getCdDocente() == null) |
||
792 | || |
||
793 | (((Tipologia)o).getCdDocente().equals(getCdDocente())) |
||
794 | ); |
||
795 | if(equalTurma && equalDocente) |
||
796 | { |
||
1312 | jmachado | 797 | |
1626 | jmachado | 798 | if(((Tipologia)o).getCdTipologia() == null && getCdTipologia() == null) |
799 | return true; |
||
800 | if(((Tipologia)o).getCdTipologia().equals(getCdTipologia())) |
||
801 | return true; |
||
802 | //Se uma das tipologias é simples virtual tem de ser sempre igual à outra seja ela qual for |
||
803 | //pois a simples tem de fazer match em todas |
||
804 | if(((Tipologia)o).getCdTipologia().equals(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE) |
||
1312 | jmachado | 805 | || |
1626 | jmachado | 806 | getCdTipologia().equals(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE)) |
807 | return true; |
||
808 | } |
||
809 | } |
||
810 | return false; |
||
1312 | jmachado | 811 | } |
1313 | jmachado | 812 | |
813 | public boolean equalsIncDsFields(5+0%2Fdocs%2Fapi+Object">Object o) |
||
814 | { |
||
815 | return o instanceof Tipologia && |
||
816 | equals(o) |
||
817 | && |
||
818 | ( |
||
819 | (((Tipologia)o).getDsTipologia() == null && getDsTipologia() == null) |
||
820 | || |
||
821 | (((Tipologia)o).getDsTipologia().equals(getDsTipologia()))) |
||
822 | && |
||
823 | |||
824 | ( |
||
825 | (((Tipologia)o).getOcorrencias() == null && getOcorrencias() == null) |
||
826 | || |
||
827 | (((Tipologia)o).getOcorrencias().equals(getOcorrencias()))) |
||
828 | ; |
||
829 | } |
||
1312 | jmachado | 830 | } |
831 | |||
1626 | jmachado | 832 | public void canUse(1.5.0/docs/api/java/lang/String.html">String cdDocente,1.5.0/docs/api/java/lang/String.html">String cdTipologia,1.5.0/docs/api/java/lang/String.html">String cdTurma) |
833 | { |
||
834 | |||
835 | } |
||
836 | /** |
||
837 | * Marca uma tipologia como excluida em todas as Listas |
||
838 | * @param cdDocente |
||
839 | * @param cdTipologia |
||
840 | * @param cdTurma |
||
841 | */ |
||
842 | public void setExcludedTipologia(boolean excluded, 1.5.0/docs/api/java/lang/String.html">String cdDocente,1.5.0/docs/api/java/lang/String.html">String cdTipologia,1.5.0/docs/api/java/lang/String.html">String cdTurma) |
||
843 | { |
||
844 | try { |
||
1627 | jmachado | 845 | boolean found = false; |
1626 | jmachado | 846 | Tipologias tipoClass = getTipologiasClass(); |
847 | |||
848 | Tipologia proto = new Tipologia(); |
||
849 | proto.setCdDocente(cdDocente); |
||
850 | proto.setCdTipologia(cdTipologia); |
||
851 | proto.setCdTurma(cdTurma); |
||
852 | if(tipoClass.getTipologiasSumarios() != null) |
||
853 | for(Tipologia tipo: tipoClass.getTipologiasSumarios()) |
||
854 | { |
||
855 | if(tipo.equals(proto)) |
||
856 | { |
||
857 | tipo.setExclude(excluded); |
||
1627 | jmachado | 858 | found = true; |
1626 | jmachado | 859 | } |
860 | } |
||
861 | if(tipoClass.getTipologiasHorarioReferencia() != null) |
||
862 | for(Tipologia tipo: tipoClass.getTipologiasHorarioReferencia()) |
||
863 | { |
||
864 | if(tipo.equals(proto)) |
||
865 | { |
||
866 | tipo.setExclude(excluded); |
||
1627 | jmachado | 867 | found = true; |
1626 | jmachado | 868 | } |
869 | } |
||
870 | if(tipoClass.getTipologiasExtraAdicionadas() != null) |
||
871 | for(Tipologia tipo: tipoClass.getTipologiasExtraAdicionadas()) |
||
872 | { |
||
873 | if(tipo.equals(proto)) |
||
874 | { |
||
875 | tipo.setExclude(excluded); |
||
1627 | jmachado | 876 | found = true; |
1626 | jmachado | 877 | } |
878 | } |
||
879 | if(tipoClass.getTipologiasTdocTurma() != null) |
||
880 | for(Tipologia tipo: tipoClass.getTipologiasTdocTurma()) |
||
881 | { |
||
882 | if(tipo.equals(proto)) |
||
883 | { |
||
884 | tipo.setExclude(excluded); |
||
1627 | jmachado | 885 | found = true; |
1626 | jmachado | 886 | } |
887 | } |
||
1627 | jmachado | 888 | if(!found) |
889 | { |
||
890 | logger.info("Tipologia não encontrada para excluir, provavelmente é uma tipologia que foi carregada da lista de docentes por não pertencer às tipologias"); |
||
891 | logger.info("Vamos adicionar tipologia Extra à lista de tipologias da unidade"); |
||
892 | Tipologia tipoExtra = new Tipologia(); |
||
893 | tipoExtra.cdDocente = cdDocente; |
||
894 | tipoExtra.cdTurma = cdTurma; |
||
895 | tipoExtra.cdTipologia = Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE; |
||
896 | tipoExtra.dsTipologia = Globals.BACO_TIPOLOGIA_SIMPLES_DS; |
||
897 | tipoExtra.extra = true; |
||
898 | tipoExtra.exclude = true; |
||
899 | if(tipoClass.getTipologiasExtraAdicionadas() == null) |
||
900 | tipoClass.setTipologiasExtraAdicionadas(new ArrayList<Tipologia>()); |
||
901 | tipoClass.getTipologiasExtraAdicionadas().add(tipoExtra); |
||
902 | } |
||
1626 | jmachado | 903 | |
904 | setTipologiasClass(tipoClass); |
||
905 | |||
906 | } catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e) { |
||
907 | logger.error(e,e); |
||
908 | } |
||
909 | } |
||
910 | |||
1326 | jmachado | 911 | public static class MergedTipologias |
912 | { |
||
913 | ArrayList<Tipologia> tipologiasWithMarkedAndUsed = new ArrayList<Tipologia>(); |
||
914 | |||
915 | public ArrayList<Tipologia> getTipologiasWithMarkedAndUsed() { |
||
916 | return tipologiasWithMarkedAndUsed; |
||
917 | } |
||
918 | |||
919 | public void setTipologiasWithMarkedAndUsed(ArrayList<Tipologia> tipologiasWithMarkedAndUsed) { |
||
920 | this.tipologiasWithMarkedAndUsed = tipologiasWithMarkedAndUsed; |
||
921 | } |
||
922 | } |
||
1312 | jmachado | 923 | public static class Tipologias |
924 | { |
||
1313 | jmachado | 925 | ArrayList<Tipologia> tipologiasHorarioReferencia = new ArrayList<Tipologia>(); |
926 | ArrayList<Tipologia> tipologiasSumarios = new ArrayList<Tipologia>(); |
||
927 | ArrayList<Tipologia> tipologiasExtraAdicionadas = new ArrayList<Tipologia>(); |
||
1326 | jmachado | 928 | ArrayList<Tipologia> tipologiasUsadas = new ArrayList<Tipologia>(); |
929 | ArrayList<Tipologia> tipologiasMarcadas = new ArrayList<Tipologia>(); |
||
1422 | jmachado | 930 | ArrayList<Tipologia> tipologiasTdocTurma = new ArrayList<Tipologia>(); |
1312 | jmachado | 931 | |
1422 | jmachado | 932 | public ArrayList<Tipologia> getTipologiasTdocTurma() { |
933 | return tipologiasTdocTurma == null ? new ArrayList<Tipologia>() : tipologiasTdocTurma; |
||
934 | } |
||
935 | |||
936 | public void setTipologiasTdocTurma(ArrayList<Tipologia> tipologiasTdocTurma) { this.tipologiasTdocTurma = tipologiasTdocTurma; } |
||
937 | |||
1312 | jmachado | 938 | public ArrayList<Tipologia> getTipologiasHorarioReferencia() { |
1333 | jmachado | 939 | |
940 | return tipologiasHorarioReferencia == null ? new ArrayList<Tipologia>() : tipologiasHorarioReferencia; |
||
941 | |||
1312 | jmachado | 942 | } |
943 | |||
944 | public void setTipologiasHorarioReferencia(ArrayList<Tipologia> tipologiasHorarioReferencia) { |
||
945 | this.tipologiasHorarioReferencia = tipologiasHorarioReferencia; |
||
946 | } |
||
947 | |||
948 | public ArrayList<Tipologia> getTipologiasSumarios() { |
||
1333 | jmachado | 949 | return tipologiasSumarios == null ? new ArrayList<Tipologia>() : tipologiasSumarios; |
1312 | jmachado | 950 | } |
951 | |||
952 | public void setTipologiasSumarios(ArrayList<Tipologia> tipologiasSumarios) { |
||
953 | this.tipologiasSumarios = tipologiasSumarios; |
||
954 | } |
||
955 | |||
956 | public ArrayList<Tipologia> getTipologiasExtraAdicionadas() { |
||
1333 | jmachado | 957 | return tipologiasExtraAdicionadas == null ? new ArrayList<Tipologia>() : tipologiasExtraAdicionadas; |
1312 | jmachado | 958 | } |
959 | |||
960 | public void setTipologiasExtraAdicionadas(ArrayList<Tipologia> tipologiasExtraAdicionadas) { |
||
961 | this.tipologiasExtraAdicionadas = tipologiasExtraAdicionadas; |
||
962 | } |
||
963 | |||
1333 | jmachado | 964 | public ArrayList<Tipologia> getTipologiasUsadas() { |
965 | return tipologiasUsadas == null ? new ArrayList<Tipologia>() : tipologiasUsadas; |
||
966 | } |
||
1326 | jmachado | 967 | |
968 | public void setTipologiasUsadas(ArrayList<Tipologia> tipologiasUsadas) { this.tipologiasUsadas = tipologiasUsadas; } |
||
969 | |||
1333 | jmachado | 970 | public ArrayList<Tipologia> getTipologiasMarcadas() { |
971 | return tipologiasMarcadas == null ? new ArrayList<Tipologia>() : tipologiasMarcadas; |
||
972 | } |
||
1326 | jmachado | 973 | |
974 | public void setTipologiasMarcadas(ArrayList<Tipologia> tipologiasMarcadas) { this.tipologiasMarcadas = tipologiasMarcadas; } |
||
975 | |||
1312 | jmachado | 976 | private static Genson getGenson(){ |
977 | Genson genson = new Genson.Builder() |
||
978 | .exclude(5+0%2Fdocs%2Fapi+Object">Object.class) |
||
1778 | jmachado | 979 | .include(1.5.0/docs/api/java/lang/Boolean.html">Boolean.class) |
980 | .include(1.5.0/docs/api/java/lang/Integer.html">Integer.class) |
||
981 | .include(1.5.0/docs/api/java/lang/Long.html">Long.class) |
||
982 | .include(1.5.0/docs/api/java/lang/Double.html">Double.class) |
||
983 | .include(1.5.0/docs/api/java/lang/Float.html">Float.class) |
||
1312 | jmachado | 984 | .include("tipologiasExtraAdicionadas", Tipologias.class) |
985 | .include("tipologiasSumarios", Tipologias.class) |
||
986 | .include("tipologiasHorarioReferencia", Tipologias.class) |
||
1326 | jmachado | 987 | .include("tipologiasUsadas", Tipologias.class) |
988 | .include("tipologiasMarcadas", Tipologias.class) |
||
1422 | jmachado | 989 | .include("tipologiasTdocTurma", Tipologias.class) |
1312 | jmachado | 990 | .include("cdTipologia", Tipologia.class) |
991 | .include("cdDocente", Tipologia.class) |
||
992 | .include("cdTurma", Tipologia.class) |
||
1313 | jmachado | 993 | .include("dsTipologia",Tipologia.class) |
1312 | jmachado | 994 | .include("ocorrencias", Tipologia.class) |
1422 | jmachado | 995 | .include("tdocturma", Tipologia.class) |
1626 | jmachado | 996 | .include("exclude", Tipologia.class) |
1312 | jmachado | 997 | .create(); |
998 | return genson; |
||
999 | } |
||
1000 | |||
1326 | jmachado | 1001 | private static Genson getGensonMergedTipologiasComplete(){ |
1002 | Genson genson = new Genson.Builder() |
||
1003 | .exclude(5+0%2Fdocs%2Fapi+Object">Object.class) |
||
1778 | jmachado | 1004 | .include(1.5.0/docs/api/java/lang/Boolean.html">Boolean.class) |
1005 | .include(1.5.0/docs/api/java/lang/Integer.html">Integer.class) |
||
1006 | .include(1.5.0/docs/api/java/lang/Long.html">Long.class) |
||
1007 | .include(1.5.0/docs/api/java/lang/Double.html">Double.class) |
||
1008 | .include(1.5.0/docs/api/java/lang/Float.html">Float.class) |
||
1326 | jmachado | 1009 | .include("tipologiasWithMarkedAndUsed", MergedTipologias.class) |
1010 | .include("cdTipologia", Tipologia.class) |
||
1011 | .include("cdDocente", Tipologia.class) |
||
1012 | .include("cdTurma", Tipologia.class) |
||
1013 | .include("dsTipologia",Tipologia.class) |
||
1014 | .include("ocorrencias", Tipologia.class) |
||
1015 | .include("horRef", Tipologia.class) |
||
1626 | jmachado | 1016 | .include("exclude", Tipologia.class) |
1326 | jmachado | 1017 | .include("extra", Tipologia.class) |
1018 | .include("use", Tipologia.class) |
||
1422 | jmachado | 1019 | .include("tdocturma", Tipologia.class) |
1326 | jmachado | 1020 | .include("markWarning", Tipologia.class) |
1021 | .create(); |
||
1022 | return genson; |
||
1023 | } |
||
1024 | |||
1776 | jmachado | 1025 | public 1.5.0/docs/api/java/lang/String.html">String serialize() throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1312 | jmachado | 1026 | { |
1027 | Genson genson = getGenson(); |
||
1776 | jmachado | 1028 | |
1312 | jmachado | 1029 | return genson.serialize(this); |
1776 | jmachado | 1030 | |
1312 | jmachado | 1031 | } |
1776 | jmachado | 1032 | public static Tipologias deserialize(1.5.0/docs/api/java/lang/String.html">String serial) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1312 | jmachado | 1033 | { |
1034 | if(serial == null) |
||
1333 | jmachado | 1035 | return new Tipologias(); |
1776 | jmachado | 1036 | |
1312 | jmachado | 1037 | return getGenson().deserialize(serial, Tipologias.class); |
1776 | jmachado | 1038 | |
1312 | jmachado | 1039 | } |
1040 | |||
1041 | public static void main(1.5.0/docs/api/java/lang/String.html">String [] args) |
||
1042 | { |
||
1043 | new TestCourseUnit().testTipologias(); |
||
1044 | } |
||
1313 | jmachado | 1045 | |
1776 | jmachado | 1046 | public static 1.5.0/docs/api/java/lang/String.html">String serializeMergedList(ArrayList<Tipologia> tipologias) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1313 | jmachado | 1047 | { |
1326 | jmachado | 1048 | MergedTipologias mergedTipologias = new MergedTipologias(); |
1333 | jmachado | 1049 | if(tipologias != null) |
1050 | { |
||
1051 | mergedTipologias.setTipologiasWithMarkedAndUsed(tipologias); |
||
1052 | } |
||
1326 | jmachado | 1053 | Genson genson = getGensonMergedTipologiasComplete(); |
1776 | jmachado | 1054 | |
1326 | jmachado | 1055 | return genson.serialize(mergedTipologias); |
1776 | jmachado | 1056 | |
1326 | jmachado | 1057 | } |
1776 | jmachado | 1058 | public static ArrayList<Tipologia> deserializeMergedTipologias(1.5.0/docs/api/java/lang/String.html">String serial) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1326 | jmachado | 1059 | { |
1060 | if(serial == null) |
||
1333 | jmachado | 1061 | return new ArrayList<Tipologia>(); |
1776 | jmachado | 1062 | |
1326 | jmachado | 1063 | MergedTipologias mergedTipologias = getGensonMergedTipologiasComplete().deserialize(serial, MergedTipologias.class); |
1064 | if(mergedTipologias.getTipologiasWithMarkedAndUsed() == null) |
||
1065 | return new ArrayList<Tipologia>(); |
||
1066 | return mergedTipologias.getTipologiasWithMarkedAndUsed(); |
||
1776 | jmachado | 1067 | |
1068 | |||
1326 | jmachado | 1069 | } |
1776 | jmachado | 1070 | public 1.5.0/docs/api/java/lang/String.html">String obtainMergeTipologiasSerialized() throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1332 | jmachado | 1071 | { |
1072 | return serializeMergedList(obtainMergeTipologias()); |
||
1073 | } |
||
1337 | jmachado | 1074 | |
1387 | jmachado | 1075 | |
1626 | jmachado | 1076 | |
1077 | |||
1387 | jmachado | 1078 | /** |
1623 | jmachado | 1079 | * Junta todas as tipologias obtidas dos |
1080 | * sumarios, horario(ref+trab) + extra + tdoc turma |
||
1626 | jmachado | 1081 | * As restantes listas são as marcadas e as usadas |
1623 | jmachado | 1082 | * que apenas estarão disponiveis quando houver gestão de marcação de tipologias |
1387 | jmachado | 1083 | * e coloca todas numa lista de unicas |
1084 | * Marca-as com isHorario, isSumario, isExtra |
||
1085 | * @return |
||
1086 | */ |
||
1087 | |||
1326 | jmachado | 1088 | public ArrayList<Tipologia> obtainMergeTipologias() |
1089 | { |
||
1090 | ArrayList<Tipologia> merge = new ArrayList<Tipologia>(); |
||
1315 | jmachado | 1091 | if(getTipologiasSumarios() != null) |
1092 | merge.addAll(getTipologiasSumarios()); |
||
1313 | jmachado | 1093 | |
1623 | jmachado | 1094 | |
1095 | /** |
||
1096 | * OBTER TODAS DAS LISTAS SUMARIOS HORARIOS EXTRA E TDOC TURMA |
||
1097 | */ |
||
1315 | jmachado | 1098 | if(getTipologiasHorarioReferencia() != null) |
1099 | for(Tipologia tipo: getTipologiasHorarioReferencia()) |
||
1313 | jmachado | 1100 | { |
1315 | jmachado | 1101 | if(!merge.contains(tipo)) |
1102 | { |
||
1103 | merge.add(tipo); |
||
1104 | } |
||
1313 | jmachado | 1105 | } |
1315 | jmachado | 1106 | if(getTipologiasExtraAdicionadas() != null) |
1107 | for(Tipologia tipo: getTipologiasExtraAdicionadas()) |
||
1313 | jmachado | 1108 | { |
1315 | jmachado | 1109 | if(!merge.contains(tipo)) |
1110 | { |
||
1111 | merge.add(tipo); |
||
1112 | } |
||
1313 | jmachado | 1113 | } |
1623 | jmachado | 1114 | if(getTipologiasTdocTurma() != null) |
1115 | for(Tipologia tipo: getTipologiasTdocTurma()) |
||
1116 | { |
||
1117 | if(!merge.contains(tipo)) |
||
1118 | { |
||
1119 | merge.add(tipo); |
||
1120 | } |
||
1121 | } |
||
1122 | |||
1123 | /** |
||
1124 | * FIM DE OBTER TODAS DAS LISTAS SUMARIOS HORARIOS EXTRA E TDOC TURMA |
||
1125 | */ |
||
1126 | |||
1127 | |||
1128 | |||
1313 | jmachado | 1129 | for(Tipologia tipo: merge) |
1130 | { |
||
1326 | jmachado | 1131 | tipo.setMarkWarning(false); |
1132 | tipo.setUse(false); |
||
1315 | jmachado | 1133 | if(getTipologiasHorarioReferencia() != null && getTipologiasHorarioReferencia().contains(tipo)) |
1313 | jmachado | 1134 | { |
1135 | tipo.horRef = true; |
||
1136 | } |
||
1137 | |||
1315 | jmachado | 1138 | if(getTipologiasExtraAdicionadas() != null && getTipologiasExtraAdicionadas().contains(tipo)) |
1313 | jmachado | 1139 | { |
1140 | tipo.extra = true; |
||
1141 | } |
||
1623 | jmachado | 1142 | //NOVO |
1143 | if(getTipologiasTdocTurma() != null && getTipologiasTdocTurma().contains(tipo)) |
||
1144 | { |
||
1145 | tipo.tdocturma = true; |
||
1146 | } |
||
1313 | jmachado | 1147 | } |
1326 | jmachado | 1148 | |
1149 | if(getTipologiasMarcadas() != null) |
||
1150 | for(Tipologia t: getTipologiasMarcadas()) |
||
1151 | { |
||
1152 | for(Tipologia tMerge: merge) |
||
1153 | { |
||
1154 | if(tMerge.equals(t)) |
||
1155 | { |
||
1156 | tMerge.setMarkWarning(true); |
||
1157 | break; |
||
1158 | } |
||
1159 | } |
||
1160 | } |
||
1161 | if(getTipologiasUsadas() != null) |
||
1162 | for(Tipologia t: getTipologiasUsadas()) |
||
1163 | { |
||
1164 | for(Tipologia tMerge: merge) |
||
1165 | { |
||
1166 | if(tMerge.equals(t)) |
||
1167 | { |
||
1168 | tMerge.setUse(true); |
||
1169 | break; |
||
1170 | } |
||
1171 | } |
||
1172 | } |
||
1626 | jmachado | 1173 | //NAO SERVE PARA NADA |
1422 | jmachado | 1174 | if(getTipologiasTdocTurma() != null) |
1175 | for(Tipologia t: getTipologiasTdocTurma()) |
||
1176 | { |
||
1177 | for(Tipologia tMerge: merge) |
||
1178 | { |
||
1179 | if(tMerge.equals(t)) |
||
1180 | { |
||
1181 | tMerge.setUse(true); |
||
1182 | break; |
||
1183 | } |
||
1184 | } |
||
1185 | } |
||
1313 | jmachado | 1186 | return merge; |
1187 | } |
||
1188 | |||
1387 | jmachado | 1189 | /** |
1190 | * |
||
1191 | * |
||
1192 | * @param courseUnit |
||
1193 | * @return |
||
1194 | */ |
||
1337 | jmachado | 1195 | public ArrayList<Tipologia> obtainTipologiasSimples(CourseUnit courseUnit) |
1196 | { |
||
1197 | ArrayList<Tipologia> merge = new ArrayList<Tipologia>(); |
||
1198 | |||
1199 | Map<String,Map<String,Tipologia>> docenteTurmas = new HashMap<String,Map<String,Tipologia>>(); |
||
1200 | |||
1201 | fullfillTipologiasSimples(getTipologiasSumarios(), docenteTurmas); |
||
1202 | fullfillTipologiasSimples(getTipologiasExtraAdicionadas(), docenteTurmas); |
||
1203 | fullfillTipologiasSimples(getTipologiasHorarioReferencia(), docenteTurmas); |
||
1204 | fullfillTipologiasSimples(getTipologiasMarcadas(), docenteTurmas); |
||
1205 | fullfillTipologiasSimples(getTipologiasUsadas(), docenteTurmas); |
||
1422 | jmachado | 1206 | fullfillTipologiasSimples(getTipologiasTdocTurma(), docenteTurmas); |
1337 | jmachado | 1207 | |
1208 | |||
1209 | if(docenteTurmas.size() == 0) |
||
1210 | { |
||
1211 | //NAO Há sumários vamos associar todos os docentes a todas as turmas |
||
1779 | jmachado | 1212 | obtainTipologiasSimplesParaEstesTeachersParaTodasAsTurmas(courseUnit, new HashSet<Teacher>(courseUnit.getTeachers()), merge); |
1337 | jmachado | 1213 | } |
1214 | else |
||
1215 | { |
||
1216 | for(1.5.0/docs/api/java/util/Map.html">Map.Entry<String,Map<String,Tipologia>> docentes: docenteTurmas.entrySet()) |
||
1217 | { |
||
1218 | for(Tipologia tipologia: docentes.getValue().values()) |
||
1219 | { |
||
1220 | merge.add(tipologia); |
||
1221 | } |
||
1222 | } |
||
1622 | jmachado | 1223 | //NOVO |
1224 | //FRAGMENTO PARA OS QUE FALTAM APENAS POR SEGURANÇA JA DEVIAM TER VINDO DO T_DOC_TURMA |
||
1225 | //DO SINC |
||
1226 | //NO LOCAL ONDE AS TIPOLOGIAS SAO INCIALIZADAS NO IMPORT |
||
1227 | //ISTO E MAU PORQUE SE HOUVER TURMAS OS DOCENTES SAO ASSOCIADOS |
||
1228 | //A TODAS E SO DEVERIAM SER ASSOCIADOS AS QUE ESTAO ASSOCAIDOS NO SIGES |
||
1229 | //POR ISSO E QUE ISTO SO SE RESOLVE NO DisciplinaDao durante a Sincronizacao |
||
1230 | //para saber as relacoes TDOC TURMA |
||
1231 | Map<String,Teacher> professoresEsperados = new HashMap<String, Teacher>(); |
||
1232 | for(Teacher t: courseUnit.getTeachers()) |
||
1233 | { |
||
1234 | professoresEsperados.put(t.getSigesCode() + "", t); |
||
1235 | } |
||
1236 | |||
1237 | for(CourseUnitImpl.Tipologia tMerge: merge) |
||
1238 | { |
||
1239 | professoresEsperados.remove(tMerge.getCdDocente()); |
||
1240 | } |
||
1779 | jmachado | 1241 | obtainTipologiasSimplesParaEstesTeachersParaTodasAsTurmas(courseUnit, professoresEsperados.values(), merge); |
1622 | jmachado | 1242 | //FRAGMENTO EM FALTA PARA INTRODUZIR PROFS SEM SUMARIO |
1243 | |||
1244 | |||
1245 | |||
1337 | jmachado | 1246 | } |
1622 | jmachado | 1247 | |
1248 | |||
1337 | jmachado | 1249 | return merge; |
1250 | } |
||
1251 | |||
1779 | jmachado | 1252 | private void obtainTipologiasSimplesParaEstesTeachersParaTodasAsTurmas(CourseUnit courseUnit, Collection<Teacher> teachers, ArrayList<Tipologia> merge) { |
1622 | jmachado | 1253 | if(courseUnit.getTurmas() != null && courseUnit.getTeachers() != null) |
1254 | { |
||
1255 | for(CourseUnitTurma turma: courseUnit.getTurmas()) |
||
1256 | { |
||
1257 | for(Teacher t : teachers) |
||
1258 | { |
||
1259 | Tipologia simples = new Tipologia(); |
||
1260 | simples.setMarkWarning(true); |
||
1261 | //simples.setUse(true); |
||
1262 | simples.setCdDocente(""+t.getSigesCode()); |
||
1263 | simples.setCdTurma(turma.getTurma()); |
||
1264 | simples.setCdTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE); |
||
1265 | simples.setDsTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_DS); |
||
1266 | merge.add(simples); |
||
1267 | } |
||
1268 | } |
||
1269 | } |
||
1270 | } |
||
1271 | |||
1387 | jmachado | 1272 | /** |
1273 | * Cria uma tipologia Simples para cada par Docente-Turma nesta cadeira olhando para |
||
1274 | * todas as tipologias existentes, uma vez que o Baco não guarda associações entre |
||
1275 | * Docentes e Turmas isso será retirado das tipologias importadas |
||
1276 | * |
||
1277 | * @param tipologias |
||
1278 | * @param docenteTurmas |
||
1279 | */ |
||
1337 | jmachado | 1280 | private void fullfillTipologiasSimples(ArrayList<Tipologia> tipologias, Map<String, Map<String, Tipologia>> docenteTurmas) { |
1281 | if(tipologias != null) |
||
1282 | for(Tipologia tipo: tipologias) |
||
1283 | { |
||
1284 | Map<String,Tipologia> turmasDocente = docenteTurmas.get(tipo.getCdDocente()); |
||
1285 | if(turmasDocente == null) |
||
1286 | turmasDocente = new HashMap<String,Tipologia>(); |
||
1287 | docenteTurmas.put(tipo.getCdDocente(),turmasDocente); |
||
1288 | Tipologia simples = turmasDocente.get(tipo.getCdTurma()); |
||
1623 | jmachado | 1289 | //Se nao tiver entrado o sumario vai entrar aqui como TDOC Turma com 0 ocorrencias |
1337 | jmachado | 1290 | if(simples==null) |
1291 | { |
||
1292 | simples = new Tipologia(); |
||
1293 | simples.setCdDocente(tipo.getCdDocente()); |
||
1294 | simples.setCdTurma(tipo.getCdTurma()); |
||
1295 | simples.setCdTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE); |
||
1296 | simples.setDsTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_DS); |
||
1387 | jmachado | 1297 | //simples.setUse(true);//TODAS USADAS |
1338 | jmachado | 1298 | if(tipo.hasOcorrencias()) |
1337 | jmachado | 1299 | { |
1300 | simples.setOcorrencias(tipo.getOcorrencias()); |
||
1301 | } |
||
1623 | jmachado | 1302 | turmasDocente.put(tipo.getCdTurma(), simples); |
1626 | jmachado | 1303 | if(tipo.isHorRef()) |
1304 | simples.horRef = true; |
||
1305 | if(tipo.isExtra()) |
||
1306 | simples.extra = true; |
||
1422 | jmachado | 1307 | if(tipo.isTdocturma()) |
1308 | simples.setTdocturma(true); |
||
1626 | jmachado | 1309 | if(tipo.isExclude()) |
1310 | simples.setExclude(true); |
||
1337 | jmachado | 1311 | } |
1623 | jmachado | 1312 | //se for tDocturma e ja tiver entrado como sumário nao entra aqui sequer |
1313 | //Nunca entra primeiro como TDOC Turma se já entrou como sumário |
||
1387 | jmachado | 1314 | else if(tipo.hasOcorrencias()) |
1337 | jmachado | 1315 | { |
1626 | jmachado | 1316 | if(tipo.isHorRef()) |
1317 | simples.horRef = true; |
||
1318 | if(tipo.isExtra()) |
||
1319 | simples.extra = true; |
||
1338 | jmachado | 1320 | if(simples.getOcorrencias() == null) |
1321 | simples.setOcorrencias(0); |
||
1337 | jmachado | 1322 | simples.setOcorrencias(simples.getOcorrencias()+tipo.getOcorrencias()); |
1422 | jmachado | 1323 | if(tipo.isTdocturma()) |
1324 | simples.setTdocturma(true); |
||
1626 | jmachado | 1325 | //Nao devera fazer falta porque quando excluimos uma simples excluimos todas |
1326 | if(tipo.isExclude()) |
||
1327 | simples.setExclude(true); |
||
1337 | jmachado | 1328 | } |
1329 | |||
1330 | } |
||
1331 | } |
||
1332 | |||
1333 | |||
1312 | jmachado | 1334 | } |
1335 | |||
1336 | |||
1546 | jmachado | 1337 | /**Services**/ |
1312 | jmachado | 1338 | |
1546 | jmachado | 1339 | /** |
1340 | * Require Open Transaction |
||
1341 | * @return 1, 2, 3, 4 |
||
1342 | */ |
||
1343 | public int getAnoPlanoFromStudiesPlan() |
||
1344 | { |
||
1345 | CourseImpl courseImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().narrow(getCourse()); |
||
1781 | jmachado | 1346 | 1.5.0/docs/api/java/lang/Integer.html">Integer ano = courseImpl.getUnidadeAnoPlano(getSemestre(),getCode()); |
1347 | if(ano == null) |
||
1348 | return -1; |
||
1349 | else |
||
1350 | return ano; |
||
1546 | jmachado | 1351 | } |
1312 | jmachado | 1352 | |
1546 | jmachado | 1353 | /** |
1354 | * Require Open Transaction |
||
1355 | * @return S1, .., S8, T1 .. T8, A1 .. A4 |
||
1356 | */ |
||
1357 | public 1.5.0/docs/api/java/lang/String.html">String getPeriodoPlanoFromStudiesPlan() |
||
1358 | { |
||
1359 | CourseImpl courseImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().narrow(getCourse()); |
||
1547 | jmachado | 1360 | return courseImpl.getUnidadePeriodoPlano(getSemestre(), getCode()); |
1546 | jmachado | 1361 | } |
1312 | jmachado | 1362 | |
1546 | jmachado | 1363 | /** |
1364 | * Require Open Transaction |
||
1365 | * @return S1 = 1, S2 = 2,S3 = 3,S4 = 4 ...T1 e T2 = 1, T2 e T3 = 2, T4 e T5 = 3 ... |
||
1366 | */ |
||
1367 | public int getSemestrePlanoConvertido() |
||
1368 | { |
||
1369 | CourseImpl courseImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().narrow(getCourse()); |
||
1781 | jmachado | 1370 | 1.5.0/docs/api/java/lang/Integer.html">Integer semestre = courseImpl.getUnidadeSemestrePlanoConvertido(getSemestre(), getCode()); |
1371 | if(semestre == null) |
||
1372 | return -1; |
||
1373 | else |
||
1374 | return semestre; |
||
1546 | jmachado | 1375 | } |
1376 | |||
1377 | /** |
||
1378 | * Require Open Transaction |
||
1379 | * @return S1 = 1, S2 = 2, S3 = 1, S4 = 2 ... T1 e T2 = 1, T2 e T3 = 2, T4 e T5 = 1, T6 e T7 = 2 |
||
1380 | */ |
||
1381 | public int getSemestrePlanoAbsoluto() |
||
1382 | { |
||
1547 | jmachado | 1383 | 1.5.0/docs/api/java/lang/String.html">String id = getSemestre(); |
1384 | if(id.equals("S1")) |
||
1385 | return 1; |
||
1386 | else if(id.equals("S2")) |
||
1387 | return 2; |
||
1388 | else if(id.equals("A")) |
||
1389 | return -1; |
||
1546 | jmachado | 1390 | |
1547 | jmachado | 1391 | else if(id.equals("T1")) |
1392 | return 1; |
||
1393 | else if(id.equals("T2")) |
||
1394 | return 1; |
||
1395 | else if(id.equals("T3")) |
||
1396 | return 2; |
||
1397 | else if(id.equals("T4")) |
||
1398 | return 2; |
||
1546 | jmachado | 1399 | |
1400 | |||
1547 | jmachado | 1401 | return -1; |
1546 | jmachado | 1402 | |
1547 | jmachado | 1403 | } |
1546 | jmachado | 1404 | |
1547 | jmachado | 1405 | |
112 | jmachado | 1406 | } |