Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1540 → Rev 1541

/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>