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