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