/branches/v3/impl/conf/language/MessageResources.properties |
---|
1076,7 → 1076,9 |
course.studies.plan.not.available=Não disponivel |
course.studies.plan.saved=Plano de Estudos Salvo com Sucesso |
course.studies.plan.cloned=Plano de Estudos Clonado com Sucesso |
course.studies.plan.imported=Plano de Estudos Clonado com Sucesso |
course.studies.plan.imported=Plano de Estudos Importado com Sucesso |
course.studies.plan.merged=Plano de Estudos Fundido com Sucesso |
course.courseunit.program.objectives.todo={0} Unidades em Falta (Ficha) |
course.externalSite=Site Externo |
#course.studies.plan=Plano de Estudos |
/branches/v3/impl/conf/berserk/sd.xml |
---|
1577,6 → 1577,18 |
</filterChains> |
</service> |
<service> |
<name>MergeStudiesPlanVersionFromFile</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass> |
<description>Load course by String code</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>mergeStudiesPlanVersionFromFile</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="ServicesStudiesPlans"/> |
</filterChains> |
</service> |
<service> |
<name>AddTeacherCourseCommission</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass> |
<description>Load course by String code</description> |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java |
---|
1146,6 → 1146,15 |
plan.setImportLog(importer.getLog()); |
return importer; |
} |
public StudiesPlanImporter mergeStudiesPlanVersionFromFile(InputStream stream, Long studiesPlanId, UserSession session) throws IOException |
{ |
StudiesPlanImporter importer = new StudiesPlanImporter(); |
importer.parseFile(stream); |
System.out.println(importer.getLog()); |
CourseStudiesPlan plan = DaoFactory.getCourseStudiesPlanDaoImpl().load(studiesPlanId); |
plan.setImportLog(plan.getImportLog() + "\n\n############\n\n##MERGING\n\n" + importer.getLog()); |
return importer; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/StudiesPlanImporter.java |
---|
362,6 → 362,8 |
} |
public List<String> getFoundErrors() { |
return foundErrors; |
} |
395,6 → 397,7 |
HashMap<String,Curso.Semestre> semestresMap = new HashMap<String, Curso.Semestre>(); |
HashMap<String,Curso.Semestre.Perfil> perfilMap = new HashMap<String, Curso.Semestre.Perfil>(); |
HashMap<String,UnidadeType> unidadeMap = new HashMap<String, UnidadeType>(); |
Curso curso = new CursoImpl(); |
curso.setAnoPlanoSiges(anoPlanoSiges); |
403,14 → 406,35 |
//curso.setNome(); sao preenchidos automaticamente no SAVE do plano no servico |
//curso.setSiges(); |
//curso.setDep(); |
return fillCursoUnidades(semestresMap, perfilMap,unidadeMap, curso); |
} |
private static String getSemestreIdForMap(String id) |
{ |
return id; |
} |
private static String getPerfilIdForMap(Curso.Semestre s,String ramo) |
{ |
return s.getId() + "$" + ramo; |
} |
private static String getUnidadeIdForMap(Curso.Semestre s,Curso.Semestre.Perfil p,UnidadeType u) |
{ |
return s.getId() + "$" + p.getNome() + "$" + u.getSiges(); |
} |
private static String getUnidadeIdForMap(Curso.Semestre s,UnidadeType u) |
{ |
return s.getId() + "$" + u.getSiges(); |
} |
private Curso fillCursoUnidades(HashMap<String, Curso.Semestre> semestresMap, HashMap<String, Curso.Semestre.Perfil> perfilMap, HashMap<String,UnidadeType> unidadesMap, Curso curso) { |
List<Curso.Semestre> semestres = new ArrayList<Curso.Semestre>(); |
for(StudiesPlanImportLine line: lines) |
{ |
Curso.Semestre semestre = semestresMap.get(line.getCodigoDuracao()); |
Curso.Semestre semestre = semestresMap.get(getSemestreIdForMap(line.getCodigoDuracao())); |
if(semestre == null) |
{ |
semestre = new SemestreImpl(); |
semestresMap.put(line.getCodigoDuracao(),semestre); |
semestresMap.put(getSemestreIdForMap(line.getCodigoDuracao()),semestre); |
semestre.setId(line.getCodigoDuracao()); |
semestres.add(semestre); |
} |
428,19 → 452,27 |
if(!line.troncoComum) |
{ |
Curso.Semestre.Perfil perfil = perfilMap.get(semestre.getId() + "$" + line.ramo); |
Curso.Semestre.Perfil perfil = perfilMap.get(getPerfilIdForMap(semestre,line.ramo)); |
if(perfil == null) |
{ |
perfil = new PerfilImpl(); |
perfil.setNome(line.ramo); |
perfilMap.put(semestre.getId() + "$" + line.ramo,perfil); |
perfilMap.put(getPerfilIdForMap(semestre,line.ramo),perfil); |
semestre.getPerfil().add(perfil); |
} |
perfil.getUnidade().add(unidade); |
if(unidadesMap.get(getUnidadeIdForMap(semestre,perfil,unidade)) == null) |
{ |
perfil.getUnidade().add(unidade); |
unidadesMap.put(getUnidadeIdForMap(semestre,perfil,unidade),unidade); |
} |
} |
else |
{ |
semestre.getUnidade().add(unidade); |
if(unidadesMap.get(getUnidadeIdForMap(semestre,unidade)) == null) |
{ |
semestre.getUnidade().add(unidade); |
unidadesMap.put(getUnidadeIdForMap(semestre,unidade),unidade); |
} |
} |
} |
curso.getSemestre().addAll(semestres); |
448,4 → 480,41 |
} |
public Curso mergePlanoEstudosCurso(Curso cursoOriginal) |
{ |
HashMap<String,Curso.Semestre> semestresMap = new HashMap<String, Curso.Semestre>(); |
HashMap<String,Curso.Semestre.Perfil> perfilMap = new HashMap<String, Curso.Semestre.Perfil>(); |
HashMap<String,UnidadeType> unidadesMap = new HashMap<String, UnidadeType>(); |
for(Curso.Semestre semestre: cursoOriginal.getSemestre()) |
{ |
semestresMap.put(getSemestreIdForMap(semestre.getId()),semestre); |
for(Curso.Semestre.Perfil perfil: semestre.getPerfil()) |
{ |
perfilMap.put(getPerfilIdForMap(semestre, perfil.getNome()),perfil); |
for(UnidadeType unidade : perfil.getUnidade()) |
{ |
unidadesMap.put(getUnidadeIdForMap(semestre,perfil,unidade),unidade); |
} |
} |
for(UnidadeType unidade : semestre.getUnidade()) |
{ |
unidadesMap.put(getUnidadeIdForMap(semestre,unidade),unidade); |
} |
} |
return fillCursoUnidades(semestresMap, perfilMap,unidadesMap, cursoOriginal); |
} |
public void mergeWithLines(Curso planoEstudos) |
{ |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesController.java |
---|
911,8 → 911,36 |
} |
} |
public ActionForward mergePlano(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseStudiesPlansAdminForm frm = (CourseStudiesPlansAdminForm) form; |
long planId = frm.getCourseStudiesPlan().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{frm.getFormFileImport().getInputStream(),planId}; |
StudiesPlanImporter importer = (StudiesPlanImporter) sm.execute(RequestUtils.getRequester(request, response), "MergeStudiesPlanVersionFromFile", args, names); |
frm.setPlanoEstudos(importer.mergePlanoEstudosCurso(frm.getPlanoEstudos())); |
addMessage(request, "course.studies.plan.merged"); |
frm.getCourseStudiesPlan().setImportLog(importer.getLog()); |
return mapping.findForward("editStudyPlan"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
} |
/branches/v3/impl/src/web/user/courses/studiesPlansAdministrationEdit.jsp |
---|
201,16 → 201,38 |
<div class="panel panel-warning"> |
<div class="panel-heading"><span class="glyphicon glyphicon-wrench"></span> Importar Ficheiro do SIGES em formato TXT: <a href="<%=request.getContextPath()%>/user/courses/9500-Enfermagem.TXT">VEJA UM EXEMPLO DE ENFERMAGEM</a></div> |
<div class="panel-body"> |
<div class="form-group"> |
<label class="control-label col-sm-2">Escolher Ficheiro Exportado do Siges</label> |
<div class="col-sm-10"> |
<html:file styleClass="form-control" property="formFileImport"/> |
<div class="col-md-6"> |
<div class="panel panel-default"> |
<div class="panel-body"> |
<div class="form-group"> |
<label class="control-label col-sm-2">Escolher Ficheiro Exportado do Siges</label> |
<div class="col-sm-10"> |
<html:file styleClass="form-control" property="formFileImport"/> |
</div> |
</div> |
<button class="btn btn-warning" type="button" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai sobrepor os dados do plano de estudos atual com os dados da versão escolhida!! Tem a certeza que deseja prosseguir?" data-script="set($('#CourseStudiesPlansAdminForm').get(0),'importarPlano');$('#CourseStudiesPlansAdminForm').get(0).submit();"> |
Importar o ficheiro sobrepondo esta versão do plano |
</button> |
</div> |
</div> |
</div> |
<button class="btn btn-warning" type="button" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai sobrepor os dados do plano de estudos atual com os dados da versão escolhida!! Tem a certeza que deseja prosseguir?" data-script="set($('#CourseStudiesPlansAdminForm').get(0),'importarPlano');$('#CourseStudiesPlansAdminForm').get(0).submit();"> |
Importar o ficheiro sobrepondo esta versão do plano |
</button> |
<div class="col-md-6"> |
<div class="panel panel-default"> |
<div class="panel-body"> |
<div class="form-group"> |
<label class="control-label col-sm-2">Escolher Ficheiro Exportado do Siges Com Ramos</label> |
<div class="col-sm-10"> |
<html:file styleClass="form-control" property="formFileImport"/> |
</div> |
</div> |
<button class="btn btn-warning" type="button" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai sobrepor os dados do plano de estudos atual com os dados da versão escolhida!! Tem a certeza que deseja prosseguir?" data-script="set($('#CourseStudiesPlansAdminForm').get(0),'mergePlano');$('#CourseStudiesPlansAdminForm').get(0).submit();"> |
FUNDIR o ficheiro com esta versão do plano |
</button> |
</div> |
</div> |
</div> |
</div> |
</div> |