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