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