Subversion Repositories bacoAlunos

Rev

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