Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1312 → Rev 1313

/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java
436,48 → 436,51
Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(c.getCourseCode());
c.setCourse(course);
checkOrCreateCourseYear(logMessages, year, c.getCourseCode(), this);
//Obter as tipologias de sumarios e aulas e colocar na unidade
fillTipologias(d, (CourseUnitImpl) c);
}
}
}
 
try {
CourseUnitImpl.Tipologias t = ((CourseUnitImpl)c).getTipologiasClass();
if(t == null)
t = new CourseUnitImpl.Tipologias();
t.setTipologiasSumarios(new ArrayList<CourseUnitImpl.Tipologia>());
for(TipologiasSumario.TipologiaSumario tipologiaSumario : d.getTipologiasSumario().getTipologias())
{
CourseUnitImpl.Tipologia tipoSum = new CourseUnitImpl.Tipologia();
tipoSum.setOcorrencias(tipologiaSumario.getNumeroOcorrencias());
tipoSum.setCdTipologia(ConfigProperties.getProperty("netpa.tipo.aula." + tipologiaSumario.getCdTipoAula()));
tipoSum.setCdTurma(tipologiaSumario.getCdTurma());
tipoSum.setCdDocente("" + tipologiaSumario.getCdDocente());
t.getTipologiasSumarios().add(tipoSum);
}
t.setTipologiasHorarioReferencia(new ArrayList<CourseUnitImpl.Tipologia>());
for(TipologiasHorario.TipologiaHorario tipologiaHorario : d.getTipologiasHorario().getTipologias())
{
CourseUnitImpl.Tipologia tipoSum = new CourseUnitImpl.Tipologia();
String codigoCorrespondenteTipoAula =
ConfigProperties.getProperty("netpa.code.ocup." + tipologiaHorario.getCdTipoOcupacao() + ".tipo.aula");
if(codigoCorrespondenteTipoAula != null && codigoCorrespondenteTipoAula.length() > 0)
{
tipoSum.setCdTipologia(ConfigProperties.getProperty("netpa.tipo.aula." + codigoCorrespondenteTipoAula));
tipoSum.setCdTurma(tipologiaHorario.getCdTurma());
tipoSum.setCdDocente("" + tipologiaHorario.getCdDocente());
t.getTipologiasHorarioReferencia().add(tipoSum);
}
else
{
System.out.println("Tipologia: cd tipo ocup ignorado:" + tipologiaHorario.getCdTipoOcupacao());
}
 
}
((CourseUnitImpl)c).setTipologiasClass(t);
} catch (Exception e) {
logger.error(e, e);
erroGraveAObterTipologias++;
private void fillTipologias(Disciplina d, CourseUnitImpl c) {
try {
CourseUnitImpl.Tipologias t = ((CourseUnitImpl)c).getTipologiasClass();
if(t == null)
t = new CourseUnitImpl.Tipologias();
for(TipologiasSumario.TipologiaSumario tipologiaSumario : d.getTipologiasSumario().getTipologias())
{
CourseUnitImpl.Tipologia tipoSum = new CourseUnitImpl.Tipologia();
tipoSum.setOcorrencias(tipologiaSumario.getNumeroOcorrencias());
tipoSum.setDsTipologia(ConfigProperties.getProperty("netpa.tipo.aula." + tipologiaSumario.getCdTipoAula()));
tipoSum.setCdTurma(tipologiaSumario.getCdTurma());
tipoSum.setCdDocente("" + tipologiaSumario.getCdDocente());
tipoSum.setCdTipologia(""+tipologiaSumario.getCdTipoAula());
t.getTipologiasSumarios().add(tipoSum);
}
for(TipologiasHorario.TipologiaHorario tipologiaHorario : d.getTipologiasHorario().getTipologias())
{
CourseUnitImpl.Tipologia tipoSum = new CourseUnitImpl.Tipologia();
String codigoCorrespondenteTipoAula =
ConfigProperties.getProperty("netpa.code.ocup." + tipologiaHorario.getCdTipoOcupacao() + ".tipo.aula");
if(codigoCorrespondenteTipoAula != null && codigoCorrespondenteTipoAula.length() > 0)
{
tipoSum.setOcorrencias(null);
tipoSum.setDsTipologia(ConfigProperties.getProperty("netpa.tipo.aula." + codigoCorrespondenteTipoAula));
tipoSum.setCdTipologia("" + codigoCorrespondenteTipoAula);
tipoSum.setCdTurma(tipologiaHorario.getCdTurma());
tipoSum.setCdDocente("" + tipologiaHorario.getCdDocente());
t.getTipologiasHorarioReferencia().add(tipoSum);
}
else
{
System.out.println("Tipologia: cd tipo ocup ignorado:" + tipologiaHorario.getCdTipoOcupacao());
}
 
 
}
c.setTipologiasClass(t);
} catch (Exception e) {
logger.error(e, e);
erroGraveAObterTipologias++;
}
}
 
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
4,6 → 4,7
import com.owlike.genson.TransformationException;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.enums.CourseUnitContentsGrants;
import pt.estgp.estgweb.domain.test.TestCourseUnit;
import pt.estgp.estgweb.domain.utils.SimpleClearanceRuledSupport;
347,16 → 348,112
setTipologias(tipologias.serialize());
}
 
public TipologiaPersistent loadPersistent(Tipologia myTipo)
{
TipologiaPersistent tipologiaPersistent = new TipologiaPersistent();
tipologiaPersistent.setHorRef(myTipo.isHorRef());
tipologiaPersistent.setExtra(myTipo.isExtra());
tipologiaPersistent.setTeacher(DaoFactory.getTeacherDaoImpl().loadBySigesCode(Integer.parseInt(myTipo.getCdDocente())));
tipologiaPersistent.setCdTipologia(myTipo.getCdTipologia());
tipologiaPersistent.setOcorrencias(myTipo.getOcorrencias());
 
tipologiaPersistent.setCourseUnitTurma(findTurma(myTipo.getCdTurma()));
if(tipologiaPersistent.getCourseUnitTurma() == null || tipologiaPersistent.getTeacher() == null)
{
logger.error("Turma ou professor nao encontrados enquanto fazia uma tipologia persistente");
return null;
}
return tipologiaPersistent;
}
 
public CourseUnitTurma findTurma(String turma)
{
if(getTurmas() == null)
return null;
for(CourseUnitTurma t: getTurmas())
{
if(t.getTurma().equals(turma))
return t;
}
return null;
}
 
 
public static class TipologiaPersistent
{
private Teacher teacher;
private CourseUnitTurma courseUnitTurma;
private String cdTipologia;
private Integer ocorrencias = 0;
protected boolean extra;
protected boolean horRef;
 
public boolean isExtra() {
return extra;
}
 
public boolean isHorRef() {
return horRef;
}
 
public boolean isSumario() {
return ocorrencias != null && ocorrencias > 0;
}
 
public void setExtra(boolean extra) {
this.extra = extra;
}
 
public void setHorRef(boolean horRef) {
this.horRef = horRef;
}
 
public Teacher getTeacher() {
return teacher;
}
 
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
 
public CourseUnitTurma getCourseUnitTurma() {
return courseUnitTurma;
}
 
public void setCourseUnitTurma(CourseUnitTurma courseUnitTurma) {
this.courseUnitTurma = courseUnitTurma;
}
 
public String getCdTipologia() {
return cdTipologia;
}
 
public void setCdTipologia(String cdTipologia) {
this.cdTipologia = cdTipologia;
}
 
public Integer getOcorrencias() {
return ocorrencias;
}
 
public void setOcorrencias(Integer ocorrencias) {
this.ocorrencias = ocorrencias;
}
}
/**
* Os codigos de tipologia devem ser limitados a T TP OT etc
*/
public static class Tipologia
{
private String cdDocente;
private String cdTurma;
private String cdTipologia;
private Integer ocorrencias; // apenas faz sentido nos sumarios. no horario ref nao.
protected String cdDocente;
protected String cdTurma;
protected String cdTipologia;
protected String dsTipologia;
protected Integer ocorrencias; // apenas faz sentido nos sumarios. no horario ref nao.
 
protected boolean extra;
protected boolean horRef;
 
public Integer getOcorrencias() {
return ocorrencias;
}
389,6 → 486,28
this.cdTipologia = cdTipologia;
}
 
public String getDsTipologia() {
return dsTipologia;
}
 
public void setDsTipologia(String dsTipologia) {
this.dsTipologia = dsTipologia;
}
 
public boolean isExtra() {
return extra;
}
 
public boolean isSumario() {
return ocorrencias != null && ocorrencias > 0;
}
 
public boolean isHorRef() {
return horRef;
}
 
 
 
@Override
public boolean equals(Object o)
{
409,13 → 528,31
||
(((Tipologia)o).getCdTipologia().equals(getCdTipologia())));
}
 
public boolean equalsIncDsFields(Object o)
{
return o instanceof Tipologia &&
equals(o)
&&
(
(((Tipologia)o).getDsTipologia() == null && getDsTipologia() == null)
||
(((Tipologia)o).getDsTipologia().equals(getDsTipologia())))
&&
 
(
(((Tipologia)o).getOcorrencias() == null && getOcorrencias() == null)
||
(((Tipologia)o).getOcorrencias().equals(getOcorrencias())))
;
}
}
 
public static class Tipologias
{
ArrayList<Tipologia> tipologiasHorarioReferencia;
ArrayList<Tipologia> tipologiasSumarios;
ArrayList<Tipologia> tipologiasExtraAdicionadas;
ArrayList<Tipologia> tipologiasHorarioReferencia = new ArrayList<Tipologia>();
ArrayList<Tipologia> tipologiasSumarios = new ArrayList<Tipologia>();
ArrayList<Tipologia> tipologiasExtraAdicionadas = new ArrayList<Tipologia>();
 
public ArrayList<Tipologia> getTipologiasHorarioReferencia() {
return tipologiasHorarioReferencia;
450,6 → 587,7
.include("cdTipologia", Tipologia.class)
.include("cdDocente", Tipologia.class)
.include("cdTurma", Tipologia.class)
.include("dsTipologia",Tipologia.class)
.include("ocorrencias", Tipologia.class)
.create();
return genson;
483,6 → 621,42
{
new TestCourseUnit().testTipologias();
}
 
public List<Tipologia> obtainMergeTipologias()
{
List<Tipologia> merge = new ArrayList<Tipologia>();
merge.addAll(getTipologiasSumarios());
 
for(Tipologia tipo: tipologiasHorarioReferencia)
{
if(!merge.contains(tipo))
{
merge.add(tipo);
}
}
for(Tipologia tipo: tipologiasExtraAdicionadas)
{
if(!merge.contains(tipo))
{
merge.add(tipo);
}
}
for(Tipologia tipo: merge)
{
if(tipologiasHorarioReferencia.contains(tipo))
{
tipo.horRef = true;
}
 
if(tipologiasExtraAdicionadas.contains(tipo))
{
tipo.extra = true;
}
}
return merge;
}
 
 
}
 
 
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/test/TestCourseUnit.java
8,6 → 8,7
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
 
/**
26,6 → 27,7
t.setCdTurma("TINF");
t.setCdDocente("20128");
t.setCdTipologia("T");
t.setDsTipologia("Teorica");
t.setOcorrencias(2);
 
ts.getTipologiasHorarioReferencia().add(t);
34,6 → 36,7
t.setCdTurma("TINF2");
t.setCdDocente("20129");
t.setCdTipologia("T");
t.setDsTipologia("Teorica");
t.setOcorrencias(32);
 
ts.getTipologiasHorarioReferencia().add(t);
43,6 → 46,7
t.setCdTurma("TINF3");
t.setCdDocente("20130");
t.setCdTipologia("TP");
t.setDsTipologia("TeoricasPraticas");
t.setOcorrencias(10);
 
ts.getTipologiasExtraAdicionadas().add(t);
51,6 → 55,7
t.setCdTurma("TINF4");
t.setCdDocente("20131");
t.setCdTipologia("OT");
t.setDsTipologia("Orientacao");
t.setOcorrencias(1);
 
ts.getTipologiasSumarios().add(t);
59,6 → 64,7
t.setCdTurma("TINF2");
t.setCdDocente("20129");
t.setCdTipologia("T");
t.setDsTipologia("Teoricas");
t.setOcorrencias(null);
 
ts.getTipologiasSumarios().add(t);
74,7 → 80,7
while(iterOriginal.hasNext())
{
assertTrue(iterDesirialized.hasNext());
iterOriginal.next().equals(iterDesirialized.next());
iterOriginal.next().equalsIncDsFields(iterDesirialized.next());
}
assertFalse(iterDesirialized.hasNext());
 
83,7 → 89,7
while(iterOriginal.hasNext())
{
assertTrue(iterDesirialized.hasNext());
iterOriginal.next().equals(iterDesirialized.next());
iterOriginal.next().equalsIncDsFields(iterDesirialized.next());
}
assertFalse(iterDesirialized.hasNext());
 
92,7 → 98,7
while(iterOriginal.hasNext())
{
assertTrue(iterDesirialized.hasNext());
iterOriginal.next().equals(iterDesirialized.next());
iterOriginal.next().equalsIncDsFields(iterDesirialized.next());
}
assertFalse(iterDesirialized.hasNext());
 
158,7 → 164,7
while(iterOriginal.hasNext())
{
assertTrue(iterDesirialized.hasNext());
iterOriginal.next().equals(iterDesirialized.next());
iterOriginal.next().equalsIncDsFields(iterDesirialized.next());
}
assertFalse(iterDesirialized.hasNext());
 
167,7 → 173,7
while(iterOriginal.hasNext())
{
assertTrue(iterDesirialized.hasNext());
iterOriginal.next().equals(iterDesirialized.next());
iterOriginal.next().equalsIncDsFields(iterDesirialized.next());
}
assertFalse(iterDesirialized.hasNext());
 
176,7 → 182,7
while(iterOriginal.hasNext())
{
assertTrue(iterDesirialized.hasNext());
iterOriginal.next().equals(iterDesirialized.next());
iterOriginal.next().equalsIncDsFields(iterDesirialized.next());
}
assertFalse(iterDesirialized.hasNext());
 
187,4 → 193,130
e.printStackTrace();
}
}
 
public void testMerge()
{
Tipologias ts = new Tipologias();
ts.setTipologiasHorarioReferencia(new ArrayList<Tipologia>());
ts.setTipologiasExtraAdicionadas(new ArrayList<Tipologia>());
ts.setTipologiasSumarios(new ArrayList<Tipologia>());
 
 
Tipologia t = new Tipologia();
t.setCdTurma("TINF");
t.setCdDocente("20128");
t.setCdTipologia("T");
t.setOcorrencias(null);
ts.getTipologiasHorarioReferencia().add(t);
t = new Tipologia();
t.setCdTurma("TINF");
t.setCdDocente("20128");
t.setCdTipologia("PL");
t.setOcorrencias(null);
ts.getTipologiasHorarioReferencia().add(t);
 
 
t = new Tipologia();
t.setCdTurma("TINF2");
t.setCdDocente("20128");
t.setCdTipologia("OT");
t.setOcorrencias(null);
ts.getTipologiasExtraAdicionadas().add(t);
t = new Tipologia();
t.setCdTurma("TINF2");
t.setCdDocente("20128");
t.setCdTipologia("Sem");
t.setOcorrencias(null);
ts.getTipologiasExtraAdicionadas().add(t);
 
 
 
 
 
t = new Tipologia();
t.setCdTurma("TINF");
t.setCdDocente("20128");
t.setCdTipologia("T");
t.setOcorrencias(10);
ts.getTipologiasSumarios().add(t);
t = new Tipologia();
t.setCdTurma("TINF");
t.setCdDocente("20128");
t.setCdTipologia("TP");
t.setOcorrencias(20);
ts.getTipologiasSumarios().add(t);
 
boolean foundT = false;
boolean foundPL = false;
boolean foundOT = false;
boolean foundSem = false;
boolean foundTP = false;
 
String serial = null;
try {
serial = ts.serialize();
Tipologias tsTeste = Tipologias.deserialize(serial);
List<Tipologia> merge = tsTeste.obtainMergeTipologias();
 
assertTrue(merge.size() == 5);
 
for(Tipologia tipologia: merge)
{
if(tipologia.getCdTipologia().equals("T"))
{
assertTrue(tipologia.isHorRef());
assertTrue(tipologia.isSumario());
assertFalse(tipologia.isExtra());
assertTrue(tipologia.getOcorrencias() == 10);
foundT = true;
}
if(tipologia.getCdTipologia().equals("PL"))
{
assertTrue(tipologia.isHorRef());
assertFalse(tipologia.isSumario());
assertFalse(tipologia.isExtra());
assertTrue(tipologia.getOcorrencias() == null || tipologia.getOcorrencias() == 0);
foundPL = true;
}
if(tipologia.getCdTipologia().equals("OT"))
{
assertFalse(tipologia.isHorRef());
assertFalse(tipologia.isSumario());
assertTrue(tipologia.isExtra());
assertTrue(tipologia.getOcorrencias() == null || tipologia.getOcorrencias() == 0);
foundOT = true;
}
if(tipologia.getCdTipologia().equals("Sem"))
{
assertFalse(tipologia.isHorRef());
assertFalse(tipologia.isSumario());
assertTrue(tipologia.isExtra());
assertTrue(tipologia.getOcorrencias() == null || tipologia.getOcorrencias() == 0);
foundSem = true;
}
if(tipologia.getCdTipologia().equals("TP"))
{
assertFalse(tipologia.isHorRef());
assertTrue(tipologia.isSumario());
assertFalse(tipologia.isExtra());
assertTrue(tipologia.getOcorrencias() == 20);
foundTP = true;
}
}
assertTrue(foundT);
assertTrue(foundPL);
assertTrue(foundOT);
assertTrue(foundSem);
assertTrue(foundTP);
 
} catch (IOException e) {
e.printStackTrace();
} catch (TransformationException e) {
e.printStackTrace();
}
 
 
 
}
 
}
/branches/v3/impl/src/web/user/home/userPae.jsp
11,119 → 11,28
 
<div class="row">
<div class="col-md-6 col-sm-12 col-xs-12">
<div class="panel panel-primary">
<div class="panel-heading"><bean:message key="intranet.home.curricular"/></div>
<div class="panel-body">
<div class="list-group">
 
<div class="list-group-item"><html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.indexes"/> </html:link></div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/horarios/intranet/escola/horarios.html">Horários</a>
</div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/calEscolar/public/portal/CL20102011.pdf">Calendário Escolar</a>
</div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/secretaria/intranet/escola/secretaria.html">Secretaria</a>
</div>
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
 
 
</baco:hasRole>
</div>
</div>
</div>
<baco:hasRole role="admin,all,services">
<div class="panel panel-primary">
<div class="panel-heading">Ferramentas Académicas</div>
<div class="panel-heading">Ferramentas Académicas (MODO BACO)</div>
<div class="panel-body">
<div class="list-group">
<baco:hasRole role="pedagogicCouncil">
<div class="list-group-item"><html:link action="/user/coursePedagogicContents"><bean:message key="course.pedagogic.contents.admin"/> </html:link></div>
</baco:hasRole>
<baco:isAdmin>
<div class="list-group-item"><html:link action="/admin/courseUnitsDeleteAdmin">Administração de Unidades Curriculares (Remoções)</html:link></div>
</baco:isAdmin>
<div class="list-group-item"><html:link action="/user/configurationGrades">Épocas de Avaliação</html:link></div>
<baco:isAdmin>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/configurationUserRoles.do"><bean:message key="configuration.roles"/></a></div>
</baco:isAdmin>
<div class="list-group-item">Situação de Propinas de Alunos (Por implementar)</div>
<div class="list-group-item"><html:link action="/user/findProfile"><bean:message key="profile.search.user"/></html:link></div>
<div class="list-group-item"><html:link action="/user/startFindCourseUnitAdminFromServiceZone"><bean:message key="courseunit.search"/></html:link></div>
<div class="list-group-item"><html:link action="/user/courseComissions">Informação Adicional de Cursos</html:link></div>
<div class="list-group-item"><html:link action="/user/startSelectCourseFromServiceZone"><bean:message key="course.select"/></html:link></div>
<div class="list-group-item"><html:link action="/user/configurationSchedulleTasks.do"><bean:message key="configuration.tasks"/></html:link></div>
</div>
</div>
</div>
</baco:hasRole>
<baco:hasRole role="ci">
</div>
<div class="col-md-6 col-sm-12 col-xs-12">
<baco:hasRole role="admin,all,services">
<div class="panel panel-primary">
<div class="panel-heading">Ferramentas de Gestão do CI</div>
<div class="panel-heading">Questionários Pedagógicos</div>
<div class="panel-body">
<div class="list-group">
<div class="list-group-item">Configurações Gerais (Por implementar)</div>
<div class="list-group-item">>Tarefas Agendadas (Por implementar)</div>
<div class="list-group-item">Criar um Backup SQL Agora (Por Implementar)</div>
<baco:isModuleOn module="intranet">
<div class="list-group-item">
<html:link target="_blank" action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createIntranetFolders">
<bean:message key="intranet.create.folders"/>
</html:link>
</div>
</baco:isModuleOn>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/configurationDirectories.do"><bean:message key="configuration.directories"/></a></div>
 
<div class="list-group-item"><html:link action="/user/configurationSchedulleTasks.do">Administração de Questionários</html:link></div>
<div class="list-group-item"><html:link action="/user/configurationSchedulleTasks.do">Consulta de Resultados</html:link></div>
</div>
 
</div>
</div>
</baco:hasRole>
 
<baco:isModuleOn module="todos">
<jsp:include page="/user/home/todos.jsp"/>
</baco:isModuleOn>
</div>
<div class="col-md-6 col-sm-12 col-xs-12">
<div class="panel panel-primary">
<div class="panel-heading">Comunicar</div>
<div class="panel-body">
<div class="list-group">
 
 
<baco:isModuleOn module="todos">
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
<div class="list-group-item">
<html:link action="/user/startSubmitTodoAnnouncementFromServiceZone">
<bean:message key="submit.todo.announcement"/>
</html:link>
</div>
 
</baco:hasRole>
<baco:hasRole role="admin,all,services,sendMailMessages">
<div class="list-group-item">
<html:link action="/user/startSubmitMessage">
<bean:message key="submit.todo.message"/>
</html:link>
</div>
</baco:hasRole>
</baco:isModuleOn>
 
</div>
</div>
 
</div>
<!--
<div class="panel panel-primary">
<div class="panel-heading">Atalhos</div>
<div class="panel-body">
<div class="list-group">
 
</div>
</div>
</div>
-->
 
<jsp:include page="courseComission.jsp"/>
</div>
</div>