Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1540 → Rev 1541

/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");
}
}
 
 
 
 
 
}