Rev 1860 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1860 | Rev 1876 | ||
---|---|---|---|
Line 7... | Line 7... | ||
7 | import jomm.utils.BytesUtils; |
7 | import jomm.utils.BytesUtils; |
8 | import jomm.utils.FilesUtils; |
8 | import jomm.utils.FilesUtils; |
9 | import jomm.utils.StreamsUtils; |
9 | import jomm.utils.StreamsUtils; |
10 | import org.apache.log4j.Logger; |
10 | import org.apache.log4j.Logger; |
11 | import org.dom4j.Document; |
11 | import org.dom4j.Document; |
- | 12 | import org.hibernate.Query; |
|
12 | import org.json.JSONArray; |
13 | import org.json.JSONArray; |
13 | import org.json.JSONException; |
14 | import org.json.JSONException; |
14 | import org.json.JSONObject; |
15 | import org.json.JSONObject; |
15 | import pt.estgp.estgweb.utils.Globals; |
- | |
16 | import pt.estgp.estgweb.domain.*; |
16 | import pt.estgp.estgweb.domain.*; |
17 | import pt.estgp.estgweb.domain.dao.DaoFactory; |
17 | import pt.estgp.estgweb.domain.dao.DaoFactory; |
18 | import pt.estgp.estgweb.domain.views.CourseView; |
18 | import pt.estgp.estgweb.domain.views.CourseView; |
19 | import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
19 | import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
20 | import pt.estgp.estgweb.filters.exceptions.AccessDeniedException; |
20 | import pt.estgp.estgweb.filters.exceptions.AccessDeniedException; |
Line 25... | Line 25... | ||
25 | import pt.estgp.estgweb.services.expceptions.ServiceException; |
25 | import pt.estgp.estgweb.services.expceptions.ServiceException; |
26 | import pt.estgp.estgweb.services.users.ReplaceRoleResult; |
26 | import pt.estgp.estgweb.services.users.ReplaceRoleResult; |
27 | import pt.estgp.estgweb.services.users.UserRoleConfigService; |
27 | import pt.estgp.estgweb.services.users.UserRoleConfigService; |
28 | import pt.estgp.estgweb.utils.ConfigProperties; |
28 | import pt.estgp.estgweb.utils.ConfigProperties; |
29 | import pt.estgp.estgweb.utils.Dom4jUtil; |
29 | import pt.estgp.estgweb.utils.Dom4jUtil; |
- | 30 | import pt.estgp.estgweb.utils.Globals; |
|
30 | import pt.estgp.estgweb.utils.StringsUtils; |
31 | import pt.estgp.estgweb.utils.StringsUtils; |
31 | import pt.utl.ist.berserk.logic.serviceManager.IService; |
32 | import pt.utl.ist.berserk.logic.serviceManager.IService; |
32 | 33 | ||
33 | import javax.xml.bind.JAXBContext; |
34 | import javax.xml.bind.JAXBContext; |
34 | import javax.xml.bind.JAXBException; |
35 | import javax.xml.bind.JAXBException; |
Line 179... | Line 180... | ||
179 | } |
180 | } |
180 | else |
181 | else |
181 | { |
182 | { |
182 | c = DaoFactory.getCourseDaoImpl().findCourseByCodeAndYear(courseView.getCode(),courseView.getImportYear()); |
183 | c = DaoFactory.getCourseDaoImpl().findCourseByCodeAndYear(courseView.getCode(),courseView.getImportYear()); |
183 | if(c != null) |
184 | if(c != null) |
184 | throw new AlreadyExistsException(AlreadyExistsException.ALREADY_EXISTS_COURSE); |
185 | throw new AlreadyExistsException(AlreadyExistsException.ALREADY_EXISTS_COURSE); |
185 | c = DomainObjectFactory.createCourseImpl(); |
186 | c = DomainObjectFactory.createCourseImpl(); |
186 | DaoFactory.getCourseDaoImpl().save(c); |
187 | DaoFactory.getCourseDaoImpl().save(c); |
187 | } |
188 | } |
188 | 189 | ||
189 | 1.5.0/docs/api/java/lang/String.html">String htmlTrasformationResult = null; |
190 | 1.5.0/docs/api/java/lang/String.html">String htmlTrasformationResult = null; |
Line 217... | Line 218... | ||
217 | { |
218 | { |
218 | repositoryService.updateRepositoryFile(c.getStudiesPlan(), stream, contentType, extension, size, name, "course.studies.plan " + c.getName(), ResourceAccessControlEnum.publicDomain); |
219 | repositoryService.updateRepositoryFile(c.getStudiesPlan(), stream, contentType, extension, size, name, "course.studies.plan " + c.getName(), ResourceAccessControlEnum.publicDomain); |
219 | } |
220 | } |
220 | htmlTrasformationResult = generateHtmlCache(userSession, c); |
221 | htmlTrasformationResult = generateHtmlCache(userSession, c); |
221 | //####New#### Generating XML with JaxB |
222 | //####New#### Generating XML with JaxB |
222 | //ISTO SO É CHAMADO NO CASO DE SE FAZER UPLOAD DE UM NOVO PLANO PELO MECANISMO ANTIGO |
223 | //ISTO SO É CHAMADO NO CASO DE SE FAZER UPLOAD DE UM NOVO PLANO PELO MECANISMO ANTIGO |
223 | generateXmlJaxbStudiesPlanVersionFromRepositoryOldPlanStream(userSession, c, forceUrlFichas, systemUrl); |
224 | generateXmlJaxbStudiesPlanVersionFromRepositoryOldPlanStream(userSession, c, forceUrlFichas, systemUrl); |
224 | } |
225 | } |
225 | return htmlTrasformationResult; |
226 | return htmlTrasformationResult; |
226 | } |
227 | } |
227 | 228 | ||
Line 285... | Line 286... | ||
285 | } |
286 | } |
286 | 287 | ||
287 | /** |
288 | /** |
288 | * ##NEW METHOD### |
289 | * ##NEW METHOD### |
289 | * Gera o XML normalizado para o JAXB a partir do XML importado do XML do plano XML quese usou no upload |
290 | * Gera o XML normalizado para o JAXB a partir do XML importado do XML do plano XML quese usou no upload |
290 | * para garantir que está bem formado |
291 | * para garantir que está bem formado |
291 | * @param userSession |
292 | * @param userSession |
292 | * @param c |
293 | * @param c |
293 | * @return |
294 | * @return |
294 | * @throws JAXBException if XML is not weel formed |
295 | * @throws JAXBException if XML is not weel formed |
295 | */ |
296 | */ |
296 | private void generateXmlJaxbStudiesPlanVersionFromRepositoryOldPlanStream(UserSession userSession, Course c, boolean forceFichaCurricularUrlSet, 1.5.0/docs/api/java/lang/String.html">String systemUrlForUnitPrograms) throws JAXBException |
297 | private void generateXmlJaxbStudiesPlanVersionFromRepositoryOldPlanStream(UserSession userSession, Course c, boolean forceFichaCurricularUrlSet, 1.5.0/docs/api/java/lang/String.html">String systemUrlForUnitPrograms) throws JAXBException |
297 | { |
298 | { |
298 | CourseStudiesPlan courseStudiesPlan; |
299 | CourseStudiesPlan courseStudiesPlan; |
299 | if(c.getStudiesPlan() == null || c.getStudiesPlan().trim().length() == 0) |
300 | if(c.getStudiesPlan() == null || c.getStudiesPlan().trim().length() == 0) |
300 | { |
301 | { |
301 | //ESTE É O STREAM DO PLANO DE UPLOAD |
302 | //ESTE É O STREAM DO PLANO DE UPLOAD |
302 | logger.warn("Course does not have studies plan XML file stream to use in update"); |
303 | logger.warn("Course does not have studies plan XML file stream to use in update"); |
303 | return; |
304 | return; |
304 | } |
305 | } |
305 | 306 | ||
306 | if(c.getStudiesPlans() == null || c.getStudiesPlans().size() == 0) |
307 | if(c.getStudiesPlans() == null || c.getStudiesPlans().size() == 0) |
307 | { |
308 | { |
308 | logger.info("Generating first study plan"); |
309 | logger.info("Generating first study plan"); |
309 | courseStudiesPlan = DomainObjectFactory.createCourseStudiesPlanImpl(); |
310 | courseStudiesPlan = DomainObjectFactory.createCourseStudiesPlanImpl(); |
310 | courseStudiesPlan.setVersion(1); |
311 | courseStudiesPlan.setVersion(1); |
311 | courseStudiesPlan.setVersionDescription("Auto gerado durante a importação de um XML com o plano de estudos a " + new 5+0%2Fdocs%2Fapi+Date">Date().toString()); |
312 | courseStudiesPlan.setVersionDescription("Auto gerado durante a importação de um XML com o plano de estudos a " + new 5+0%2Fdocs%2Fapi+Date">Date().toString()); |
312 | courseStudiesPlan.setCourse(c); |
313 | courseStudiesPlan.setCourse(c); |
313 | if(c.getStudiesPlans() == null) |
314 | if(c.getStudiesPlans() == null) |
314 | c.setStudiesPlans(new HashSet<CourseStudiesPlan>()); |
315 | c.setStudiesPlans(new HashSet<CourseStudiesPlan>()); |
315 | c.getStudiesPlans().add(courseStudiesPlan); |
316 | c.getStudiesPlans().add(courseStudiesPlan); |
316 | DaoFactory.getCourseStudiesPlanDaoImpl().save(courseStudiesPlan); |
317 | DaoFactory.getCourseStudiesPlanDaoImpl().save(courseStudiesPlan); |
Line 375... | Line 376... | ||
375 | } |
376 | } |
376 | } |
377 | } |
377 | 378 | ||
378 | 379 | ||
379 | /** |
380 | /** |
380 | * Apenas é chamado quando se tenta injectar um programa a partir de um upload que foi feito |
381 | * Apenas é chamado quando se tenta injectar um programa a partir de um upload que foi feito |
381 | * pelo user ou pela sincronização remota |
382 | * pelo user ou pela sincronização remota |
382 | * @param curso |
383 | * @param curso |
383 | * @param systemUrl |
384 | * @param systemUrl |
384 | * @param force |
385 | * @param force |
385 | */ |
386 | */ |
386 | private void generateAutoUrlFichasCurriculares(Curso curso,1.5.0/docs/api/java/lang/String.html">String systemUrl,boolean force) |
387 | private void generateAutoUrlFichasCurriculares(Curso curso,1.5.0/docs/api/java/lang/String.html">String systemUrl,boolean force) |
Line 408... | Line 409... | ||
408 | logger.info("GENERATING FICHA CURRICULAR URL For " + unidadeType.getNome()); |
409 | logger.info("GENERATING FICHA CURRICULAR URL For " + unidadeType.getNome()); |
409 | 1.5.0/docs/api/java/lang/String.html">String url = systemUrl != null ? systemUrl : ""; |
410 | 1.5.0/docs/api/java/lang/String.html">String url = systemUrl != null ? systemUrl : ""; |
410 | if(!url.endsWith("/")) |
411 | if(!url.endsWith("/")) |
411 | url = url + "/"; |
412 | url = url + "/"; |
412 | 413 | ||
413 | //Nao fornece o ano pois o servico irá assumir o ultimo |
414 | //Nao fornece o ano pois o servico irá assumir o ultimo |
414 | unidadeType.setUrlFichaCurricular(url + "startLoadCourseUnitProgramSiges.do?unitCode=" + unidadeType.getSiges() + "&courseCode=" + curso.getSiges() + "&semestre=" + semestre.getId()); |
415 | unidadeType.setUrlFichaCurricular(url + "startLoadCourseUnitProgramSiges.do?unitCode=" + unidadeType.getSiges() + "&courseCode=" + curso.getSiges() + "&semestre=" + semestre.getId()); |
415 | unidadeType.setUrlUnidadeCurricular(url + "startLoadCourseUnitSiges.do?unitCode=" + unidadeType.getSiges() + "&courseCode=" + curso.getSiges() + "&semestre=" + semestre.getId()); |
416 | unidadeType.setUrlUnidadeCurricular(url + "startLoadCourseUnitSiges.do?unitCode=" + unidadeType.getSiges() + "&courseCode=" + curso.getSiges() + "&semestre=" + semestre.getId()); |
416 | } |
417 | } |
417 | } |
418 | } |
418 | 419 | ||
Line 598... | Line 599... | ||
598 | return coursesResponse; |
599 | return coursesResponse; |
599 | } |
600 | } |
600 | 601 | ||
601 | /** |
602 | /** |
602 | * |
603 | * |
603 | * * Serviço invocado para obter o JSON de um curso |
604 | * * Serviço invocado para obter o JSON de um curso |
604 | * O JSON tem dois campos o courseInfo e o plano de estudos colocados separadamente |
605 | * O JSON tem dois campos o courseInfo e o plano de estudos colocados separadamente |
605 | * |
606 | * |
606 | * Atenção o plano de estudos usado é o ultimo considerando o seu ID |
607 | * Atenção o plano de estudos usado é o ultimo considerando o seu ID |
607 | * Nota: O plano de Estudos é uma classe persistente que tem apenas versão e descrição |
608 | * Nota: O plano de Estudos é uma classe persistente que tem apenas versão e descrição |
608 | * deverá ter como campo o XML e o JSON já gerados do plano de estudos que comporta |
609 | * deverá ter como campo o XML e o JSON já gerados do plano de estudos que comporta |
609 | * |
610 | * |
610 | * //TODO REVER |
611 | * //TODO REVER |
611 | * @param code |
612 | * @param code |
612 | * @return |
613 | * @return |
613 | * @throws JSONException |
614 | * @throws JSONException |
Line 631... | Line 632... | ||
631 | 632 | ||
632 | if(course.getJson() != null) |
633 | if(course.getJson() != null) |
633 | { |
634 | { |
634 | JSONObject courseObj = new JSONObject(course.getJson()); |
635 | JSONObject courseObj = new JSONObject(course.getJson()); |
635 | coursesResponse.put("courseInfo",courseObj); |
636 | coursesResponse.put("courseInfo",courseObj); |
636 | //Este caso apenas se dá se o plano nunca tiver sido editado ou sincronizado |
637 | //Este caso apenas se dá se o plano nunca tiver sido editado ou sincronizado |
637 | //Nesse caso o sistema irá tentar obtê-lo da stream do repositorio |
638 | //Nesse caso o sistema irá tentar obtê-lo da stream do repositorio |
638 | if(course.getStudiesPlans() == null || course.getStudiesPlans().size() == 0) |
639 | if(course.getStudiesPlans() == null || course.getStudiesPlans().size() == 0) |
639 | { |
640 | { |
640 | logger.info("status JSON NOT EXIST FOR STUDIES PLAN IN THIS COURSE, will try generate from studies plan OLD Stream"); |
641 | logger.info("status JSON NOT EXIST FOR STUDIES PLAN IN THIS COURSE, will try generate from studies plan OLD Stream"); |
641 | UserSession userSession = DomainObjectFactory.createUserSessionImpl(); |
642 | UserSession userSession = DomainObjectFactory.createUserSessionImpl(); |
642 | userSession.setUser(DaoFactory.getUserDaoImpl().load(new 1.5.0/docs/api/java/lang/Long.html">Long(1))); |
643 | userSession.setUser(DaoFactory.getUserDaoImpl().load(new 1.5.0/docs/api/java/lang/Long.html">Long(1))); |
Line 697... | Line 698... | ||
697 | generateXmlJaxbStudiesPlanVersionFromRepositoryOldPlanStream(userSession, course, false, null); |
698 | generateXmlJaxbStudiesPlanVersionFromRepositoryOldPlanStream(userSession, course, false, null); |
698 | } catch (JAXBException e) { |
699 | } catch (JAXBException e) { |
699 | logger.error(e,e); |
700 | logger.error(e,e); |
700 | return "<error>" + e.toString() + ". see log for details</error>"; |
701 | return "<error>" + e.toString() + ". see log for details</error>"; |
701 | } |
702 | } |
702 | } |
703 | } |
703 | 704 | ||
704 | if(course.getStudiesPlans() != null && course.getStudiesPlans().size() > 0) |
705 | if(course.getStudiesPlans() != null && course.getStudiesPlans().size() > 0) |
705 | { |
706 | { |
706 | return course.getStudiesPlans().iterator().next().getXml(); |
707 | return course.getStudiesPlans().iterator().next().getXml(); |
707 | } |
708 | } |
708 | return "<error>Does not exixt</error>"; |
709 | return "<error>Does not exixt</error>"; |
Line 1006... | Line 1007... | ||
1006 | if(unidade.getRemoved() != null && unidade.getRemoved().equals("true")) |
1007 | if(unidade.getRemoved() != null && unidade.getRemoved().equals("true")) |
1007 | uIter2.remove(); |
1008 | uIter2.remove(); |
1008 | } |
1009 | } |
1009 | } |
1010 | } |
1010 | } |
1011 | } |
1011 | //Garante-se mas depois não vai para o JSON |
1012 | //Garante-se mas depois não vai para o JSON |
1012 | planoEditado.setSiges(course.getCode());//GARANTIR QUE O CODIGO SIGEST ESTA CORRECTO |
1013 | planoEditado.setSiges(course.getCode());//GARANTIR QUE O CODIGO SIGEST ESTA CORRECTO |
1013 | planoEditado.setNome(course.getName()); |
1014 | planoEditado.setNome(course.getName()); |
1014 | planoEditado.setDep(course.getArea()); |
1015 | planoEditado.setDep(course.getArea()); |
1015 | 1016 | ||
1016 | /** |
1017 | /** |
Line 1176... | Line 1177... | ||
1176 | { |
1177 | { |
1177 | Course c = DaoFactory.getCourseDaoImpl().load(courseId); |
1178 | Course c = DaoFactory.getCourseDaoImpl().load(courseId); |
1178 | 1.5.0/docs/api/java/lang/String.html">String normalizedName = StringsUtils.getNormalizedNameSafeforCode(c.getName()); |
1179 | 1.5.0/docs/api/java/lang/String.html">String normalizedName = StringsUtils.getNormalizedNameSafeforCode(c.getName()); |
1179 | if(normalizedName == null) |
1180 | if(normalizedName == null) |
1180 | throw new 1.5.0/docs/api/java/lang/RuntimeException.html">RuntimeException("Erro o curso " + c.getId() +" + nao tem nome"); |
1181 | throw new 1.5.0/docs/api/java/lang/RuntimeException.html">RuntimeException("Erro o curso " + c.getId() +" + nao tem nome"); |
1181 | 1.5.0/docs/api/java/lang/String.html">String roleValidation = "courseValidateProgram" + normalizedName; |
- | |
1182 | UserRoleConfigImpl newUserRoleConfig = DomainObjectFactory.createUserRoleConfigImpl(); |
- | |
1183 | newUserRoleConfig.setRole(roleValidation); |
- | |
1184 | newUserRoleConfig.setValid(true); |
- | |
1185 | newUserRoleConfig.setValue("Comissão de Curso de " + c.getName()); |
- | |
1186 | newUserRoleConfig.setValuePt("Comissão de Curso de " + c.getName()); |
- | |
1187 | newUserRoleConfig.setValueEn(""); |
- | |
1188 | newUserRoleConfig.setValueEs(""); |
- | |
1189 | newUserRoleConfig.setValueFr(""); |
- | |
1190 | - | ||
1191 | try { |
- | |
1192 | - | ||
1193 | ReplaceRoleResult result; |
- | |
1194 | if(c.getValidationRole() == null || c.getValidationRole().trim().length() == 0) |
- | |
1195 | { |
- | |
1196 | result = new UserRoleConfigService().addUpdateRole(newUserRoleConfig,userSession,false); |
- | |
1197 | } |
- | |
1198 | else |
- | |
1199 | { |
- | |
1200 | 1.5.0/docs/api/java/lang/String.html">String oldValidationRole = c.getValidationRole(); |
- | |
1201 | result = new UserRoleConfigService().updateOldRoleWithView(oldValidationRole, newUserRoleConfig, userSession,false); |
- | |
1202 | } |
- | |
1203 | - | ||
1204 | 1182 | ||
1205 | if(result.roleKeyAlreadyExist) |
1183 | 1.5.0/docs/api/java/lang/String.html">String roleValidation = "courseValidateProgram" + normalizedName; |
1206 | { |
- | |
1207 | logger.error("Tentado CRIAR um Role que já existe e não é Administrador nem Super user"); |
1184 | 1.5.0/docs/api/java/lang/String.html">String oldValidationRole = c.getValidationRole(); |
1208 | throw new AccessDeniedException("Tentado CRIAR um Role que já existe e não é Administrador nem Super user"); |
1185 | 1.5.0/docs/api/java/lang/String.html">String nomeRole = "Comissão de Curso de " + c.getName(); |
1209 | } |
1186 | try{ |
- | 1187 | ReplaceRoleResult result = new UserRoleConfigService().createNewNormalizedRoleService(oldValidationRole,nomeRole,roleValidation,userSession); |
|
1210 | c.setValidationRole(roleValidation); |
1188 | c.setValidationRole(roleValidation); |
1211 | return result; |
1189 | return result; |
1212 | } catch (AccessDeniedException e) { |
1190 | }catch(AccessDeniedException e) |
1213 | logger.error("Tentado alterar um Role e não é Administrador nem Super user"); |
1191 | { |
1214 | throw e; |
1192 | throw e; |
1215 | } |
1193 | } |
1216 | } |
1194 | } |
1217 | 1195 | ||
1218 | 1196 | ||
Line 1227... | Line 1205... | ||
1227 | } |
1205 | } |
1228 | 1206 | ||
1229 | public CourseDepartmentImpl updateDepartmentFromJson(1.5.0/docs/api/java/lang/String.html">String json,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1207 | public CourseDepartmentImpl updateDepartmentFromJson(1.5.0/docs/api/java/lang/String.html">String json,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1230 | { |
1208 | { |
1231 | CourseDepartmentImpl courseDepartment = CourseDepartmentImpl.loadFromJson(json); |
1209 | CourseDepartmentImpl courseDepartment = CourseDepartmentImpl.loadFromJson(json); |
1232 | CourseDepartmentImpl courseDepartmentPersistent = (CourseDepartmentImpl) DaoFactory.getCourseDepartmentDaoImpl().load(courseDepartment.getSigla()); |
- | |
- | 1210 | ||
- | 1211 | ||
- | 1212 | ||
1233 | if(!courseDepartment.getSiglaNova().equals(courseDepartment.getSigla())) |
1213 | if(!courseDepartment.getSiglaNova().equals(courseDepartment.getSigla())) |
- | 1214 | { |
|
1234 | courseDepartmentPersistent.setSigla(courseDepartment.getSiglaNova()); |
1215 | //courseDepartmentPersistent.setSigla(courseDepartment.getSiglaNova()); |
- | 1216 | 1.5.0/docs/api/javax/management/Query.html">Query q = AbstractDao.getCurrentSession().createQuery("update " + CourseDepartment.class.getName() + " d " + |
|
- | 1217 | " set d.sigla = :siglaNova where d.sigla = :sigla"); |
|
- | 1218 | q.setString("siglaNova",courseDepartment.getSiglaNova()); |
|
- | 1219 | q.setString("sigla",courseDepartment.getSigla()); |
|
- | 1220 | q.executeUpdate(); |
|
- | 1221 | //courseDepartmentPersistent = (CourseDepartmentImpl) DaoFactory.getCourseDepartmentDaoImpl().load(courseDepartment.getSiglaNova()); |
|
- | 1222 | } |
|
- | 1223 | CourseDepartmentImpl courseDepartmentPersistent = (CourseDepartmentImpl) DaoFactory.getCourseDepartmentDaoImpl().load(courseDepartment.getSiglaNova()); |
|
1235 | //courseDepartmentPersistent.setSigla(courseDepartment.getSigla()); |
1224 | //courseDepartmentPersistent.setSigla(courseDepartment.getSigla()); |
1236 | courseDepartmentPersistent.setActive(courseDepartment.isActive()); |
1225 | courseDepartmentPersistent.setActive(courseDepartment.isActive()); |
1237 | courseDepartmentPersistent.setName(courseDepartment.getName()); |
1226 | courseDepartmentPersistent.setName(courseDepartment.getName()); |
1238 | courseDepartmentPersistent.setNameEs(courseDepartment.getNameEs()); |
1227 | courseDepartmentPersistent.setNameEs(courseDepartment.getNameEs()); |
1239 | courseDepartmentPersistent.setNameEn(courseDepartment.getNameEs()); |
1228 | courseDepartmentPersistent.setNameEn(courseDepartment.getNameEs()); |
Line 1271... | Line 1260... | ||
1271 | DaoFactory.getCourseDepartmentDaoImpl().save(courseDepartmentPersistent); |
1260 | DaoFactory.getCourseDepartmentDaoImpl().save(courseDepartmentPersistent); |
1272 | return courseDepartmentPersistent; |
1261 | return courseDepartmentPersistent; |
1273 | 1262 | ||
1274 | } |
1263 | } |
1275 | 1264 | ||
- | 1265 | /** |
|
- | 1266 | * Cria um conjunto de roles novos para um determinado departamento |
|
- | 1267 | * chama o serviço tier1 UserRoleConfigService.createNewNormalizedRoleService |
|
- | 1268 | * @param session |
|
- | 1269 | * @return |
|
- | 1270 | * @throws IOException |
|
- | 1271 | * @throws AccessDeniedException |
|
- | 1272 | */ |
|
- | 1273 | public CourseDepartmentImpl newDepartmentRolesFromJson(1.5.0/docs/api/java/lang/String.html">String json,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException, AccessDeniedException { |
|
- | 1274 | CourseDepartmentImpl courseDepartment = CourseDepartmentImpl.loadFromJson(json); |
|
- | 1275 | CourseDepartmentImpl courseDepartmentPersistent = (CourseDepartmentImpl) DaoFactory.getCourseDepartmentDaoImpl().findBySigla(courseDepartment.getSigla()); |
|
- | 1276 | ||
- | 1277 | UserRoleConfigService userRoleConfigService = new UserRoleConfigService(); |
|
- | 1278 | 1.5.0/docs/api/java/lang/String.html">String normalizedName = StringsUtils.getNormalizedNameSafeforCode(courseDepartmentPersistent.getName()); |
|
- | 1279 | if(normalizedName == null) |
|
- | 1280 | throw new 1.5.0/docs/api/java/lang/RuntimeException.html">RuntimeException("Erro o Departamento " + courseDepartmentPersistent.getSigla() +" + nao tem nome"); |
|
- | 1281 | ||
- | 1282 | ||
- | 1283 | 1.5.0/docs/api/java/lang/String.html">String nomeRole = "Departamento Direcção - " + courseDepartmentPersistent.getName(); |
|
- | 1284 | 1.5.0/docs/api/java/lang/String.html">String oldRole = courseDepartmentPersistent.getBoardRole(); |
|
- | 1285 | 1.5.0/docs/api/java/lang/String.html">String newRoleStr = "department.board." + normalizedName; |
|
- | 1286 | try |
|
- | 1287 | { |
|
- | 1288 | userRoleConfigService.createNewNormalizedRoleService(oldRole,nomeRole,newRoleStr, session); |
|
- | 1289 | courseDepartmentPersistent.setBoardRole(newRoleStr); |
|
- | 1290 | } catch (AccessDeniedException e) { |
|
- | 1291 | logger.error(e,e); |
|
- | 1292 | throw e; |
|
- | 1293 | } |
|
- | 1294 | ||
- | 1295 | ||
- | 1296 | nomeRole = "Departamento Diretor - " + courseDepartmentPersistent.getName(); |
|
- | 1297 | oldRole = courseDepartmentPersistent.getDirectorRole(); |
|
- | 1298 | newRoleStr = "department.diretor." + normalizedName; |
|
- | 1299 | ||
- | 1300 | try { |
|
- | 1301 | userRoleConfigService.createNewNormalizedRoleService(oldRole,nomeRole,newRoleStr, session); |
|
- | 1302 | courseDepartmentPersistent.setDirectorRole(newRoleStr); |
|
- | 1303 | } catch (AccessDeniedException e) { |
|
- | 1304 | logger.error(e,e); |
|
- | 1305 | throw e; |
|
- | 1306 | } |
|
- | 1307 | ||
- | 1308 | return courseDepartmentPersistent; |
|
- | 1309 | } |
|
- | 1310 | ||
- | 1311 | ||
- | 1312 | ||
1276 | 1313 | ||
1277 | public CourseSchoolImpl updateSchoolFromJson(1.5.0/docs/api/java/lang/String.html">String json,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1314 | public CourseSchoolImpl updateSchoolFromJson(1.5.0/docs/api/java/lang/String.html">String json,UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1278 | { |
1315 | { |
1279 | CourseSchoolImpl courseSchool = CourseSchoolImpl.loadFromJson(json); |
1316 | CourseSchoolImpl courseSchool = CourseSchoolImpl.loadFromJson(json); |
1280 | CourseSchoolImpl courseSchoolPersistent = (CourseSchoolImpl) DaoFactory.getCourseSchoolDaoImpl().load(courseSchool.getId()); |
1317 | CourseSchoolImpl courseSchoolPersistent = (CourseSchoolImpl) DaoFactory.getCourseSchoolDaoImpl().load(courseSchool.getId()); |
Line 1305... | Line 1342... | ||
1305 | 1342 | ||
1306 | return courseSchoolPersistent; |
1343 | return courseSchoolPersistent; |
1307 | 1344 | ||
1308 | } |
1345 | } |
1309 | 1346 | ||
- | 1347 | ||
1310 | public CourseSchoolImpl newSchoolFromJson(UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1348 | public CourseSchoolImpl newSchoolFromJson(UserSession session) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
1311 | { |
1349 | { |
1312 | CourseSchoolImpl courseSchoolPersistent = DomainObjectFactory.createCourseSchoolImpl(); |
1350 | CourseSchoolImpl courseSchoolPersistent = DomainObjectFactory.createCourseSchoolImpl(); |
1313 | 1351 | ||
1314 | courseSchoolPersistent.setActive(false); |
1352 | courseSchoolPersistent.setActive(false); |
Line 1327... | Line 1365... | ||
1327 | } |
1365 | } |
1328 | 1366 | ||
1329 | /* |
1367 | /* |
1330 | public static void main(String[] args) throws JAXBException, IOException { |
1368 | public static void main(String[] args) throws JAXBException, IOException { |
1331 | 1369 | ||
1332 | String json = "{\"anoPlanoSiges\":null,\"codigoPlanoSiges\":null,\"dep\":null,\"descPlanoSiges\":null,\"nome\":null,\"semestre\":[{\"id\":\"S1\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Português — Língua e Literatura\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:12\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"},\"eCTS\":\"6\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Geografia\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"125\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:16\",\"horasContacto\":{\"tP\":\"45\",\"oT\":\"15\"},\"eCTS\":\"5\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"História\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"125\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:20\",\"horasContacto\":{\"tP\":\"45\",\"oT\":\"15\"},\"eCTS\":\"5\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Linguística e Análise do Discurso\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:24\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"},\"eCTS\":\"6\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Matemática no 1.o Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"125\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:28\",\"horasContacto\":{\"tP\":\"45\",\"oT\":\"15\"},\"eCTS\":\"5\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Educação para a Saúde\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:32\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Música, Emoção e Criatividade\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:36\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Educação para a Cidadania\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:40\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Descobrir a Matemática\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:44\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"}],\"type\":\"semestre\",\"$$hashKey\":\"object:6\"},{\"id\":\"S2\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática do Português no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:54\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática do Estudo do Meio no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:58\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática da Matemática no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:62\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática das Expressões no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:66\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Psicologia da Educação\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:70\",\"eCTS\":\"3\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Investigação em Educação\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:74\",\"eCTS\":\"3\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"}}],\"type\":\"semestre\",\"$$hashKey\":\"object:48\"},{\"id\":\"S3\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Prática de Ensino Supervisionada no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"500\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:90\",\"eCTS\":\"20\",\"horasContacto\":{\"s\":\"30\",\"e\":\"270\",\"oT\":\"45\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Seminário de Investigação I\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"50\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:98\",\"eCTS\":\"2\",\"horasContacto\":{\"s\":\"20\",\"oT\":\"10\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática da História e Geografia de Portugal no 2º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"100\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:94\",\"eCTS\":\"4\",\"horasContacto\":{\"tP\":\"35\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática do Português no 2º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"100\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:102\",\"eCTS\":\"4\",\"horasContacto\":{\"oT\":\"15\",\"tP\":\"35\"}}],\"type\":\"semestre\",\"$$hashKey\":\"object:78\"},{\"id\":\"S4\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:106\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:110\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:114\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:118\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:122\"}],\"type\":\"semestre\",\"$$hashKey\":\"object:84\"}],\"siges\":null}"; |
1370 | String json = "{\"anoPlanoSiges\":null,\"codigoPlanoSiges\":null,\"dep\":null,\"descPlanoSiges\":null,\"nome\":null,\"semestre\":[{\"id\":\"S1\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Português — LÃngua e Literatura\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:12\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"},\"eCTS\":\"6\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Geografia\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"125\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:16\",\"horasContacto\":{\"tP\":\"45\",\"oT\":\"15\"},\"eCTS\":\"5\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"História\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"125\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:20\",\"horasContacto\":{\"tP\":\"45\",\"oT\":\"15\"},\"eCTS\":\"5\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"LinguÃstica e Análise do Discurso\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:24\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"},\"eCTS\":\"6\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Matemática no 1.o Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"125\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:28\",\"horasContacto\":{\"tP\":\"45\",\"oT\":\"15\"},\"eCTS\":\"5\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Educação para a Saúde\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:32\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Música, Emoção e Criatividade\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:36\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Educação para a Cidadania\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:40\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Descobrir a Matemática\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:44\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"},\"eCTS\":\"3\"}],\"type\":\"semestre\",\"$$hashKey\":\"object:6\"},{\"id\":\"S2\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática do Português no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:54\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática do Estudo do Meio no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:58\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática da Matemática no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:62\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática das Expressões no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"150\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:66\",\"eCTS\":\"6\",\"horasContacto\":{\"tP\":\"60\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Psicologia da Educação\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:70\",\"eCTS\":\"3\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Investigação em Educação\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"75\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:74\",\"eCTS\":\"3\",\"horasContacto\":{\"tP\":\"30\",\"oT\":\"7\"}}],\"type\":\"semestre\",\"$$hashKey\":\"object:48\"},{\"id\":\"S3\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Prática de Ensino Supervisionada no 1º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"500\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:90\",\"eCTS\":\"20\",\"horasContacto\":{\"s\":\"30\",\"e\":\"270\",\"oT\":\"45\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Seminário de Investigação I\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"50\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:98\",\"eCTS\":\"2\",\"horasContacto\":{\"s\":\"20\",\"oT\":\"10\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática da História e Geografia de Portugal no 2º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"100\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:94\",\"eCTS\":\"4\",\"horasContacto\":{\"tP\":\"35\",\"oT\":\"15\"}},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"Didática do Português no 2º Ciclo do Ensino Básico\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":\"100\",\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:102\",\"eCTS\":\"4\",\"horasContacto\":{\"oT\":\"15\",\"tP\":\"35\"}}],\"type\":\"semestre\",\"$$hashKey\":\"object:78\"},{\"id\":\"S4\",\"notas\":null,\"perfil\":[],\"semestreDesc\":\"Semestre 1\",\"semestreDescEn\":\"Semester 1\",\"semestreDescEs\":\"Semestre 1\",\"semestreDescFr\":\"Semestre 1\",\"semestreId\":null,\"unidade\":[{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:106\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:110\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:114\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:118\"},{\"dep\":\"\",\"ects\":\"\",\"nome\":\"\",\"nomeEn\":null,\"nomeEs\":null,\"nomeFr\":null,\"obs\":\"\",\"removed\":null,\"siges\":null,\"totalHoras\":0,\"urlFichaCurricular\":\"\",\"urlUnidadeCurricular\":\"\",\"type\":\"unidade\",\"$$hashKey\":\"object:122\"}],\"type\":\"semestre\",\"$$hashKey\":\"object:84\"}],\"siges\":null}"; |
1333 | CursoImpl c = CursoImpl.loadFromJson(json); |
1371 | CursoImpl c = CursoImpl.loadFromJson(json); |
1334 | 1372 | ||
1335 | JAXBContext jc = JAXBContext.newInstance(Curso.class); |
1373 | JAXBContext jc = JAXBContext.newInstance(Curso.class); |
1336 | Marshaller marshaller = jc.createMarshaller(); |
1374 | Marshaller marshaller = jc.createMarshaller(); |
1337 | marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); |
1375 | marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); |
Line 1339... | Line 1377... | ||
1339 | marshaller.marshal(c,xml); |
1377 | marshaller.marshal(c,xml); |
1340 | System.out.println(xml); |
1378 | System.out.println(xml); |
1341 | }*/ |
1379 | }*/ |
1342 | 1380 | ||
1343 | 1381 | ||
1344 | } |
1382 | } |
1345 | 1383 |