Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1337 → Rev 1338

/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/DisciplinaDao.java
116,8 → 116,11
while (aReader.next())
{
Disciplina d = getDisciplina(aReader);
d.setCdDuracao(semestre);
d.setCdLectivo(ano);
d.setTipologiasHorario(loadTipologiasHorario(ano,semestre,d.getCodigoCurso(),d.getCodigo(),conn));
d.setTipologiasSumario(loadTipologiasSumarios(ano,semestre,d.getCodigoCurso(),d.getCodigo(),conn));
d.setTipologiasHorarioTrabalho(loadTipologiasHorarioTrabalho(ano,semestre,d.getCodigoCurso(),d.getCodigo(),conn));
disciplinas.add(d);
}
//close the reader
263,5 → 266,89
ps.close();
return tipologiasSumario;
}
 
 
/**
* So muda do de cima porque usa a entrada TipoDeOcupação do Horario de Trabalho
* @param ano
* @param semestre
* @param codigoCurso
* @param codigoDisciplina
* @param conn
* @return
* @throws SQLException
*/
private TipologiasSumario loadTipologiasHorarioTrabalho(String ano,
String semestre,
Integer codigoCurso,
Integer codigoDisciplina,
Connection conn) throws SQLException {
TipologiasSumario tipologiasSumario = new TipologiasSumario();
tipologiasSumario.setTipologias(new ArrayList<TipologiasSumario.TipologiaSumario>());
PreparedStatement ps = conn.prepareStatement(
"SELECT COUNT( DISTINCT (CD_SUMARIO)) AS OCURR, " +
" CSH.T_DETALHE_AULA.CD_TURMA AS DA_CD_TURMA , " +
" CSH.T_OCUPACOES.CD_TIPO_OCUPACAO AS CD_TIPO_OCUPACAO," +//CAMPO TIPO OCUP
" CSH.T_DETALHE_AULA.CD_DOCENTE AS DA_CD_DOCENTE " +
"FROM " +
" ((((CSH.T_OCUPACOES LEFT OUTER JOIN CSH.T_DETALHE_OCUPACAO ON " +
" CSH.T_DETALHE_OCUPACAO.CAMPO_REFERENCIA = CSH.T_OCUPACOES.CAMPO_REFERENCIA " +
" AND " +
" CSH.T_DETALHE_OCUPACAO.DT_OCUPACAO = CSH.T_OCUPACOES.DT_OCUPACAO " +
" AND " +
" CSH.T_DETALHE_OCUPACAO.NR_OCUPACAO = CSH.T_OCUPACOES.NR_OCUPACAO " +
" ) " +
" LEFT OUTER JOIN CSH.T_DETALHE_AULA ON " +
" CSH.T_DETALHE_AULA.CAMPO_REFERENCIA = CSH.T_OCUPACOES.CAMPO_REFERENCIA " +
" AND " +
" CSH.T_DETALHE_AULA.DT_OCUPACAO = CSH.T_OCUPACOES.DT_OCUPACAO " +
" AND " +
" CSH.T_DETALHE_AULA.NR_OCUPACAO = CSH.T_OCUPACOES.NR_OCUPACAO " +
" ) " +
" LEFT OUTER JOIN CSD.T_SUMARIOS_AULAS ON " +
" CSD.T_SUMARIOS_AULAS.CD_SUMARIO = CSH.T_DETALHE_AULA.CD_SUMARIO " +
" ) " +
" LEFT OUTER JOIN CSE.T_TURMA ON " +
" CSH.T_DETALHE_AULA.CD_TURMA = CSE.T_TURMA.CD_TURMA " +
" AND " +
" CSH.T_DETALHE_AULA.CD_LECTIVO = CSE.T_TURMA.CD_LECTIVO " +
" AND " +
" CSH.T_DETALHE_AULA.CD_PERIODO = CSE.T_TURMA.CD_DURACAO " +
" AND " +
" CSH.T_DETALHE_AULA.CD_DISCIP = CSE.T_TURMA.CD_DISCIP " +
" ) " +
" WHERE " +
" CSH.T_DETALHE_AULA.CD_LECTIVO = ? " +
" AND CSH.T_DETALHE_AULA.CD_PERIODO = ? " +
" AND CSH.T_DETALHE_AULA.CD_DISCIP= ? " +
" AND (CSE.T_TURMA.CD_CURSO = ? OR CSE.T_TURMA.CD_CURSO is NULL) " +
" AND CSD.T_SUMARIOS_AULAS.CD_ESTADO is not null " +
" GROUP BY " +
" CSH.T_DETALHE_AULA.CD_TURMA, " +
" CSH.T_OCUPACOES.CD_TIPO_OCUPACAO, " +
" CSH.T_DETALHE_AULA.CD_DOCENTE ");
ps.setString(1,ano);
ps.setString(2,semestre);
ps.setInt(3,codigoDisciplina);
ps.setInt(4,codigoCurso);
 
ResultSet rs = ps.executeQuery();
 
while(rs.next())
{
TipologiasSumario.TipologiaSumario th = new TipologiasSumario.TipologiaSumario();
th.setCdTurma(getString("DA_CD_TURMA",rs));
th.setCdDocente(getDecimal("DA_CD_DOCENTE", rs));
th.setCdTipoAula(getDecimal("CD_TIPO_OCUPACAO", rs));
th.setNumeroOcorrencias(getDecimal("OCURR",rs));
if(th.getCdTurma() != null && th.getCdDocente() > 0 && th.getCdTipoAula() > 0)
tipologiasSumario.getTipologias().add(th);
else
logger.error("Tipologia de sumario invalida encontrada na disciplina: (" + codigoDisciplina + "): " + th.toString());
}
rs.close();
ps.close();
return tipologiasSumario;
}
}
 
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/domain/Disciplina.java
56,6 → 56,7
 
public TipologiasHorario tipologiasHorario;
public TipologiasSumario tipologiasSumario;
public TipologiasSumario tipologiasHorarioTrabalho;
 
public Disciplina()
{
122,6 → 123,14
this.tipologiasSumario = tipologiasSumario;
}
 
public TipologiasSumario getTipologiasHorarioTrabalho() {
return tipologiasHorarioTrabalho;
}
 
public void setTipologiasHorarioTrabalho(TipologiasSumario tipologiasHorarioTrabalho) {
this.tipologiasHorarioTrabalho = tipologiasHorarioTrabalho;
}
 
public Integer getCodigo() {
return codigo;
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java
303,7 → 303,12
Disciplina inCache = disciplinasMap.get(getDisciplinaUniqueRef(d,year,logMessages));
 
if (inCache != null
// && !turmasSeparatedPolicy // Com politica de turmas separadas no curso a repeticao é normal uma por turma
// && !turmasSeparatedPolicy // Com politica de turmas separadas no curso a repeticao NÃO é normal
//A disciplina em cache significa que já foi importada da lista do SIGES uma disciplina
//com o mesmo código unico
//No caso dos cursos normais onde se encontram varias turmas é normal aparecerem aqui repetições
// nesses casos apenas uma vai para o Mapa, o que acontece é que precisamos de uma entrada por turma
//para os casos dos cursos de turmas separadas
)
{
logMessages.addMessage(new DefaultLogMessage("import.semestre." + semestre, LogMessageTypeEnum.INFO,"Other turma for a unit in " + semestre + ":" + d.getCodigo().intValue() + " -> " + d.getCdTurma()));
480,6 → 485,27
}
 
}
for(TipologiasSumario.TipologiaSumario tipologiaHorarioTrabalho : d.getTipologiasHorarioTrabalho().getTipologias())
{
CourseUnitImpl.Tipologia tipoSum = new CourseUnitImpl.Tipologia();
String codigoCorrespondenteTipoAula =
ConfigProperties.getProperty("netpa.code.ocup." + tipologiaHorarioTrabalho.getCdTipoAula() + ".tipo.aula");
if(codigoCorrespondenteTipoAula != null && codigoCorrespondenteTipoAula.length() > 0)
{
tipoSum.setOcorrencias(null);
tipoSum.setDsTipologia(ConfigProperties.getProperty("netpa.tipo.aula." + codigoCorrespondenteTipoAula));
tipoSum.setCdTipologia("" + codigoCorrespondenteTipoAula);
tipoSum.setCdTurma(tipologiaHorarioTrabalho.getCdTurma());
tipoSum.setCdDocente("" + tipologiaHorarioTrabalho.getCdDocente());
if(!t.getTipologiasHorarioReferencia().contains(tipoSum))
t.getTipologiasHorarioReferencia().add(tipoSum);
}
else
{
System.out.println("Tipologia: cd tipo ocup ignorado:" + tipologiaHorarioTrabalho.getCdTipoAula());
}
 
}
c.setTipologiasClass(t);
} catch (Exception e) {
logger.error(e, e);
644,7 → 670,7
public static void main(String[] args) throws ServiceException
{
String year = DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction();
int institutionCode = DaoFactory.getConfigurationDaoImpl().getInstitutionCodeCreateTransaction();
int institutionCode = 4;// DaoFactory.getConfigurationDaoImpl().getInstitutionCodeCreateTransaction();
if(args != null && args.length > 0)
year = args[0];
if(args != null && args.length > 1)
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/pedagogico/UpdateCoursesAndUnitsJobService.java
463,6 → 463,8
serviceLogInfo(msg);
logger.info(msg);
unidadeAfeta = DomainObjectFactory.createQuestionarioPedagogicoUnidadeCurricularAfeta();
unidadeAfeta.setUsar(true);
unidadeAfeta.setVista(false);
DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().save(unidadeAfeta);
}
 
483,6 → 485,7
checkTurmas(cur, unidadeAfeta);
checkStudents(cur, unidadeAfeta);
 
 
if(unidadeAfeta.isMarked())
cursoAfeto.incMarcadas();
 
633,4 → 636,25
}
 
}
 
public void updateCheckVarPedagogico(long questionarioId,long unidadeAfetaId, String op,String val,UserSession session, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
 
if(!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name()))
{
throw new NotAuthorizedException("Nao tem autorização para alterar as tipologias");
}
QuestionarioPedagogicoUnidadeCurricularAfetaImpl unidade = (QuestionarioPedagogicoUnidadeCurricularAfetaImpl) DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().load(unidadeAfetaId);
if(op.equals("usar"))
{
unidade.setUsar(Boolean.parseBoolean(val));
}
else if(op.equals("vista"))
{
unidade.setVista(Boolean.parseBoolean(val));
}
else if(op.equals("observacoes"))
{
unidade.setObs(val);
}
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java
203,6 → 203,8
turmas.add(tv);
}
}
else
logger.error("Unidade sem turmas: " + courseUnit.getName() + " (" + courseUnit.getCode() + ")");
}
if(initBlog)
{
327,6 → 329,68
return 0;
}
 
public int getStudentsTurmaSize(String turma)
{
for(CourseUnitTurmaView turmaView : turmas)
{
if(turmaView.getTurma().equals(turma))
return turmaView.getStudents().size();
}
return 0;
}
 
public List<UserView> getStudentsTurmaOrderedByName(String turma)
{
ArrayList<UserView> studentsOrderedByName = new ArrayList<UserView>();
for(CourseUnitTurmaView turmaView : turmas)
{
if(turmaView.getTurma().equals(turma))
studentsOrderedByName.addAll(turmaView.getStudents());
}
Collections.sort(studentsOrderedByName,new Comparator<UserView>()
{
 
public int compare(UserView o1, UserView o2)
{
if(o1 == null || o1.getName() == null)
return 1;
if(o2 == null || o2.getName() == null)
return -1;
return o1.getName().compareTo(o2.getName());
}
}
);
 
return studentsOrderedByName;
}
 
public List<UserView> getStudentsTurmaOrderedByNumber(String turma)
{
ArrayList<UserView> studentsOrderedByName = new ArrayList<UserView>();
for(CourseUnitTurmaView turmaView : turmas)
{
if(turmaView.getTurma().equals(turma))
studentsOrderedByName.addAll(turmaView.getStudents());
}
Collections.sort(studentsOrderedByName,new Comparator<UserView>()
{
 
public int compare(UserView o1, UserView o2)
{
if(o1 == null || o1.getCode() == 0)
return 1;
if(o2 == null || o2.getCode() == 0)
return -1;
return o1.getCode() - o2.getCode();
}
}
);
 
return studentsOrderedByName;
}
 
 
 
public void setCourseUnitAssignements(List<CourseUnitAssignementView> courseUnitAssignements)
{
this.courseUnitAssignements = courseUnitAssignements;
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
462,7 → 462,7
tipologiaPersistent.setCourseUnitTurma(findTurma(myTipo.getCdTurma()));
if(tipologiaPersistent.getCourseUnitTurma() == null || tipologiaPersistent.getTeacher() == null)
{
logger.error("Turma ou professor nao encontrados enquanto fazia uma tipologia persistente");
logger.error("Turma ou professor nao encontrados enquanto fazia uma tipologia persistente: turma:" + myTipo.getCdTurma() + " teacher code: " + myTipo.getCdDocente());
return null;
}
return tipologiaPersistent;
554,7 → 554,7
}
 
public Integer getOcorrencias() {
return ocorrencias;
return ocorrencias == null ? 0:ocorrencias;
}
 
public void setOcorrencias(Integer ocorrencias) {
570,7 → 570,7
protected String cdTurma;
protected String cdTipologia;
protected String dsTipologia;
protected Integer ocorrencias; // apenas faz sentido nos sumarios. no horario ref nao.
protected Integer ocorrencias = 0; // apenas faz sentido nos sumarios. no horario ref nao.
 
protected boolean use; //campo auxiliar para marcar se vai ser ou não usada nas afetacoes especificas
//por omissão apenas as que têm sumários
596,9 → 596,13
}
 
public Integer getOcorrencias() {
return ocorrencias;
return ocorrencias == null ? 0:ocorrencias;
}
 
public boolean hasOcorrencias() {
return ocorrencias != null && ocorrencias > 0;
}
 
public void setOcorrencias(Integer ocorrencias) {
this.ocorrencias = ocorrencias;
}
974,14 → 978,16
simples.setCdTurma(tipo.getCdTurma());
simples.setCdTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE);
simples.setDsTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_DS);
if(tipo.getOcorrencias() > 0)
if(tipo.hasOcorrencias())
{
simples.setOcorrencias(tipo.getOcorrencias());
}
turmasDocente.put(tipo.getCdTurma(),simples);
}
if(tipo.getOcorrencias() > 0)
if(tipo.hasOcorrencias())
{
if(simples.getOcorrencias() == null)
simples.setOcorrencias(0);
simples.setOcorrencias(simples.getOcorrencias()+tipo.getOcorrencias());
}
 
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/QuestionarioPedagogicoCursoAfetoDaoImpl.java
1,5 → 1,7
package pt.estgp.estgweb.domain.dao.impl;
 
import jomm.dao.impl.AbstractDao;
import org.hibernate.Query;
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto;
 
import java.util.List;
30,4 → 32,41
.add(eq("questionario.id", questionarioId))
.list();
}
 
 
 
 
public static class CourseStatsVars
{
public long unidades;
public long marcadas;
public long observadas;
public long porVer;
public long naoUsadas;
}
 
public CourseStatsVars loadStats(long cursoAfetoId)
{
CourseStatsVars courseStatsVars = new CourseStatsVars();
Query q = AbstractDao.getCurrentSession().createQuery("SELECT " +
" sum (case when u.vista = false then 1 else 0 end) AS porVer " +
",sum (case when u.usar = false then 1 else 0 end) AS naoUsadas " +
",sum (case when u.marked = true then 1 else 0 end) AS marked " +
",sum (case when u.obs is not NULL and u.obs != '' then 1 else 0 end) AS observadas " +
",count(distinct u.id) AS unidades " +
"from " + QuestionarioPedagogicoCursoAfeto.class.getName() + " c " +
"JOIN c.unidadesAfetas u " +
"WHERE c.id = :id " +
"GROUP BY c.id");
 
q.setLong("id",cursoAfetoId);
Object[] results = (Object[]) q.uniqueResult();
courseStatsVars.porVer = (Long) results[0];
courseStatsVars.naoUsadas = (Long) results[1];
courseStatsVars.marcadas = (Long) results[2];
courseStatsVars.observadas = (Long) results[3];
courseStatsVars.unidades = (Long) results[4];
 
return courseStatsVars;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ConfigurationDaoImpl.java
27,6 → 27,7
"0," + //Erasmus ESTG
"4," + //Disciplinas Avulso ESTG
"5," + //Disciplinas Avulso ESAE
"6," + //Disciplinas Avulso ESE
"7," + //Erasmus ESAE
"19," +//Vasco da Gama
"22," +//Disciplinas Avulso ESS
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/profile/ProfileController.java
214,7 → 214,9
ProfileForm pF = (ProfileForm) form;
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response);
long userToLoad;
if (pF.getUserView().getId() > 0)
if (request.getParameter("id")!=null)
userToLoad = Long.parseLong(request.getParameter("id"));
else if (pF.getUserView() != null && pF.getUserView().getId() > 0)
userToLoad = pF.getUserView().getId();
else
userToLoad = userSession.getUser().getId();
243,8 → 245,12
{
ProfileForm pF = (ProfileForm) form;
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response);
String id = request.getParameter("id");
long userToLoad;
if (pF.getUserView().getId() > 0)
 
if (id != null)
userToLoad = Long.valueOf(id);
else if (pF.getUserView().getId() > 0)
userToLoad = pF.getUserView().getId();
else
userToLoad = userSession.getUser().getId();
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/questionarios/QuestionarioCourseSelectionController.java
94,4 → 94,6
return mapping.findForward("coursesCheck");
}
 
 
 
}