/branches/v3/impl/local-exampleNotInUse.properties |
---|
2,6 → 2,8 |
## Properties file to be used with ant build.xml |
## |
env.JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home |
##database configuration |
database.host=localhost |
database.port=3306 |
/branches/v3/impl/conf/language/MessageResources.properties |
---|
586,6 → 586,10 |
targetService.pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService=Clonagem de Fichas Curriculares |
targetService.pt.estgp.estgweb.services.sigesimports.GenerateCourseUnitProgramsService=Gerar PDF's Fichas Curriculares |
targetService.pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService=Selecção de Cursos Questionários |
targetService.pt.estgp.estgweb.services.questionarios.pedagogico.AssignAnswersJobService=Atribuição de Respostas a Questionários |
targetService.pt.estgp.estgweb.services.questionarios.pedagogico.TeachersAnswersProcessor=Atribuição de Respostas a Questionários de Docentes |
targetService.pt.estgp.estgweb.services.questionarios.pedagogico.AnswersAlunosProcessor=Atribuição de Respostas a Questionários de Alunos |
targetService.pt.estgp.estgweb.services.courses.CourseUnitsStatisticsJobService=Gerar Estatisticas Unidades Curriculares |
weekday.Mon=Segundas |
1783,6 → 1787,7 |
# |
################################################################################ |
error.questionario.com.respostas.nao.pode.efetuar.op=Operação não permitida, Existem Respostas |
error.questionario.p.without.group=Verifique a pergunta {0} nao tem grupo |
error.questionario.group.without.p=Verifique o grupo {0} nao tem pergunta |
warn.questionario.repeated.in.time=Aviso: Já existe um questionário ({0}) nesse ano e semestre na categoria histórica escolhida |
1791,10 → 1796,16 |
questionario.year.semestre.ok=Ano e Semestre alterados com sucesso |
questionarios.choose.courses=Selecção de Cursos para o Periodo {0} de {1} |
questionarios.check.courses=Verificação de Questionarios/Tipologias de Cursos para o Periodo {0} de {1} |
questionarios.assign.answers=Atribuição de Respostas para o Periodo {0} de {1} |
questionarios.courses.start=Atribuição de Cursos Iniciada |
questionarios.answers.start=Atribuição de Respostas Iniciada |
questionario.tipologias.update.success=Tipologias atualizadas com sucesso |
questionario.resposta=Resposta a Questionário |
questionario.resposta.com.sucesso=A sua resposta foi submetida com sucesso ao nosso sistema de avaliação. Obrigado |
questionario.respostas.grupos.1.2.3=Os grupos 1 2 e 3 são obrigatórios por favor responda às questões. Obrigado. |
################################################################################ |
# |
# REMINDERS MESSAGE RESOURCES |
1892,10 → 1903,19 |
questionario.state.PROCESSING_OLAP=Gerando Cubos OLAP |
questionario.state.OLAP=Cubos OLAP Terminados |
questionario.state.START=Afetações Inicio |
questionario.state.YEAR_SEMESTRE_ASSIGNED=Ano e Semestre Atribuido |
questionario.state.ASSIGNING_COURSES=Atribuindo Cursos |
questionario.state.COURSES_ASSIGNED=Cursos Atribuidos |
questionario.state.ASSIGNING_ANSWERS=Atribuindo Respostas Candidatas |
questionario.state.ANSWERS_ASSIGNED=Respostas Candidatas Atribuidas |
questionario.state.FINNISHED_ANSWERS_GENERATING=Terminadas as Afetações |
questionario.historydrive=Categoria Histórica |
questionario.answerprocessor=Processador de Respostas |
# SERVICE ZONE |
survey.admin=Administração do Questionário {0} |
survey.see=Acompanhar Questionário {0} |
surveys=Questionários |
survey.newEdit.survey=Formulário do Questionário |
survey.create.survey=Criar Questionário |
/branches/v3/impl/conf/WEB-INF/struts/tiles-pae-questionarios.xml |
---|
13,6 → 13,12 |
<put name="body" value="/user/questionarios/questionariosList.jsp"/> |
</definition> |
<definition name="page.pae.see.questionarios" extends="page.pae.separators.home"> |
<put name="separator" value="1" type="string"/> |
<put name="topnav" value="/user/questionarios/topnavQuestionarioList.jsp"/> |
<put name="body" value="/user/questionarios/questionariosSee.jsp"/> |
</definition> |
<definition name="page.pae.questionario.newEdit" extends="page.pae.separators.home"> |
<put name="separator" value="1" type="string"/> |
<put name="topnav" value="/user/questionarios/topnavQuestionarioNewEdit.jsp"/> |
26,6 → 32,13 |
</definition> |
<definition name="page.pae.questionario.see" extends="page.pae.separators.home"> |
<put name="separator" value="1" type="string"/> |
<put name="topnav" value="/user/questionarios/topnavQuestionarioSee.jsp"/> |
<put name="body" value="/user/questionarios/pedagogicoEstudante/questionarioDashBoard.jsp"/> |
</definition> |
<!-- Modulo do Pedagogico Estudantes --> |
<definition name="page.pae.questionario.courses.selection" extends="page.pae.separators.home"> |
<put name="separator" value="1" type="string"/> |
37,5 → 50,18 |
<put name="topnav" value="/user/questionarios/pedagogicoEstudante/topnavQuestionarioPedagogicoCoursesCheck.jsp"/> |
<put name="body" value="/user/questionarios/pedagogicoEstudante/pedagogicoEstudanteCoursesCheck.jsp"/> |
</definition> |
<definition name="page.pae.questionario.assign.answers" extends="page.pae.separators.home"> |
<put name="separator" value="1" type="string"/> |
<put name="topnav" value="/user/questionarios/pedagogicoEstudante/topnavQuestionarioPedagogicoAssignAnswers.jsp"/> |
<put name="body" value="/user/questionarios/pedagogicoEstudante/pedagogicoEstudanteAssignAnswers.jsp"/> |
</definition> |
<definition name="page.pae.questionario.resposta.questionario" extends="page.pae.separators.home"> |
<put name="separator" value="1" type="string"/> |
<put name="topnav" value="/user/questionarios/topnavQuestionarioResposta.jsp"/> |
<put name="body" value="/user/questionarios/respostaQuestionario.jsp"/> |
</definition> |
</tiles-definitions> |
/branches/v3/impl/conf/WEB-INF/struts/struts-pagecontent.xml |
---|
24,10 → 24,12 |
<action path="/user/loapPageSeparatorDocuments" forward="page.separators.pagecontents"/> |
<action path="/user/loadPage" forward="page.separators.pagecontents"/> |
</action-mappings> |
</struts-config> |
/branches/v3/impl/conf/WEB-INF/struts/struts-pae-questionarios.xml |
---|
9,6 → 9,7 |
<form-beans> |
<form-bean type="pt.estgp.estgweb.web.form.questionarios.QuestionarioForm" name="QuestionarioForm"/> |
<form-bean type="pt.estgp.estgweb.web.form.questionarios.QuestionarioRespostaForm" name="QuestionarioRespostaForm"/> |
</form-beans> |
<global-exceptions> |
32,10 → 33,14 |
<action path="/user/startNewQuestionario" forward="/user/questionariosPaeNoValidation.do?dispatch=startNew"/> |
<action path="/user/listQuestionarios" forward="page.pae.questionario.list"/> |
<action path="/user/seeQuestionarios" forward="page.pae.see.questionarios"/> |
<action path="/user/adminQuestionario" forward="page.pae.questionario.admin"/> |
<action path="/user/seeQuestionario" forward="page.pae.questionario.see"/> |
<action path="/user/formQuestionariosPae" forward="/user/questionariosPaeNoValidation.do?dispatch=form"/> |
<action path="/user/deleteQuestionario" forward="/user/questionariosPaeNoValidation.do?dispatch=deleteQuestionario"/> |
<action path="/user/startRespostaQuestionario" forward="page.pae.questionario.resposta.questionario"/> |
<action path="/user/questionariosPaeStartAfectacoes" forward="/user/questionariosPaeNoValidation.do?dispatch=startAfetacoes"/> |
<action path="/user/questionariosPaeNoValidation" |
74,10 → 79,22 |
<forward name="admin" path="page.pae.questionario.admin"/> |
</action> |
<action path="/user/questionariosPaeResposta" |
type="pt.estgp.estgweb.web.controllers.questionarios.QuestionarioYearSemestreController" |
name="QuestionarioRespostaForm" |
scope="request" |
parameter="dispatch" |
validate="true" |
input="page.pae.questionario.resposta.questionario"> |
<forward name="success" path="page.pae.separators.home"/> |
</action> |
<!--%%%%%%%%%%%%%%%% Pedagogico Alunos Modulo %%%%%%%%%%%%%%%%%%%--> |
<action path="/user/questionarioPedagogicoStartChooseCourses" forward="page.pae.questionario.courses.selection"/> |
<action path="/user/questionarioPedagogicoStartCheckCourses" forward="page.pae.questionario.courses.check"/> |
<action path="/user/questionarioPedagogicoStartAssignAnswers" forward="page.pae.questionario.assign.answers"/> |
<action path="/user/questionariosPaeSelectCourses" |
type="pt.estgp.estgweb.web.controllers.questionarios.QuestionarioCourseSelectionController" |
name="QuestionarioForm" |
87,9 → 104,11 |
input="page.pae.questionario.courses.selection"> |
<forward name="coursesSelection" path="page.pae.questionario.courses.selection"/> |
<forward name="coursesCheck" path="page.pae.questionario.courses.check"/> |
<forward name="assignAnswers" path="page.pae.questionario.assign.answers"/> |
<forward name="admin" path="page.pae.questionario.admin"/> |
</action> |
<!--%%%%%%%%%%%%%%%% Pedagogico Alunos Modulo %%%%%%%%%%%%%%%%%%%--> |
/branches/v3/impl/conf/WEB-INF/tlds/jomm.tld |
---|
4,7 → 4,7 |
<tlibversion>1.0</tlibversion> |
<jspversion>1.1</jspversion> |
<shortname>jomm</shortname> |
<uri>http://www.estgp.pt/</uri> |
<uri>http://jomm.pt/</uri> |
<tag> |
<name>equalBeans</name> |
<tagclass>jomm.web.tags.EqualBeansTag</tagclass> |
/branches/v3/impl/conf/WEB-INF/tlds/baco.tld |
---|
3,8 → 3,8 |
<taglib> |
<tlibversion>1.0</tlibversion> |
<jspversion>1.1</jspversion> |
<shortname>estgweb</shortname> |
<uri>http://www.estgp.pt/</uri> |
<shortname>baco</shortname> |
<uri>http://www.estgp.pt/baco/</uri> |
<tag> |
<name>isModuleOff</name> |
<tagclass>pt.estgp.estgweb.web.tags.IsModuleOffTag</tagclass> |
295,6 → 295,25 |
</attribute> |
</tag> |
<tag> |
<name>instanceOf</name> |
<tagclass>pt.estgp.estgweb.web.tags.InstanceOfTag</tagclass> |
<attribute> |
<name>name</name> |
<required>true</required> |
<rtexprvalue>true</rtexprvalue> |
</attribute> |
<attribute> |
<name>property</name> |
<required>false</required> |
<rtexprvalue>false</rtexprvalue> |
</attribute> |
<attribute> |
<name>value</name> |
<required>true</required> |
<rtexprvalue>true</rtexprvalue> |
</attribute> |
</tag> |
<tag> |
<name>clearPageContent</name> |
<tagclass>pt.estgp.estgweb.web.tags.ClearPageContentTag</tagclass> |
<attribute> |
412,7 → 431,7 |
</tag> |
<!--Name and property of UnitId--> |
<!--<tag> |
<tag> |
<name>initCourseUnitEvaluationClearances</name> |
<tagclass>pt.estgp.estgweb.web.tags.InitCourseUnitEvaluationClearancesTag</tagclass> |
<attribute> |
425,7 → 444,7 |
<required>false</required> |
<rtexprvalue>false</rtexprvalue> |
</attribute> |
</tag>--> |
</tag> |
<tag> |
<name>initClearances</name> |
/branches/v3/impl/conf/WEB-INF/web.xml |
---|
4,13 → 4,17 |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" > |
<listener> |
<!--<listener> |
<listener-class> |
com.sun.xml.ws.transport.http.servlet.WSServletContextListener |
</listener-class> |
</listener> |
--> |
<filter> |
<filter-name>CacheControlFilter</filter-name> |
<filter-class>pt.estgp.estgweb.web.filters.CacheControlFilter</filter-class> |
</filter> |
<filter> |
<filter-name>UserRoleProxy</filter-name> |
<filter-class>pt.estgp.estgweb.web.filters.UserRoleProxy</filter-class> |
</filter> |
63,6 → 67,10 |
<filter-class>pt.estgp.estgweb.web.filters.CertificateAuthenticationFilter</filter-class> |
</filter> |
<filter-mapping> |
<filter-name>CacheControlFilter</filter-name> |
<url-pattern>/*</url-pattern> |
</filter-mapping> |
<!-- THIS MUST BE THE FIRST FILTER IN CHAIN--> |
<filter-mapping> |
<filter-name>Set-Character-Encoding</filter-name> |
99,6 → 107,10 |
</filter-mapping> |
<filter-mapping> |
<filter-name>UserFilter</filter-name> |
<url-pattern>/proxy/*/ionline/*</url-pattern> |
</filter-mapping> |
<filter-mapping> |
<filter-name>UserFilter</filter-name> |
<url-pattern>/dir/utilsIntranet/*</url-pattern> |
</filter-mapping> |
<filter-mapping> |
/branches/v3/impl/conf/app.properties |
---|
147,7 → 147,7 |
ionline.use.default.credentials.to.updates.and.deletes=false |
ionline.use.default.credentials.to.read=false |
ionline.use.default.credentials.to.read.if.user.fail.when.authenticated=true |
ionline.use.default.credentials.to.read.if.user.fail.when.not.authenticated=true |
ionline.use.default.credentials.to.read.if.user.fail.when.not.authenticated=false |
##ESTA CONFIGURACAO ESTA FUNCIONAL |
## Ver nos Ficheiros FtpService metodo run |
## Ver LayoutController |
165,7 → 165,7 |
server.grupos.start.path=/grupos |
grupos.pass=ftppublic |
grupos.user=ftppublic |
grupos.use.default.credentials.to.read=true |
grupos.use.default.credentials.to.read=false |
#Irrelevantes vai usar sempre as defaults |
grupos.use.default.credentials.to.read.if.user.fail.when.authenticated=true |
grupos.use.default.credentials.to.read.if.user.fail.when.not.authenticated=true |
674,6 → 674,8 |
#if set url in baco separators will allays be enabled |
#mode.pae.enabled=false |
#system.theme=estg |
#system.redirections.policy.index.welcome=welcome |
#system.redirections.policy.authentication.action=/authenticate.do |
682,18 → 684,21 |
#authentication.policy.password.msg.key=password |
#system.theme=ipp |
#mode.pae.enabled=true |
#system.redirections.policy.index.welcome=welcomePedagogicSurvey |
#system.redirections.policy.authentication.action=/authenticatePae.do |
#authentication.policy.service=AuthenticatePae |
#authentication.policy.username.msg.key=username.pae |
#authentication.policy.password.msg.key=password.pae |
mode.pae.enabled=@mode.pae.enabled@ |
system.theme=@system.theme@ |
authentication.policy.service=@authentication.policy.service@ |
authentication.policy.username.msg.key=@authentication.policy.username.msg.key@ |
authentication.policy.password.msg.key=@authentication.policy.password.msg.key@ |
system.redirections.policy.index.welcome=@system.redirections.policy.index.welcome@ |
system.redirections.policy.authentication.action=@system.redirections.policy.authentication.action@ |
system.redirections.policy.authentication.logout.action=@system.redirections.policy.authentication.logout.action@ |
###AQUI PODEMOS USAR OU TRA INTRANET OU OUTRO PORTAL PUBLICO |
/branches/v3/impl/conf/directories/style1.xsl |
---|
428,9 → 428,10 |
<xsl:when test="./@ftpDirectory='true'"> |
<tr class="dir"> |
<td colspan="3" > |
<img> |
<!--<img> |
<xsl:attribute name="src"><xsl:value-of select="$contextPath"/>/imgs/folder.gif</xsl:attribute> |
</img> |
</img>--> |
<span class="glyphicon glyphicon-folder-open"> </span> |
<xsl:text> </xsl:text> |
<xsl:apply-templates select="." mode="link"/> |
</td> |
/branches/v3/impl/conf/directories/styleSlideMenu.xsl |
---|
410,9 → 410,10 |
<xsl:when test="./@ftpDirectory='true'"> |
<tr class="dir"> |
<td colspan="3" > |
<img> |
<!--<img> |
<xsl:attribute name="src"><xsl:value-of select="$contextPath"/>/imgs/folder.gif</xsl:attribute> |
</img> |
</img>--> |
<span class="glyphicon glyphicon-folder-open"> </span> |
<xsl:text> </xsl:text> |
<xsl:apply-templates select="." mode="link"/> |
</td> |
/branches/v3/impl/conf/berserk/sd.xml |
---|
2642,6 → 2642,61 |
<service> |
<name>QuestionarioPutAssignedAnswers</name> |
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosService</implementationClass> |
<description></description> |
<isTransactional>true</isTransactional> |
<defaultMethod>putAssignedAnswers</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
<chain name="QuestionarioClearancesPre"/> |
</filterChains> |
</service> |
<service> |
<name>QuestionarioRevertAssignationDetails</name> |
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosService</implementationClass> |
<description></description> |
<isTransactional>true</isTransactional> |
<defaultMethod>revertAssignationDetails</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
<chain name="QuestionarioClearancesPre"/> |
</filterChains> |
</service> |
<service> |
<name>QuestionarioStartProcessement</name> |
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosService</implementationClass> |
<description></description> |
<isTransactional>true</isTransactional> |
<defaultMethod>startProcessement</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
<chain name="QuestionarioClearancesPre"/> |
</filterChains> |
</service> |
<service> |
<name>QuestionarioStopProcessement</name> |
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosService</implementationClass> |
<description></description> |
<isTransactional>true</isTransactional> |
<defaultMethod>stopProcessement</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
<chain name="QuestionarioClearancesPre"/> |
</filterChains> |
</service> |
<service> |
<name>RunJobSelectCourses</name> |
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService</implementationClass> |
<description></description> |
2655,7 → 2710,22 |
</filterChains> |
</service> |
<service> |
<name>RunJobAssignAnswers</name> |
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.AssignAnswersJobService</implementationClass> |
<description></description> |
<isTransactional>true</isTransactional> |
<defaultMethod>runJobAssignAnswers</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
<chain name="QuestionarioClearancesPre"/> |
</filterChains> |
</service> |
<service> |
<name>QuestionarioRevertAllAssignmentsPedagogico</name> |
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService</implementationClass> |
<description></description> |
2696,12 → 2766,34 |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
<chain name="AdminsOrQuestionarioUsers"/> |
<!--<chain name="AdminsOrQuestionarioUsers"/> E verificado no servico--> |
<chain name="QuestionarioClearancesPre"/> |
</filterChains> |
</service> |
<service> |
<name>QuestionarioSalvarResposta</name> |
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosService</implementationClass> |
<description></description> |
<isTransactional>true</isTransactional> |
<defaultMethod>salvarResposta</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="AuthenticatedUsers"/> |
</filterChains> |
</service> |
<service> |
<name>SalvarFicheiro</name> |
<implementationClass>pt.estgp.estgweb.services.paginasseccoes.SalvarFicheiro</implementationClass> |
<description>Salvar Ficheiro</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
/branches/v3/impl/conf/berserk/fcd.xml |
---|
495,7 → 495,7 |
</filterChain> |
<filterChain> |
<name>AdminsOrQuestionarioUsers</name> |
<expression>AuthenticatedUsers && (RoleUsers("admin") || RoleUsers("questionarios.admin") || RoleUsers("questionarios.tipologias.admin") || RoleUsers("questionarios.atribuicoes.admin"))</expression> |
<expression>AuthenticatedUsers && (RoleUsers("admin") || RoleUsers("questionarios.admin") || RoleUsers("questionarios.tipologias.admin") || RoleUsers("questionarios.atribuicoes.admin") || RoleUsers("user.role.questionarios.atribuicoes.check_teachers"))</expression> |
<description>Admins Control Chain</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass> |
/branches/v3/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
425,11 → 425,19 |
public static final String AUTHENTICATE_SERVICE_PASSWORD_KEY = ConfigProperties.getProperty("authentication.policy.password.msg.key"); |
public static final String SYSTEM_REDIRECTIONS_POLICY_INDEX_WELCOME = ConfigProperties.getProperty("system.redirections.policy.index.welcome"); |
public static final String SYSTEM_REDIRECTIONS_POLICY_AUTHENTICATION_ACTION = ConfigProperties.getProperty("system.redirections.policy.authentication.action"); |
public static final String SYSTEM_REDIRECTIONS_POLICY_AUTHENTICATION_LOGOUT_ACTION = ConfigProperties.getProperty("system.redirections.policy.authentication.logout.action"); |
public static final boolean MODO_PAE_ENABLED = ConfigProperties.getBooleanProperty("mode.pae.enabled"); |
public static final String QUESTIONARIOS_GERAIS = "questionarios.gerais"; |
public static final String QUESTIONARIOS_ADMIN = "questionarios.admin"; |
public static final String QUESTIONARIOS_ASSIGNEMENTS_ADMIN = "questionarios.atribuicoes.admin"; |
public static final String QUESTIONARIOS_ASSIGNEMENTS_CHECK_STUDENTS_ADMIN = "questionarios.atribuicoes.admin"; |
public static final String QUESTIONARIOS_ASSIGNEMENTS_CHECK_TEACHERS_ADMIN = "questionarios.atribuicoes.check_teachers"; |
public static final String QUESTIONARIOS_TIPOLOGIAS_ADMIN = "questionarios.tipologias.admin"; |
public static final String ROLE_PRESIDENTE_CONCELHO_PEDAGOGICO = "pedagogicCouncil.president"; |
public static final boolean USE_XSL_CACHE =ConfigProperties.getBooleanProperty("xsl.use.cache"); |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitAdminService.java |
---|
48,7 → 48,7 |
} |
cUV.persistViewAdminInObject(courseUnit); |
courseUnit.setInstitutionCode("" + DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()); |
//por o curso |
//por os profs |
//por alunos |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java |
---|
59,6 → 59,7 |
int studentsChangeBI = 0; |
int unitsAddedToStudents = 0; |
int alunosErasmusCadeirasEcontradas = 0; |
int alunosSemTurmaParaAUnidades = 0; |
int turmaMoreThanOneRegularCourse = 0; |
int unidadesProcuradasNumCursoAleatorio = 0; |
List<String> turmasMoreThanOneCourse = new ArrayList<String>(); |
67,6 → 68,8 |
int estudantesComCadeirasSemTurma = 0; |
int turmasComCodigoNullRemovidas = 0; |
int unidadesSoComAlunosExtra = 0; |
int turmasVindasANullDoSIGES = 0; |
int turmasVindasANullDoSIGESEncontradasNoutroCampo = 0; |
102,6 → 105,8 |
turmasComCodigoNullRemovidas = 0; |
unidadesSoComAlunosExtra = 0; |
unidadesProcuradasNumCursoAleatorio = 0; |
alunosSemTurmaParaAUnidades = 0; |
turmasVindasANullDoSIGES = 0; |
ImportCourseService.resetCourseYearTurmaPolicy(); |
162,6 → 167,9 |
newUser = true; |
} |
if(alunoSiges.getCodigo() == 11211) |
System.out.println("Aqui"); |
persist(alunoSiges, s, newUser,year,institutionCode,activeImportYearParaVerificacaoDePropinasEmDia,logMessages,service); |
if(studentComUnidadesRepetidas) |
263,7 → 271,19 |
serviceLogInfo("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved); |
serviceLogInfo("#Units not Added because localy removed: " + unitsLocallyRemovedNotAdded); |
serviceLogInfo("#Alunos com Unidades repetidas: " + unitsRepeated); |
serviceLogInfo("#ERASMUS Sum Subscriptions Replaced: " + alunosErasmusCadeirasEcontradas); |
serviceLogWarn("#ERASMUS Sum Subscriptions Replaced: " + alunosErasmusCadeirasEcontradas); |
if(turmasVindasANullDoSIGES > 0) |
{ |
serviceLogError("######!!!!!Turmas a NULL NO SIGES " + turmasVindasANullDoSIGES + " - POSSIVEL CAMPO DE TURMA diferente de TURMA_T na tabela T_INSCR, procure no LOG pela frase: (turmasVindasANullDoSIGES) "); |
} |
if(turmasVindasANullDoSIGESEncontradasNoutroCampo > 0) |
{ |
serviceLogInfo("######!!!!!Foram no entanto encontradas noutro campo P L TP O C S E: " + turmasVindasANullDoSIGESEncontradasNoutroCampo + " turmas ver mais info no LOG"); |
} |
if(alunosSemTurmaParaAUnidades > 0) |
{ |
serviceLogError("######!!!!!Alunos com Unidade mas sem Turma: " + alunosSemTurmaParaAUnidades + " -> verificar situação junto da administração de software do PAE - procure no LOG pela frase:(alunosSemTurmaParaAUnidades)"); |
} |
if(unidadesProcuradasNumCursoAleatorio > 0) |
serviceLogInfo("######!!!!!Unidades atribuidas com curso aleatoriamente escolhido derivado a duvidas: " + unidadesProcuradasNumCursoAleatorio + " (procurar por \"tem mais de um curso vamos procurar num qualquer\")"); |
if(turmaMoreThanOneRegularCourse > 0) |
325,6 → 345,18 |
logger.info("#Units not Added because localy removed: " + unitsLocallyRemovedNotAdded); |
logger.info("#Alunos com Unidades repetidas: " + unitsRepeated); |
logger.info("#ERASMUS Sum Subscriptions Replaced: " + alunosErasmusCadeirasEcontradas); |
if(turmasVindasANullDoSIGES > 0) |
{ |
logger.error("######!!!!!Turmas a NULL NO SIGES " + turmasVindasANullDoSIGES + " - POSSIVEL CAMPO DE TURMA diferente de TURMA_T na tabela T_INSCR procure no LOG pela frase: (turmasVindasANullDoSIGES) "); |
} |
if(turmasVindasANullDoSIGESEncontradasNoutroCampo > 0) |
{ |
logger.info("######!!!!!Foram no entanto encontradas noutro campo P L TP O C S E: " + turmasVindasANullDoSIGESEncontradasNoutroCampo + " turmas ver mais info no LOG"); |
} |
if(alunosSemTurmaParaAUnidades > 0) |
{ |
logger.error("######!!!!!Alunos com Unidade mas sem Turma: " + alunosSemTurmaParaAUnidades + " -> verificar situação junto da administração de software do PAE - procure no LOG pela frase:(alunosSemTurmaParaAUnidades)"); |
} |
if(unidadesProcuradasNumCursoAleatorio > 0) |
logger.warn("######!!!!!Unidades atribuidas com curso aleatoriamente escolhido derivado a duvidas: " + unidadesProcuradasNumCursoAleatorio + " (procurar por \"tem mais de um curso vamos procurar num qualquer\")"); |
510,16 → 542,18 |
"where courseunit.importYear=\"" + year + "\" and courseunit.institutionCode = \"" + institutionCode + "\" and turmas.studentId is null "); |
ResultSet rs = ps.executeQuery(); |
List<Integer> longs = new ArrayList<Integer>(); |
//alunosSemTurmaParaAUnidades = longs.size(); |
while(rs.next()) |
{ |
longs.add(rs.getInt("sigesCode")); |
} |
alunosSemTurmaParaAUnidades = longs.size(); |
rs.close(); |
ps.close(); |
if(longs.size() > 0) |
{ |
String msgS = "Existem estudantes no BACO com unidades sem turma respectiva ano: " + year + " institution:" + institutionCode + " possiveis adicionados manualmente, confirmar"; |
String msgS = "(alunosSemTurmaParaAUnidades) ATENÇÃO_ Existem estudantes no BACO com unidades sem turma respectiva ano: " + year + " institution:" + institutionCode + " possiveis adicionados manualmente, confirmar"; |
serviceLogWarn(msgS); |
logger.warn(msgS); |
msgS = ""; |
568,8 → 602,8 |
estudantesDesaparecidosDoSigesNesteAno++; |
Student s = DaoFactory.getStudentDaoImpl().loadBySigesCode(c); |
StudentImpl studentImpl = (StudentImpl) DaoFactory.getStudentDaoImpl().narrow(s); |
removerUnidadesQueDesapareceramNoSiges(year, new HashSet<CourseUnit>(), studentImpl); |
consistirTurmasAluno(studentImpl, year, new HashMap<CourseUnit, String>()); |
removerUnidadesQueDesapareceramNoSiges(year, new HashSet<CourseUnit>(), studentImpl,institutionCode); |
consistirTurmasAluno(studentImpl, year, new HashMap<CourseUnit, String>(),institutionCode); |
} |
} |
else |
835,8 → 869,8 |
serviceLogWarn("ATENTION STUDENT WITH ZERO UNITS: codigo " + alunoSiges.getCodigo()); |
logger.warn("ATENTION STUDENT WITH ZERO UNITS: codigo " + alunoSiges.getCodigo()); |
StudentImpl studentImpl = (StudentImpl) DaoFactory.getStudentDaoImpl().narrow(student); |
removerUnidadesQueDesapareceramNoSiges(year, new HashSet<CourseUnit>(), studentImpl); |
consistirTurmasAluno(studentImpl, year, new HashMap<CourseUnit, String>()); |
removerUnidadesQueDesapareceramNoSiges(year, new HashSet<CourseUnit>(), studentImpl,institutionCode); |
consistirTurmasAluno(studentImpl, year, new HashMap<CourseUnit, String>(),institutionCode); |
} |
else |
{ |
866,7 → 900,7 |
//PASSO 4 - Remover unidades deste ano que nao vem do SIGES e que nao foram adicionadas localmente |
//turmas separadas : Seguro a verificação de existencia é feita pelo id da unidade curricular no baco nas verificacoes para remocoes |
removerUnidadesQueDesapareceramNoSiges(year, unitsFromSigesPersistentInBaco, studentImpl); |
removerUnidadesQueDesapareceramNoSiges(year, unitsFromSigesPersistentInBaco, studentImpl,institutionCode); |
//PASSO 5 - Consistir Turmas do Aluno com novas cadeiras - Turmas do aluno sem cadeira correspondente sao apagadas, novas sao adicionadas |
//Este metodo vai necessitar de obter as turmas das unidades que vieram do SIGES atraves do mapa map_CourseUnit_x_Turma |
874,11 → 908,11 |
//em termos de relacoes com turmas na classe CourseUnitTurma |
//deste modo se alguma unidade foi adicionada localmente poderá nao ser removida no PASSO 4 e nao havera correspondente |
//para a turma nesta tabela map_CourseUnit_x_Turma logo essas turmas nessas unidades nao serao mechidas, um aviso e emitido |
consistirTurmasAluno(studentImpl, year, map_CourseUnit_x_Turma); |
consistirTurmasAluno(studentImpl, year, map_CourseUnit_x_Turma,institutionCode); |
} |
} |
private void consistirTurmasAluno(StudentImpl student, String year, Map<CourseUnit, String> map_CourseUnit_x_Turma) { |
private void consistirTurmasAluno(StudentImpl student, String year, Map<CourseUnit, String> map_CourseUnit_x_Turma, int institutionCode) { |
//PASSO 1 Para cada cadeira onde o aluno se encontra inscrito |
// obter a turma onde o aluno esta' colocado, se nao existir criar e afectar a turma |
//PASSO 2 Colocar o aluno nessa turma se ele ainda lá nao estiver |
890,15 → 924,13 |
Map<CourseUnitTurma,Boolean> turmasAfectadas = new HashMap<CourseUnitTurma,Boolean>(); |
for(CourseUnit cu: student.getSubscribedUnits()) |
{ |
if(cu.getImportYear().equals(year)) |
if(cu.getImportYear().equals(year) && cu.getInstitutionCode().equals(""+institutionCode)) |
{ |
if(cu.getTurmas() == null) |
{ |
cu.setTurmas(new HashSet<CourseUnitTurma>()); |
} |
// TODO O CODIGO DA TURMA AQUI VEM ANUL NUM CASO QUALQUER ESQUISITO VER O QUE E NO RUN |
String codigoTurma = map_CourseUnit_x_Turma.get(cu); |
if(student.isLocalUnit(cu) && codigoTurma == null) |
{ |
906,14 → 938,14 |
//mas foi mantida porque foi adicionada manualmente |
//deste modo usaremos a turma antiga |
//e nao afetaremos uma turma nao afetada, esta nao sera verificada |
String msg = "Atenção turma com código null nao sera verificada e' local unit:" + cu.getCode() + " aluno:" + student.getSigesCode(); |
String msg = "Atenção turma não encontrada para uma unidade do aluno, A unidade não foi importada do SIGES logo não há turma mas nao sera verificada porque e' uma local unit:" + cu.getCode() + " aluno:" + student.getSigesCode(); |
serviceLogInfo(msg); |
logger.info(msg); |
} |
else if(codigoTurma == null) |
{ |
//Este caso nao deverá acontecer porque no PASSO 4 da persistencia apenas nao se removem as adicionadas localmente |
String msg = "Atenção turma com código null e nao e' local unit:" + cu.getCode() + " aluno:" + student.getSigesCode(); |
String msg = "Atenção turma não encontrada para uma unidade do aluno. A Unidade não foi importada do SIGES ou vinha com turma NULL, logo nao se sabe a turma do aluno para escolher, e não e' uma unidade LOCALMENTE ADICIONADA logo devia vir do SIGES ou ter sido removida - unit:" + cu.getCode() + " aluno:" + student.getSigesCode(); |
serviceLogError(msg); |
logger.error(msg); |
} |
943,7 → 975,7 |
while(iter.hasNext()) |
{ |
CourseUnitTurmaImpl turma = iter.next(); |
if(turma.getCourseUnit().getImportYear().equals(year)) |
if(turma.getCourseUnit().getImportYear().equals(year) && turma.getCourseUnit().getInstitutionCode().equals(institutionCode+"")) |
{ |
if(student.isLocalUnit(turma.getCourseUnit()) && turmasAfectadas.get(turma) == null) |
{ |
1006,12 → 1038,12 |
* @param unitsFromSigesPersistentInBaco |
* @param student |
*/ |
private void removerUnidadesQueDesapareceramNoSiges(String year, Set<CourseUnit> unitsFromSigesPersistentInBaco, StudentImpl student) { |
private void removerUnidadesQueDesapareceramNoSiges(String year, Set<CourseUnit> unitsFromSigesPersistentInBaco, StudentImpl student,int institutionCode) { |
Iterator<CourseUnit> iterNowUnits = student.getSubscribedUnits().iterator(); |
while(iterNowUnits.hasNext()) |
{ |
CourseUnit cUNow = iterNowUnits.next(); |
if(cUNow.getImportYear().equals(year)) |
if(cUNow.getImportYear().equals(year) && cUNow.getInstitutionCode().equals(""+institutionCode)) |
//Apenas tentamos apagar as unidades do ano corrente. |
//Este servico trabalha com unidades importadas do ano que e passado como argumento |
//Se importamos unidades desse ano, as dos outros anos nao vem na lista, logo |
1104,6 → 1136,22 |
Set<CourseUnit> unitsFromSigesPersistentInBaco = new HashSet<CourseUnit>(); |
for (Disciplina disciplina : alunoSiges.getDisciplinasInscrito()) |
{ |
if(disciplina.getCdTurma() == null) |
{ |
turmasVindasANullDoSIGES++; |
String msg = "(turmasVindasANullDoSIGES) ATENÇÃO ERRO: Existe uma turma a null numa inscrição vinda do SIGES, procurar razão: unidade:" + disciplina.getCodigo() + " estudante:" + student.getSigesCode() + " possivelmente campo de turma em uso é errado, Vamos tentar usar o campo de outra TURMA P, L, TP, P, O, C, E, S"; |
serviceLogWarn(msg); |
logger.warn(msg); |
if(disciplina.getOutraTurma() != null) |
{ |
turmasVindasANullDoSIGESEncontradasNoutroCampo++; |
disciplina.setCdTurma(disciplina.getOutraTurma()); |
msg = "Encontrada Outra Turma: Atenção vai ser usada a turma " + disciplina.getOutraTurmaCode(); |
serviceLogWarn(msg); |
logger.warn(msg); |
} |
} |
boolean cursoFicticio = isCursoFicticio(disciplina.getCodigoCurso().intValue()); |
Integer codigoDoCurso = disciplina.getCodigoCurso().intValue(); |
1214,7 → 1262,8 |
{ |
for(CourseUnit found: courseUnits) |
{ |
map_CourseUnit_x_Turma.put(found,disciplina.getCdTurma()); |
String turma = disciplina.getCdTurma(); |
map_CourseUnit_x_Turma.put(found, turma); |
} |
unitsFromSigesPersistentInBaco.addAll(courseUnits); |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/AlunoDao.java |
---|
133,8 → 133,13 |
" CSE.T_INSCRI.CD_TURMA_T AS CD_TURMA, " + |
" CSE.T_INSCRI.CD_TURMA_P, " + |
" CSE.T_INSCRI.CD_TURMA_L, " + |
" CSE.T_INSCRI.CD_TURMA_TP " + |
" CSE.T_INSCRI.CD_TURMA_TP, " + |
" CSE.T_INSCRI.CD_TURMA_S, " + |
" CSE.T_INSCRI.CD_TURMA_C, " + |
" CSE.T_INSCRI.CD_TURMA_O, " + |
" CSE.T_INSCRI.CD_TURMA_E " + |
" FROM CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP = CSE.T_TBDISCIP.CD_DISCIP" + |
//" INNER JOIN CSE.T_CURSOS ON CSE.T_CURSOS.CD_CURSO = CSE.T_INSCRI.CD_CURSO " + |
" WHERE CSE.T_INSCRI.CD_ALUNO = " + codigo + " " + |
" AND" + |
" CSE.T_TBDISCIP.CD_INSTITUIC= " + codigoInstituicao + " AND " + |
160,6 → 165,41 |
d.cdTipoDisciplina = getDecimal("CD_TIPDIS", aReader); |
d.cdDuracao = getString("CD_DURACAO", aReader); |
d.cdTurma = getString("CD_TURMA", aReader); |
if(getString("CD_TURMA_P", aReader) != null) |
{ |
d.outraTurma = getString("CD_TURMA_P", aReader); |
d.outraTurmaCode = "P"; |
} |
else if(getString("CD_TURMA_L", aReader) != null) |
{ |
d.outraTurma = getString("CD_TURMA_L", aReader); |
d.outraTurmaCode = "L"; |
} |
else if(getString("CD_TURMA_TP", aReader) != null) |
{ |
d.outraTurma = getString("CD_TURMA_TP", aReader); |
d.outraTurmaCode = "TP"; |
} |
else if(getString("CD_TURMA_S", aReader) != null) |
{ |
d.outraTurma = getString("CD_TURMA_S", aReader); |
d.outraTurmaCode = "S"; |
} |
else if(getString("CD_TURMA_C", aReader) != null) |
{ |
d.outraTurma = getString("CD_TURMA_C", aReader); |
d.outraTurmaCode = "C"; |
} |
else if(getString("CD_TURMA_O", aReader) != null) |
{ |
d.outraTurma = getString("CD_TURMA_O", aReader); |
d.outraTurmaCode = "O"; |
} |
else if(getString("CD_TURMA_E", aReader) != null) |
{ |
d.outraTurma = getString("CD_TURMA_E", aReader); |
d.outraTurmaCode = "E"; |
} |
disciplinas.add(d); |
} |
//close the reader |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/DisciplinaDao.java |
---|
87,7 → 87,7 |
"CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP=CSE.T_TBDISCIP.CD_DISCIP " + |
"INNER JOIN CSE.T_CURSOS ON CSE.T_CURSOS.CD_CURSO = CSE.T_INSCRI.CD_CURSO " + |
"WHERE "+ |
" (((((CSE.T_TBDISCIP.CD_INSTITUIC)=" + codigoInstituicao + ") AND ((CSE.T_INSCRI.CD_LECTIVO)='" + ano + "')) AND CSE.T_INSCRI.CD_DURACAO = '" + semestre + "') AND ((CSE.T_INSCRI.CD_STATUS)<>5) AND (CSE.T_INSCRI.CD_TIPDIS = 2 OR CSE.T_INSCRI.CD_TIPDIS = 1))"; |
" (((((CSE.T_CURSOS.CD_INSTITUIC)=" + codigoInstituicao + ") AND ((CSE.T_INSCRI.CD_LECTIVO)='" + ano + "')) AND CSE.T_INSCRI.CD_DURACAO = '" + semestre + "') AND ((CSE.T_INSCRI.CD_STATUS)<>5) AND (CSE.T_INSCRI.CD_TIPDIS = 2 OR CSE.T_INSCRI.CD_TIPDIS = 1))"; |
/**\//SO QUEREMOS 1 e 2 |
* eliminamos tb inscricoes nao regulares STATUS <> 5</> |
* As restantes 5 e 6 so servem para depois procurar a Real para atribuir ao aluno |
270,6 → 270,12 |
/** |
* So muda do de cima porque usa a entrada TipoDeOcupação do Horario de Trabalho |
* Os códigos que vêm desta query são Tipos de Ocupação necessitam de mapeamento |
* ver no app.properties |
* |
* por vezes vem o código 1 não deve ser confundido com as teóricas que são aulas esse código não é usado no mapeamento |
* é descartado por ser pouco descriminatório e não estar na lista dos possiveis |
* de sumariar |
* @param ano |
* @param semestre |
* @param codigoCurso |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/domain/Disciplina.java |
---|
13,6 → 13,8 |
public String cdDuracao; |
public Integer codigoInstituicao; |
public String cdTurma; |
public String outraTurma; |
public String outraTurmaCode; |
public String nome; |
183,6 → 185,22 |
this.grauCurso = grauCurso; |
} |
public String getOutraTurma() { |
return outraTurma; |
} |
public void setOutraTurma(String outraTurma) { |
this.outraTurma = outraTurma; |
} |
public String getOutraTurmaCode() { |
return outraTurmaCode; |
} |
public void setOutraTurmaCode(String outraTurmaCode) { |
this.outraTurmaCode = outraTurmaCode; |
} |
@Override |
public String toString() { |
return "Disciplina{" + |
192,6 → 210,7 |
", cdDuracao='" + cdDuracao + '\'' + |
", codigoInstituicao=" + codigoInstituicao + |
", cdTurma='" + cdTurma + '\'' + |
", cdOutraTurma='" + outraTurma + '\'' + |
", nome='" + nome + '\'' + |
", nomeCurso='" + nomeCurso + '\'' + |
", grauCurso='" + grauCurso + '\'' + |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java |
---|
152,7 → 152,7 |
try |
{ |
persist(d, t, newUser,year,logMessages); |
persist(d, t, newUser,year,logMessages,institutionCode); |
} |
catch (Exception e) |
{ |
283,7 → 283,7 |
* @param institutionCode |
* @param codigos |
*/ |
private void removerUnidadesDosDesaparecidosDoSiges(String year, int institutionCode, List<Integer> codigos) { |
private void removerUnidadesDosDesaparecidosDoSiges(String year, int institutionCode, List<Integer> codigos) { |
String msgS; |
List<Integer> codesInBaco = DaoFactory.getTeacherDaoImpl().findAllSigesCodesYear(year,institutionCode); |
codesInBaco.removeAll(codigos); |
305,7 → 305,7 |
professoresDesaparecidosDoSigesNesteAno++; |
Teacher t = DaoFactory.getTeacherDaoImpl().loadBySigesCode(c); |
TeacherImpl teacherImpl = (TeacherImpl) DaoFactory.getTeacherDaoImpl().narrow(t); |
removerUnidadesQueDesapareceramNoSiges(year, teacherImpl, new HashSet<CourseUnit>()); |
removerUnidadesQueDesapareceramNoSiges(year, teacherImpl, new HashSet<CourseUnit>(),institutionCode); |
//consistirTurmasAluno(studentImpl, year, new HashMap<CourseUnit, String>()); |
} |
} |
435,7 → 435,7 |
* @param teacher teacher |
* @throws Exception . |
*/ |
private void persist(Docente teacherSiges, Teacher teacher, boolean newUser, String year,DefaultLogMessages logmessages) throws Exception |
private void persist(Docente teacherSiges, Teacher teacher, boolean newUser, String year,DefaultLogMessages logmessages,int institutionCode) throws Exception |
{ |
String msgS; |
try |
451,7 → 451,7 |
/******Logging****/ |
TeacherImpl tImpl = (TeacherImpl) DaoFactory.getTeacherDaoImpl().narrow(teacher); |
removerUnidadesQueDesapareceramNoSiges(year, tImpl, new HashSet<CourseUnit>()); |
removerUnidadesQueDesapareceramNoSiges(year, tImpl, new HashSet<CourseUnit>(),institutionCode); |
} |
else |
{ |
471,7 → 471,7 |
//PASSO 3 |
adicionarCadeirasNovasAoDocente(tImpl, unitsFromSigesPersistentInBaco); |
//PASSO 4 |
removerUnidadesQueDesapareceramNoSiges(year, tImpl, unitsFromSigesPersistentInBaco); |
removerUnidadesQueDesapareceramNoSiges(year, tImpl, unitsFromSigesPersistentInBaco,institutionCode); |
} |
485,14 → 485,14 |
List<String> arguments = new ArrayList<String>(); |
String cause = e.getCause() == null ? "" : e.getCause().toString(); |
arguments.add((e.toString() + "\n" + cause).replace("\n","<br/>")); |
Email email = new Email("Erro de importa��o de professores",emails,"baco@estgp.pt","messageToAdmin_pt.txt",arguments); |
Email email = new Email("Erro de importacao de professores",emails,"baco@estgp.pt","messageToAdmin_pt.txt",arguments); |
new SendEmailService().sendEmail(email); |
throw e; |
} |
} |
private void removerUnidadesQueDesapareceramNoSiges(String year, Teacher teacher, Set<CourseUnit> units) |
private void removerUnidadesQueDesapareceramNoSiges(String year, Teacher teacher, Set<CourseUnit> units,int institutionCode) |
{ |
//Remover unidades deste ano que nao vem do SIGES e que nao foram adicionadas localmente |
Iterator<CourseUnit> iterNowUnits = teacher.getTeachedUnits().iterator(); |
500,7 → 500,7 |
while(iterNowUnits.hasNext()) |
{ |
CourseUnit cUNow = iterNowUnits.next(); |
if(cUNow.getImportYear().equals(year)) |
if(cUNow.getImportYear().equals(year) && cUNow.getInstitutionCode().equals(institutionCode+"")) |
{ |
//Apenas tentamos apagar as unidades do ano corrente. |
//Este servico trabalha com unidades importadas do ano que e passado como argumento |
672,13 → 672,20 |
//na criacao de questionarios é natural que falhe alguma coisa por haver aqui unidades a mais |
//por isso devera ser ai feita a verificacao destes casos |
boolean separateTurmas = ImportCourseService.loadCourseYearTurmasPolicy(disciplina.getCodigoCurso(), year, logmessages, this); |
/* |
este procedimento requer que a turma venha do siges, neste momento nao vem |
if(separateTurmas) |
loadedunits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueWithTurma("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo(),disciplina.getCdTurma()); |
else |
loadedunits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo()); |
*/ |
//este procedimento requer que a turma venha do siges, neste momento nao vem |
//Este procedimento foi colocado por mim a 6 de Junho para que os questionarios tenham os profs certos nas disciplinas |
//e não em duplicado, daqui para baixo o código nunca compara com separateTurmas, o mapa apenas é acedido aqui |
//porque daqui para baixo uma vez carregadas as turmas persistentes do SIGES apenas o id é comparado para ver se fica ou se é removida |
//Vamos apenas ter de verificar que o código de turma vem na associação do docente à turma. |
//NAO DA A TURMA NUNCA VEM DO SIGENS PARA NAO DUPLICAR TURMAS NO JOIN |
//RESOVE-SE NA ATRIBUICAO DE RESPOSTAS DOS QUESTINARIOS SO SE METE O QUE TEM SUMARIO SE O CURSO FOR DE TURMAS |
//SEPARADAS |
//if(separateTurmas) |
// loadedunits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueWithTurma("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo(),disciplina.getCdTurma()); |
//else |
// loadedunits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo()); |
loadedunits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo()); |
/*******Logging************************/ |
if(loadedunits.size() > 1 && !separateTurmas) |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java |
---|
257,7 → 257,7 |
* @param logMessages |
* @return |
*/ |
protected static boolean loadCourseYearTurmasPolicy(int codigoDoCurso,String year,DefaultLogMessages logMessages,ServiceJob service) { |
public static boolean loadCourseYearTurmasPolicy(int codigoDoCurso,String year,DefaultLogMessages logMessages,ServiceJob service) { |
Boolean turmasSeparated = courseYearTurmasPolicy.get(codigoDoCurso + "-" + year); |
if(turmasSeparated != null) |
432,7 → 432,7 |
else |
c.setCdTurma(""); |
c.setName(d.getNome()); |
c.setInstitutionCode("" + institutionCode); |
c.setInstitutionCode("" + d.getCodigoInstituicao());//MUDADO AQUI |
c.setCode("" + d.getCodigo().intValue()); |
c.setCourseCode("" + d.getCodigoCurso()); |
c.setCourseName("" + d.getNomeCurso()); |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/users/UserRoleConfigService.java |
---|
154,6 → 154,7 |
private static final String INIT_ROLES = "user.role.all=Todos\n" + |
"user.role.admin=Administrador\n" + |
"user.role.student=Estudante\n" + |
"user.role.comissao.avaliacao.desempenho.docente=Comissão de Avaliação de Desempenho Docente\n" + |
"user.role.erasmusStudent=Estudante de Erasmus\n" + |
"user.role.teacher=Professor\n" + |
"user.role.teacher.eg=Professor da Área de Engenharia\n" + |
172,9 → 173,11 |
"user.role.worker=Funcionário\n" + |
"user.role.invited=Convidado\n" + |
"user.role.services=Serviços\n" + |
"user.role.questionarios.tipologias.admin=Questionarios Tipologias\n" + |
"user.role.questionarios.atribuicoes.admin=Questionarios Atribuições\n" + |
"user.role.questionarios.admin=Administração de Questionários\n" + |
"user.role.questionarios.tipologias.admin=Questionarios - Verificação de Tipologias\n" + |
"user.role.questionarios.atribuicoes.admin=Questionarios - Atribuições de Cursos\n" + |
"user.role.questionarios.atribuicoes.check_teachers=Questionarios - Verificação de Professores\n" + |
"user.role.questionarios.admin=Questionários - Super Administrador\n" + |
"user.role.questionarios.gerais=Questionários - Permissões Básicas (necessário)\n" + |
"user.role.servicesPrograms=Gestão de Programas Curriculares\n" + |
"user.role.administrativeCouncil=Membro da Direcção\n" + |
"user.role.administrativeCouncil.director=Director\n" + |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/pedagogico/TeachersAnswersProcessor.java |
---|
New file |
0,0 → 1,91 |
package pt.estgp.estgweb.services.questionarios.pedagogico; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.QuestionarioImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.jobs.ServiceJob; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages; |
/** |
* Created by jorgemachado on 28/05/16. |
*/ |
public class TeachersAnswersProcessor extends ServiceJob { |
private static Logger logger = Logger.getLogger(TeachersAnswersProcessor.class); |
/** |
* |
* @return |
* @throws Throwable |
*/ |
@Override |
protected ILogMessages runJobServiceTask() throws Throwable |
{ |
DefaultLogMessages logMessages = new DefaultLogMessages(); |
long questionarioId = Long.parseLong(getParametersMap().get(ServiceJob.JOB_questionario_id_KEY).getObject()); |
QuestionarioImpl q = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().load(questionarioId); |
//Colocamos já aqui o estado para nao se poder mudar o Ano e o Semestre |
/**logging**/ |
String msg = "Starting running service answers generation for questionario: " + q.getId() + " - " + q.getiAnswersProcessorClass().getTitle(); |
serviceLogInfo(msg); |
logger.info(msg); |
/**logging**/ |
/*List<String> newCourseCodesList = new ArrayList<String>(); |
int count = 0; |
int totalCourses = coursesList.length; |
for(String courseStrId: coursesList) |
{ |
count++;*/ |
try{ |
/*Long courseLong = Long.parseLong(courseStrId); |
/** logging **/ |
//msg = "Loading Course BACO ID: " + courseStrId; |
//serviceLogInfo(msg); |
//logger.info(msg); |
/** logging **/ |
/** COMMIT OPERATION **/ |
//setProgress((int)((((float)count)/((float)totalCourses))*100.0f)); |
//commitPartially(); |
//DaoFactory.getQuestionarioDaoImpl().update(q); |
/** COMMIT OPERATION **/ |
} |
catch(Throwable t) |
{ |
logger.error(t,t); |
serviceLogError(t.toString(),t); |
logMessages.addMessage(new DefaultLogMessage("questionario.answers.assigning", LogMessageTypeEnum.ERROR,t.toString())); |
} |
//} |
//removeUnselectedCourses(q, newCourseCodesList); |
/** COMMIT OPERATION **/ |
setProgress(100); |
commitPartially(); |
DaoFactory.getQuestionarioDaoImpl().update(q); |
/** COMMIT OPERATION **/ |
//TODO FALTA VERIFICAR SE HA COISAS DEPENDENTES DO COURSES_ASSIGNED TEM DE MUDAR PARA OU ANSWERS ASSIGNED |
//OIU ENTAO SO DEPOIS DO REVERT E QUE PODEM VOLTAR A ATRIBUIR RESPOSTAS E ALTERAR SELECAO DE CURSOS |
msg = "Set courses state as " + QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED.name(); |
serviceLogInfo(msg); |
logger.info(msg); |
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED); |
commitPartially(); |
return logMessages; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/pedagogico/AssignAnswersJobService.java |
---|
New file |
0,0 → 1,74 |
package pt.estgp.estgweb.services.questionarios.pedagogico; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.jobs.JobDeamon; |
import pt.estgp.estgweb.services.jobs.ServiceJob; |
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.HashSet; |
import java.util.Set; |
/** |
* Created by jorgemachado on 22/03/16. |
*/ |
public class AssignAnswersJobService implements IService |
{ |
public static final Logger logger = Logger.getLogger(AssignAnswersJobService.class); |
/** |
* CRIAR O JOB PARA O RUNNER |
* |
* @param questionarioId |
* @param session |
* @param questionarioCleared |
* @return |
* @throws NotAuthorizedException |
*/ |
public QuestionarioImpl runJobAssignAnswers(long questionarioId, UserSession session, QuestionarioImpl questionarioCleared) throws NotAuthorizedException { |
if(!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name()) ) |
{ |
throw new NotAuthorizedException("Nao tem autorização para atribuir respostas ao questionario " + questionarioId); |
} |
/*******VERIFICACAO DE RESPOSTAS*********/ |
long respostas = DaoFactory.getQuestionarioDaoImpl().getNumeroRespostas(questionarioId); |
if(respostas > 0) |
{ |
logger.warn("Vai falhar tem respostas, deixar correr para avisar o user no log"); |
} |
else |
{ |
//Nao muda de estado porque pode sempre gerar as respostas quando está em estado COURSES_ASSIGNED |
( questionarioCleared).setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.ASSIGNING_ANSWERS); |
} |
//CRIAR ATIVIDADE DE ATRIBUICAO DE RESPOSTAS |
Set<JobServiceTaskParameter> paramsJob = new HashSet<JobServiceTaskParameter>(); |
JobServiceTaskParameterImpl paramJob = DomainObjectFactory.createJobServiceTaskParameterImpl(); |
paramJob.setName(ServiceJob.JOB_questionario_id_KEY); |
paramJob.setDescription("ID do questionário"); |
paramJob.setObject("" + questionarioId); |
paramsJob.add(paramJob); |
JobServiceTask job = JobDeamon.createServiceJob(questionarioCleared.getiAnswersProcessorClass().getJobServiceTaskAnswersProcessor(), session.getUser(), paramsJob, |
"Service: Atribuição de Respostas a um questionário Pedagógico"); |
questionarioCleared.setAnswerGenerationTaskId(job.getId()); |
return questionarioCleared; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/pedagogico/AnswersAlunosProcessor.java |
---|
New file |
0,0 → 1,372 |
package pt.estgp.estgweb.services.questionarios.pedagogico; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.jobs.ServiceJob; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages; |
import pt.estgp.estgweb.services.sigesimports.ImportCourseService; |
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
/** |
* Created by jorgemachado on 28/05/16. |
*/ |
public class AnswersAlunosProcessor extends ServiceJob { |
int unidadesNaoUtilizadas = 0; |
int unidadesUtilizadas = 0; |
int unidadesMarcadas = 0; |
int unidadesNaoVistasProf = 0; |
int unidadesNaoVistasAlunos = 0; |
int cursosUtilizados = 0; |
int respostasRequisitadas = 0; |
private static Logger logger = Logger.getLogger(AnswersAlunosProcessor.class); |
/** |
* ############# JOB TASK ############ |
* ############# JOB TASK ############ |
* @return |
* @throws Throwable |
*/ |
@Override |
protected ILogMessages runJobServiceTask() throws Throwable |
{ |
long questionarioId = Long.parseLong(getParametersMap().get(ServiceJob.JOB_questionario_id_KEY).getObject()); |
DefaultLogMessages logMessages = new DefaultLogMessages(); |
/*****VERIFICACAO DE RESPOSTAS********/ |
long respostas = DaoFactory.getQuestionarioDaoImpl().getNumeroRespostas(questionarioId); |
if(respostas > 0) |
{ |
logMessages.addMessage(new DefaultLogMessage("error.questionario.com.respostas.nao.pode.efetuar.op", LogMessageTypeEnum.WARNING, |
"Operação não permitida, Existem Respostas")); |
logger.warn(logMessages.getLastMessage()); |
serviceLogError(logMessages.getLastMessage()); |
throw new NotAuthorizedException("Nao tem autorização para agendar atribuições de cursos num questioário com respostas"); |
} |
unidadesNaoUtilizadas = 0; |
unidadesUtilizadas = 0; |
unidadesMarcadas = 0; |
unidadesNaoVistasProf = 0; |
unidadesNaoVistasAlunos = 0; |
cursosUtilizados = 0; |
respostasRequisitadas = 0; |
QuestionarioImpl q = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().load(questionarioId); |
//Colocamos já aqui o estado para nao se poder mudar o Ano e o Semestre |
/**logging**/ |
String msg = "Starting running service answers generation for questionario: " + q.getId() + " - " + q.getiAnswersProcessorClass().getTitle(); |
serviceLogInfo(msg); |
logger.info(msg); |
List<Long> cursosAfetosIds = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().findCursosAfetosIds(questionarioId); |
int count = 0; |
UpdateCoursesAndUnitsJobService.revertAllRespostasCandidatas(questionarioId, this); |
for(Long cursoAfetoId : cursosAfetosIds) |
{ |
/** COMMIT OPERATION **/ |
count++; |
cursosUtilizados++; |
setProgress((int)((((float)count)/((float)cursosAfetosIds.size()))*100.0f)); |
commitPartially(); |
/** COMMIT OPERATION **/ |
QuestionarioPedagogicoCursoAfeto cu = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().get(cursoAfetoId); |
msg = "(+) Iniciando atribuição de respostas de alunos para o curso " + cu.getNome() + " (" + cu.getCodigoCurso() + ") escola " + cu.getNomeInstituicao() + "(" + cu.getCodigoInstituicao() + ")"; |
logger.info(msg); |
serviceLogInfo(msg); |
int unidades; |
if(cu.getUnidadesAfetas() != null) |
{ |
unidades = cu.getUnidadesAfetas().size(); |
int countUnidades = 0; |
for(QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta: cu.getUnidadesAfetas()) |
{ |
countUnidades++; |
msg = unidadeCurricularAfeta.isUsar() ? "(+)" : "(----IGNORADA-----)"; |
msg += "(" + countUnidades + "/" + unidades + ") Iniciando atribuição de Unidade Curricular Afeta " + unidadeCurricularAfeta.getCodigoUnidade() + " - " + unidadeCurricularAfeta.getNome(); |
logger.info(msg); |
serviceLogInfo(msg); |
if(!unidadeCurricularAfeta.isUsar()) |
{ |
unidadesNaoUtilizadas++; |
msg = "!!! A unidade está marcada para NÃO SER UTILIZADA, passando à próxima"; |
serviceLogWarn(msg); |
logger.warn(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.answers.assigning", LogMessageTypeEnum.WARNING,msg)); |
} |
else |
{ |
CourseUnitImpl cuImpl = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().narrow(unidadeCurricularAfeta.getCourseUnit()); |
CourseImpl courseImpl = (CourseImpl) DaoFactory.getCourseDaoImpl().narrow(unidadeCurricularAfeta.getCourseUnit().getCourse()); |
boolean separateTurmas = false; |
try{ |
separateTurmas = ImportCourseService.loadCourseYearTurmasPolicy(Integer.parseInt(unidadeCurricularAfeta.getCursoAfeto().getCodigoCurso()), q.getYear(), logMessages, this); |
}catch(Throwable e) |
{ |
msg = "!!! Código de Curso inválido a tentar verificar politica de turmas separadas, vai assumir falso"; |
serviceLogError(msg); |
logger.error(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.answers.assigning", LogMessageTypeEnum.ERROR,msg)); |
} |
unidadesUtilizadas++; |
verificaAlertasUnidade(logMessages, unidadeCurricularAfeta); |
List<CourseUnitImpl.Tipologia> tipologias; |
if(unidadeCurricularAfeta.getCursoAfeto().isUsarTipologias()) |
{ |
tipologias = cuImpl.getTipologiasClass().obtainMergeTipologias(); |
//TODO ALTERAR QUANDO GERIRMOS USADAS PARA JA SO SE USAM SUMARIOS |
for(CourseUnitImpl.Tipologia tMerge: tipologias) |
{ |
//if(tMerge.isSumario()) |
//{ |
tMerge.setUse(true); |
// break; |
//} |
} |
} |
else |
{ |
tipologias = cuImpl.getTipologiasClass().obtainTipologiasSimples(unidadeCurricularAfeta.getCourseUnit()); |
//TODO ALTERAR QUANDO GERIRMOS USADAS PARA JA SO SE USAM SUMARIOS |
for(CourseUnitImpl.Tipologia tMerge: tipologias) |
{ |
tMerge.setUse(true); |
} |
} |
Map<String,Teacher> professoresEsperados = new HashMap<String, Teacher>(); |
for(Teacher t: cuImpl.getTeachers()) { professoresEsperados.put(t.getSigesCode() + "", t); } |
for(CourseUnitImpl.Tipologia tMerge: tipologias) { professoresEsperados.remove(tMerge.getCdDocente()); } |
if(separateTurmas) |
{ |
if(professoresEsperados.size() > 0) |
{ |
msg = "!!! Unidade de um curso de turmas separadas, vamos usar apenas as tipologias para atribuir respostas, não vamos adicionar professores que não sumariaram"; |
serviceLogWarn(msg); |
logger.warn(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.answers.assigning", LogMessageTypeEnum.WARNING,msg)); |
} |
} |
else |
{ |
//Lista de Professores para ir removendo à medida que sao usados para no final confirmar se algum |
//não tinha tipologia vamos coloca-lo manualmente |
List<CourseUnitImpl.Tipologia> tipologiasEmFalta = criarTipologiasRequisitadasSimplesParaProfsForaDasTurmasPorFaltaDeSumarios(logMessages, q, unidadeCurricularAfeta, cuImpl, professoresEsperados); |
tipologias.addAll(tipologiasEmFalta); |
} |
for(CourseUnitImpl.Tipologia tMerge: tipologias) |
{ |
((QuestionarioPedagogicoUnidadeCurricularAfetaImpl)unidadeCurricularAfeta).incStatTipologiasRequisitadas(); |
((QuestionarioPedagogicoCursoAfetoImpl)cu).incStatTipologiasRequisitadas(); |
criarTipologiasRequisitadas(logMessages, q, (QuestionarioPedagogicoUnidadeCurricularAfetaImpl) unidadeCurricularAfeta, (QuestionarioPedagogicoCursoAfetoImpl)cu, cuImpl, tMerge); |
} |
} |
} |
} |
} |
/** COMMIT OPERATION **/ |
setProgress(100); |
commitPartially(); |
DaoFactory.getQuestionarioDaoImpl().update(q); |
/** COMMIT OPERATION **/ |
msg = "Set courses state as " + QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED.name(); |
serviceLogInfo(msg); |
logger.info(msg); |
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED); |
commitPartially(); |
serviceLogInfo("######################################"); |
serviceLogInfo("######################################"); |
serviceLogInfo("#unidadesNaoUtilizadas:" + unidadesNaoUtilizadas); |
serviceLogInfo("#unidadesUtilizadas:" + unidadesUtilizadas); |
serviceLogInfo("#unidadesMarcadas:" + unidadesMarcadas); |
serviceLogInfo("#unidadesNaoVistasProf:" + unidadesNaoVistasProf); |
serviceLogInfo("#unidadesNaoVistasAlunos:" + unidadesNaoVistasAlunos); |
serviceLogInfo("#cursosUtilizados:" + cursosUtilizados); |
serviceLogInfo("#respostasRequisitadas:" + respostasRequisitadas); |
logger.info("######################################"); |
logger.info("######################################"); |
logger.info("#unidadesNaoUtilizadas:" + unidadesNaoUtilizadas); |
logger.info("#unidadesUtilizadas:" + unidadesUtilizadas); |
logger.info("#unidadesMarcadas:" + unidadesMarcadas); |
logger.info("#unidadesNaoVistasProf:" + unidadesNaoVistasProf); |
logger.info("#unidadesNaoVistasAlunos:" + unidadesNaoVistasAlunos); |
logger.info("#cursosUtilizados:" + cursosUtilizados); |
logger.info("#respostasRequisitadas:" + respostasRequisitadas); |
return logMessages; |
} |
private List<CourseUnitImpl.Tipologia> criarTipologiasRequisitadasSimplesParaProfsForaDasTurmasPorFaltaDeSumarios(DefaultLogMessages logMessages, QuestionarioImpl q, QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta, CourseUnitImpl cuImpl, Map<String, Teacher> teachersAffected) { |
String msg; |
List<CourseUnitImpl.Tipologia> tipologias = new ArrayList<CourseUnitImpl.Tipologia>(); |
if(teachersAffected.size() > 0) |
{ |
msg = "!!! Existem " + teachersAffected.size() + "professores que não tinham tipologias de sumário associadas na unidade " + cuImpl.getCode() + "(" + cuImpl.getName() + ")" + ", associando uma tipologia simples por turma para este docente"; |
serviceLogWarn(msg); |
logger.warn(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.answers.assigning", LogMessageTypeEnum.WARNING,msg)); |
for(Teacher t: teachersAffected.values()) |
{ |
if(cuImpl.getTurmas() != null) |
{ |
for(CourseUnitTurma turma: cuImpl.getTurmas()) |
{ |
msg = "!!! Criando tipologia Simples para (Prof: " + t.getSigesCode() + " " + t.getName() + " turma: " + turma.getTurma() + " ) " ; |
serviceLogWarn(msg); |
logger.warn(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.answers.assigning", LogMessageTypeEnum.WARNING,msg)); |
CourseUnitImpl.Tipologia tipo = new CourseUnitImpl.Tipologia(); |
tipo.setCdDocente(t.getSigesCode() + ""); |
tipo.setCdTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE); |
tipo.setCdTurma(turma.getTurma()); |
tipo.setDsTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_DS); |
tipo.setUse(true); |
tipologias.add(tipo); |
} |
} |
} |
} |
return tipologias; |
} |
private void criarTipologiasRequisitadas(DefaultLogMessages logMessages, |
QuestionarioImpl q, |
QuestionarioPedagogicoUnidadeCurricularAfetaImpl unidadeCurricularAfeta, |
QuestionarioPedagogicoCursoAfetoImpl cursoAfeto, |
CourseUnitImpl cuImpl, |
CourseUnitImpl.Tipologia tMerge) { |
String msg; |
if(tMerge.isUse()) |
{ |
//todo Criar Tipologia Requisitada |
String cdDocente = tMerge.getCdDocente(); |
String cdTipologia = tMerge.getCdTipologia(); |
String dsTipologia = tMerge.getDsTipologia(); |
String cdTurma = tMerge.getCdTurma(); |
QuestionarioPedagogicoTipologiaRequisitadaImpl tipo = DomainObjectFactory.createQuestionarioPedagogicoTipologiaRequisitadaImpl(); |
tipo.setCdDocente(cdDocente); |
tipo.setCdTipologia(cdTipologia); |
tipo.setCdTurma(cdTurma); |
tipo.setDsTipologia(dsTipologia); |
tipo.setUnidadeAfeta(unidadeCurricularAfeta); |
try{ |
CourseUnitImpl.TipologiaPersistent tMergePersistente = cuImpl.loadPersistent(tMerge); |
tipo.setNomeDocente(tMergePersistente.getTeacher().getName()); |
tipo.setDocenteAfeto(tMergePersistente.getTeacher()); |
tipo.setTurmaAfeta(tMergePersistente.getCourseUnitTurma()); |
DaoFactory.getQuestionarioPedagogicoTipologiaRequisitadaDaoImpl().save(tipo); |
criarAlunosRequisitados(q, tipo, tMergePersistente.getCourseUnitTurma(),unidadeCurricularAfeta,cursoAfeto); |
} |
catch(CourseUnitImpl.TipologiaLoadExeption exp) |
{ |
msg = "Tipologia não devolve persistente " + exp.getMessage() + " (docente:" + tMerge.getCdDocente() + ", turma: " + tMerge.getCdTurma() + ") para a unidade: " + unidadeCurricularAfeta.getCodigoUnidade() + " " + unidadeCurricularAfeta.getNome() + " do curso de " + cursoAfeto.getNome() + "(" + cursoAfeto.getCodigoCurso() +")"; |
serviceLogError(msg); |
logger.error(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.answers.assigning", LogMessageTypeEnum.ERROR,msg)); |
} |
//Depois o home tem de procurar respostas requisitadas sem resposta |
//para cada uma vai pelo aluno requisitado buscar a turma o docente e pela |
//unidade afeta a unidade e o curso |
//apresenta o questionario com o id da resposta requisitada |
} |
} |
private void criarAlunosRequisitados(QuestionarioImpl q, |
QuestionarioPedagogicoTipologiaRequisitadaImpl tipo, |
CourseUnitTurma turma, |
QuestionarioPedagogicoUnidadeCurricularAfetaImpl unidadeAfeta, |
QuestionarioPedagogicoCursoAfetoImpl cursoAfeto) |
{ |
if(turma.getStudents() != null) |
{ |
for(Student s: turma.getStudents()) |
{ |
unidadeAfeta.incStatRespostasRequisitadas(); |
cursoAfeto.incStatRespostasRequisitadas(); |
QuestionarioRespostaRequisitadaImpl respostaRequisitada = DomainObjectFactory.createQuestionarioRespostaRequisitadaImpl(); |
respostaRequisitada.setQuestionario(q); |
respostaRequisitada.setUser(s); |
DaoFactory.getQuestionarioRespostaRequisitadaDaoImplImpl().save(respostaRequisitada); |
QuestionarioPedagogicoAlunoRequisitadoImpl alunoRequisitado = DomainObjectFactory.createQuestionarioPedagogicoAlunoRequisitadoImpl(); |
alunoRequisitado.setTipologiaRequisitada(tipo); |
alunoRequisitado.setAluno(s); |
alunoRequisitado.setRespostaRequisitada(respostaRequisitada); |
DaoFactory.getQuestionarioPedagogicoAlunoRequisitadoDaoImpl().save(alunoRequisitado); |
respostasRequisitadas++; |
} |
} |
} |
private void verificaAlertasUnidade(DefaultLogMessages logMessages, QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta) { |
String msg; |
if(unidadeCurricularAfeta.isMarked() || !unidadeCurricularAfeta.isVista() || !unidadeCurricularAfeta.isVistaProfs()) |
{ |
msg = " !!!! ALERTA :--> "; |
if(unidadeCurricularAfeta.isMarked()) |
{ |
unidadesMarcadas++; |
msg+= " MARCADA ; "; |
} |
if(!unidadeCurricularAfeta.isVista()) |
{ |
unidadesNaoVistasAlunos++; |
msg+= " NÃO VISTA ALUNOS ; "; |
} |
if(!unidadeCurricularAfeta.isVistaProfs()) |
{ |
unidadesNaoVistasProf++; |
msg+= " NÃO VISTA PROFS ; "; |
} |
serviceLogWarn(msg); |
logger.warn(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.answers.assigning", LogMessageTypeEnum.WARNING,msg)); |
} |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/pedagogico/UpdateCoursesAndUnitsJobService.java |
---|
95,13 → 95,33 |
return new String[0]; |
} |
/************* |
* CRIAR O JOB PARA O RUNNER |
* @param questionarioId |
* @param coursesList |
* @param session |
* @param questionarioCleared |
* @return |
* @throws NotAuthorizedException |
*/ |
public QuestionarioImpl runJobSelectCourses(long questionarioId,String[] coursesList,UserSession session,QuestionarioImpl questionarioCleared) throws NotAuthorizedException { |
if(!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name())) |
{ |
throw new NotAuthorizedException("Nao tem autorização para agendar atribuições de cursos"); |
} |
( questionarioCleared).setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.ASSIGNING_COURSES); |
/*******VERIFICACAO DE RESPOSTAS*********/ |
long respostas = DaoFactory.getQuestionarioDaoImpl().getNumeroRespostas(questionarioId); |
if(respostas == 0) |
{ |
(questionarioCleared).setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.ASSIGNING_COURSES); |
} |
else |
{ |
logger.warn("Vai falhar no serviço, deixar falhar para visar o user"); |
} |
JSONArray jsonArray = new JSONArray(); |
for(String sele: coursesList) |
{ |
145,6 → 165,15 |
{ |
throw new NotAuthorizedException("Nao tem autorização para agendar atribuições de cursos"); |
} |
long respostas = DaoFactory.getQuestionarioDaoImpl().getNumeroRespostas(questionarioId); |
if(respostas > 0) |
{ |
logMessages.addMessage(new DefaultLogMessage("error.questionario.com.respostas.nao.pode.efetuar.op", LogMessageTypeEnum.WARNING, |
"Operação não permitida, Existem Respostas")); |
logger.warn(logMessages.getLastMessage()); |
serviceLogError(logMessages.getLastMessage()); |
return logMessages; |
} |
for(QuestionarioPedagogicoCursoAfeto cu : DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().find(questionarioId)) |
{ |
int unidades = 0; |
153,16 → 182,18 |
unidades = cu.getUnidadesAfetas().size(); |
for(QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta: cu.getUnidadesAfetas()) |
{ |
logger.info("Reverting Unidade Curricular Afeta " + unidadeCurricularAfeta.getCodigoUnidade() + " - " + unidadeCurricularAfeta.getNome()); |
unidadeCurricularAfeta.setCursoAfeto(null); |
DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().delete(unidadeCurricularAfeta); |
String msg = "Reverting Unidade Curricular Afeta " + unidadeCurricularAfeta.getCodigoUnidade() + " - " + unidadeCurricularAfeta.getNome(); |
logger.info(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.courses.selection", LogMessageTypeEnum.WARNING,msg)); |
if(unidadeCurricularAfeta.getTipologiasRequisitadas() != null && unidadeCurricularAfeta.getTipologiasRequisitadas().size() > 0) |
{ |
String msg = "A unidade tem tipologias requisitadas que tem de ser removidas primeiro, iremos remover todas as tipologias e respostas associadas"; |
msg = "A unidade " + unidadeCurricularAfeta.getCodigoUnidade() + " tem tipologias requisitadas que tem de ser removidas primeiro, iremos remover todas as tipologias e respostas candidatas associadas"; |
logger.warn(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.courses.selection", LogMessageTypeEnum.WARNING,msg)); |
removeTipologiasERespostasCascade(unidadeCurricularAfeta); |
} |
unidadeCurricularAfeta.setCursoAfeto(null); |
DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().delete(unidadeCurricularAfeta); |
} |
} |
String msg = "Removendo curso afeto:" + cu.getNome() + " e " + unidades + " uniades afetas"; |
176,10 → 207,59 |
return logMessages; |
} |
public static ILogMessages revertAllRespostasCandidatas(long questionarioId, ServiceJob serviceJob) throws NotAuthorizedException { |
DefaultLogMessages logMessages = new DefaultLogMessages(); |
long respostas = DaoFactory.getQuestionarioDaoImpl().getNumeroRespostas(questionarioId); |
if(respostas > 0) |
{ |
logMessages.addMessage(new DefaultLogMessage("error.questionario.com.respostas.nao.pode.efetuar.op", LogMessageTypeEnum.WARNING, |
"Operação não permitida, Existem Respostas")); |
logger.warn(logMessages.getLastMessage()); |
serviceJob.serviceLogError(logMessages.getLastMessage()); |
throw new NotAuthorizedException(logMessages.getLastMessage()); |
} |
String msg = "Revertendo respostas candidatas do questionario " + questionarioId; |
logger.info(msg); |
serviceJob.serviceLogInfo(msg); |
for(QuestionarioPedagogicoCursoAfeto cu : DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().find(questionarioId)) |
{ |
msg = "Revertendo respostas do curso " + cu.getCodigoCurso() + " , iremos remover todas as tipologias e respostas candidatas associadas"; |
logger.info(msg); |
serviceJob.serviceLogInfo(msg); |
((QuestionarioPedagogicoCursoAfetoImpl)cu).resetAnswerStats(); |
int unidades = 0; |
if(cu.getUnidadesAfetas() != null) |
{ |
unidades = cu.getUnidadesAfetas().size(); |
for(QuestionarioPedagogicoUnidadeCurricularAfeta unidadeCurricularAfeta: cu.getUnidadesAfetas()) |
{ |
((QuestionarioPedagogicoUnidadeCurricularAfetaImpl)unidadeCurricularAfeta).resetAnswerStats(); |
logger.info("Reverting Respostas Unidade Curricular Afeta " + unidadeCurricularAfeta.getCodigoUnidade() + " - " + unidadeCurricularAfeta.getNome()); |
if(unidadeCurricularAfeta.getTipologiasRequisitadas() != null && unidadeCurricularAfeta.getTipologiasRequisitadas().size() > 0) |
{ |
msg = "A unidade " + unidadeCurricularAfeta.getCodigoUnidade() + " tem tipologias requisitadas que tem de ser removidas primeiro, iremos remover todas as tipologias e respostas candidatas associadas"; |
logger.info(msg); |
serviceJob.serviceLogWarn(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.courses.selection", LogMessageTypeEnum.WARNING,msg)); |
removeTipologiasERespostasCascade(unidadeCurricularAfeta); |
} |
} |
} |
logMessages.addMessage(new DefaultLogMessage("questionario.courses.selection", LogMessageTypeEnum.INFO,msg)); |
} |
return logMessages; |
} |
/** |
* |
*/ |
private void removeTipologiasERespostasCascade(QuestionarioPedagogicoUnidadeCurricularAfeta unidadeAfeta) |
protected static void removeTipologiasERespostasCascade(QuestionarioPedagogicoUnidadeCurricularAfeta unidadeAfeta) |
{ |
for(QuestionarioPedagogicoTipologiaRequisitada tr: unidadeAfeta.getTipologiasRequisitadas()) |
{ |
212,6 → 292,8 |
/** |
* |
* ############# JOB TASK ############ |
* ############# JOB TASK ############ |
* @return |
* @throws Throwable |
*/ |
223,6 → 305,17 |
long questionarioId = Long.parseLong(getParametersMap().get(ServiceJob.JOB_questionario_id_KEY).getObject()); |
QuestionarioImpl q = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().load(questionarioId); |
/********VERIFICACAO DE RESPOSTAS***********/ |
long respostas = DaoFactory.getQuestionarioDaoImpl().getNumeroRespostas(questionarioId); |
if(respostas > 0) |
{ |
logMessages.addMessage(new DefaultLogMessage("error.questionario.com.respostas.nao.pode.efetuar.op", LogMessageTypeEnum.WARNING, |
"Operação não permitida, Existem Respostas")); |
logger.warn(logMessages.getLastMessage()); |
serviceLogError(logMessages.getLastMessage()); |
throw new NotAuthorizedException("Nao tem autorização para agendar atribuições de cursos num questioário com respostas"); |
} |
String[] coursesList = deserializeCoursesList(q); |
//Colocamos já aqui o estado para nao se poder mudar o Ano e o Semestre |
232,6 → 325,8 |
logger.info(msg); |
/**logging**/ |
revertAllRespostasCandidatas(questionarioId,this); |
List<String> newCourseCodesList = new ArrayList<String>(); |
int count = 0; |
int totalCourses = coursesList.length; |
329,7 → 424,7 |
DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().delete(cursoAfeto); |
} |
private void removeUnselectedUnits(QuestionarioPedagogicoCursoAfeto cursoAfetado, List<String> newUnidadesCodesList) { |
private void removeUnselectedUnits(QuestionarioPedagogicoCursoAfeto cursoAfetado, List<Long> newUnidadesCodesList) { |
/** logging **/ |
String msg = "Removing unselected units from course: " + cursoAfetado.getCodigoCurso(); |
serviceLogInfo(msg); |
338,7 → 433,7 |
Set<QuestionarioPedagogicoUnidadeCurricularAfeta> allUnidades = cursoAfetado.getUnidadesAfetas(); |
for(QuestionarioPedagogicoUnidadeCurricularAfeta unidadeAfeta: allUnidades) |
{ |
if(!newUnidadesCodesList.contains(unidadeAfeta.getCodigoUnidade())) |
if(!newUnidadesCodesList.contains(unidadeAfeta.getCourseUnit().getId())) |
{ |
/** logging **/ |
msg = "--->Deleting unidade: " + unidadeAfeta.getCodigoUnidade(); |
407,7 → 502,7 |
List<String> newUnitCodesList = new ArrayList<String>(); |
List<Long> newUnitCodesList = new ArrayList<Long>(); |
int countUnits = 0; |
List<CourseUnitDaoImpl.CourseUnitResult> results = DaoFactory.getCourseUnitDaoImpl().loadCourseUnits(c.getId(), q.getSemestre(), q.getYear()); |
int totalUnits = results.size(); |
415,7 → 510,7 |
{ |
countUnits++; |
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(cur.id); |
newUnitCodesList.add(cu.getCode()); |
newUnitCodesList.add(cu.getId()); |
/** logging **/ |
msg = "---->(" + countUnits + " of " + totalUnits +") CourseUnit loaded: " + cu.getName() + "(" + cu.getCode() + ")"; |
serviceLogInfo(msg); |
439,10 → 534,10 |
String msg; |
QuestionarioPedagogicoUnidadeCurricularAfetaImpl unidadeAfeta = null; |
List<QuestionarioPedagogicoUnidadeCurricularAfeta> unidadesFound = DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().find(cursoAfeto.getQuestionario().getId(), cursoAfeto.getCodigoCurso(), cu.getCode()); |
List<QuestionarioPedagogicoUnidadeCurricularAfeta> unidadesFound = DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().find(cursoAfeto.getQuestionario().getId(), cursoAfeto.getCodigoCurso(), cu.getId()); |
if(unidadesFound != null && unidadesFound.size() > 1) |
{ |
msg = "Encontradas mais que uma unidade nos mesmos códigos: curso:" +cursoAfeto.getCodigoCurso() + ", unidade " + cu.getCode() + " apagando um"; |
msg = "Encontradas mais que uma unidade nos mesmos códigos: curso:" +cursoAfeto.getCodigoCurso() + ", unidade " + cu.getCode() + " com id sistema(" + cu.getId() + ") apagando um"; |
serviceLogWarn(msg); |
logger.warn(msg); |
logMessages.addMessage(new DefaultLogMessage("questionario.courses.selection", LogMessageTypeEnum.WARNING,msg)); |
472,7 → 567,7 |
unidadeAfeta.setCursoAfeto(cursoAfeto);//so metemos de um dos lados |
unidadeAfeta.setCourseUnit(cu); |
unidadeAfeta.setCodigoUnidade(cu.getCode()); |
unidadeAfeta.setObs(""); |
unidadeAfeta.addObs(""); |
unidadeAfeta.setNome(cu.getName()); |
unidadeAfeta.setMarked(false); |
639,7 → 734,10 |
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_ASSIGNEMENTS.name()) && !questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name())) |
if(!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_USE_UNIT.name()) && |
!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_CHECK_TEACHERS.name()) && |
!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS.name()) && |
!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name())) |
{ |
throw new NotAuthorizedException("Nao tem autorização para alterar as tipologias"); |
} |
652,9 → 750,14 |
{ |
unidade.setVista(Boolean.parseBoolean(val)); |
} |
else if(op.equals("vistaProfs")) |
{ |
unidade.setVistaProfs(Boolean.parseBoolean(val)); |
} |
else if(op.equals("observacoes")) |
{ |
unidade.setObs(val); |
} |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/PedagogicoAlunosProcessor.java |
---|
7,6 → 7,7 |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.utils.SimpleClearanceRuledSupport; |
import pt.estgp.estgweb.services.questionarios.pedagogico.AnswersAlunosProcessor; |
import pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService; |
import pt.estgp.estgweb.utils.ConfigProperties; |
46,66 → 47,135 |
questionario.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.START); |
} |
public void initClearances(QuestionarioImpl q, UserSessionImpl usession, SimpleClearanceRuledSupport s) |
{ |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))) |
if(q.getStateEnum() == QuestionarioImpl.State.ASSIGNATION_DETAILS) |
assignationDetailsClearances(q, usession, s); |
if(q.getStateEnum() == QuestionarioImpl.State.STOPED_WITH_ANSWERS || q.getStateEnum() == QuestionarioImpl.State.PROCESSING || q.getStateEnum() == QuestionarioImpl.State.PROCESSING_WITH_ANSWERS) |
{ |
if(q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.START || |
q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED) |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_ANO_SEMESTRE.name(),usession); |
if(usession.getUser().hasRole(Globals.ROLE_PRESIDENTE_CONCELHO_PEDAGOGICO)) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_DASHBOARD.name(),usession); |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_FORM.name(),usession); |
} |
} |
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED.getPosition() && |
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition()) |
} |
private void assignationDetailsClearances(QuestionarioImpl q, UserSessionImpl usession, SimpleClearanceRuledSupport s) { |
if(q.getStateEnum() == QuestionarioImpl.State.ASSIGNATION_DETAILS) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SEE_SELECT_COURSES.name(),usession); |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))) |
{ |
if(q.getCourseSelectionTaskId() <= 0) |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession); |
else |
if(q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.START || |
q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED) |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_ANO_SEMESTRE.name(),usession); |
} |
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED.getPosition() && |
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition()) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SEE_SELECT_COURSES.name(),usession); |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))) |
{ |
JobServiceTask task = DaoFactory.getJobServiceTaskDaoImpl().load(q.getCourseSelectionTaskId()); |
if(task.isExecuted() || (task.getSaveDate() != null && |
System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)) //half hour blocked |
if(q.getCourseSelectionTaskId() <= 0 || q.getSubStatePedagodigoEnum().getPosition() == QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.getPosition()) |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession); |
else |
{ |
if(!task.isExecuted() && System.currentTimeMillis()-task.getSaveDate().getTime()>1800000) |
JobServiceTask task = DaoFactory.getJobServiceTaskDaoImpl().load(q.getCourseSelectionTaskId()); |
if(task.isExecuted() || (task.getSaveDate() != null && |
System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)) //half hour blocked, 30 minutos |
{ |
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED);//rolling back to year semestre assigned |
if(!task.isExecuted() && System.currentTimeMillis()-task.getSaveDate().getTime()>1800000) |
{ |
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED);//rolling back to year semestre assigned |
} |
task.setExecuted(true); |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession); |
} |
task.setExecuted(true); |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession); |
} |
} |
} |
} |
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.getPosition() && |
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition()) |
{ |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_TIPOLOGIAS_ADMIN)) |
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.getPosition() && |
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition()) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name(),usession); |
} |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_ADMIN)) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS.name(),usession); |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_TIPOLOGIAS_ADMIN)) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name(),usession); |
} |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_CHECK_STUDENTS_ADMIN)) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS.name(),usession); |
//s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_USE_UNIT.name(),usession); |
} |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_CHECK_TEACHERS_ADMIN)) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_CHECK_TEACHERS.name(),usession); |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS_USE_UNIT.name(),usession); |
} |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_START_ASSIGN_ANSWERS.name(),usession); |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_ALL_ASSIGNEMENTS.name(),usession); |
//ATRIBUIR RESPOSTAS MAS SO DEPOIS DE CURSOS ATRIBUIDOS |
if(q.getAnswerGenerationTaskId() <= 0 || q.getSubStatePedagodigoEnum().getPosition() == QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED.getPosition()) |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name(),usession); |
else |
{ |
JobServiceTask task = DaoFactory.getJobServiceTaskDaoImpl().load(q.getAnswerGenerationTaskId()); |
if(task.isExecuted() || (task.getSaveDate() != null && |
System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)) //half hour blocked, 30 minutos |
{ |
if(!task.isExecuted() && System.currentTimeMillis()-task.getSaveDate().getTime()>1800000) |
{ |
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED);//rolling back to courses assigned |
} |
task.setExecuted(true); |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name(),usession); |
} |
} |
} |
} |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))) |
if(q.getSubStatePedagodigoEnum().getPosition() == QuestionarioImpl.SubStatePedagogico.ANSWERS_ASSIGNED.getPosition()) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name(),usession); |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_ALL_ASSIGNEMENTS.name(),usession); |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_PUT_ANSWERS_ASSIGNED.name(),usession); |
} |
} |
} |
} |
@Override |
public Class getJobServiceTaskAnswersProcessor() { |
return AnswersAlunosProcessor.class; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/QuestionariosService.java |
---|
1,5 → 1,6 |
package pt.estgp.estgweb.services.questionarios; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.QuestionarioView; |
14,6 → 15,8 |
public class QuestionariosService implements IService |
{ |
private static final Logger logger = Logger.getLogger(QuestionariosService.class); |
//NEW QUESTIONARIOS COME BY THIS SERVICE |
public QuestionarioImpl newQuestionarioForm(QuestionarioImpl qform, UserSession userSession) throws NotAuthorizedException |
{ |
113,4 → 116,82 |
} |
} |
/** |
* Passa para o estado ASSIGNED_ANSWERS |
* @param questionarioId |
* @param userSession |
* @param questionarioCleared |
* @return |
*/ |
public QuestionarioImpl putAssignedAnswers(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared) |
{ |
if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_PUT_ANSWERS_ASSIGNED.toString())) |
{ |
questionarioCleared.setStateClass(QuestionarioImpl.State.ASSIGNED_ANSWERS); |
} |
return questionarioCleared; |
} |
public QuestionarioImpl revertAssignationDetails(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared) |
{ |
if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_TO_ASSIGNATION_DETAILS.toString())) |
{ |
questionarioCleared.setStateClass(QuestionarioImpl.State.ASSIGNATION_DETAILS); |
} |
return questionarioCleared; |
} |
public QuestionarioImpl startProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared) |
{ |
if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_PROCESSEMENT.toString())) |
{ |
if(questionarioCleared.getStateEnum() == QuestionarioImpl.State.ASSIGNED_ANSWERS) |
questionarioCleared.setStateClass(QuestionarioImpl.State.PROCESSING); |
else if(questionarioCleared.getStateEnum() == QuestionarioImpl.State.STOPED_WITH_ANSWERS) |
questionarioCleared.setStateClass(QuestionarioImpl.State.PROCESSING_WITH_ANSWERS); |
} |
return questionarioCleared; |
} |
public QuestionarioImpl stopProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared) |
{ |
if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_STOP_PROCESSEMENT.toString())) |
{ |
if(questionarioCleared.getStateEnum() == QuestionarioImpl.State.PROCESSING) |
questionarioCleared.setStateClass(QuestionarioImpl.State.ASSIGNED_ANSWERS); |
else if(questionarioCleared.getStateEnum() == QuestionarioImpl.State.PROCESSING_WITH_ANSWERS) |
questionarioCleared.setStateClass(QuestionarioImpl.State.STOPED_WITH_ANSWERS); |
} |
return questionarioCleared; |
} |
public void salvarResposta(QuestionarioResposta resposta,Long alunoRequisitadoId,UserSession userSession) throws NotAuthorizedException { |
Questionario q = DaoFactory.getQuestionarioDaoImpl().load(resposta.getQuestionario().getId()); |
QuestionarioImpl questionario = (QuestionarioImpl) DaoFactory.getQuestionarioDaoImpl().narrow(q); |
QuestionarioPedagogicoAlunoRequisitado alunoRequisitado = DaoFactory.getQuestionarioPedagogicoAlunoRequisitadoDaoImpl().load(alunoRequisitadoId); |
if(questionario.getStateEnum() != QuestionarioImpl.State.PROCESSING && questionario.getStateEnum() != QuestionarioImpl.State.PROCESSING_WITH_ANSWERS ) |
{ |
throw new NotAuthorizedException("O questionário interrompido por razões administrativas, por favor tente mais tarde"); |
} |
if(!((alunoRequisitado.getRespostaRequisitada().getQuestionario().getId() == questionario.getId()) |
&& |
alunoRequisitado.getRespostaRequisitada().getResposta() == null |
&& |
alunoRequisitado.getAluno().getId() == userSession.getUser().getId())) |
{ |
throw new NotAuthorizedException("Não está autorizado a submeter esta resposta."); |
} |
resposta.setId(0); |
resposta.setQuestionario(questionario); |
resposta.setUser(alunoRequisitado.getAluno()); |
alunoRequisitado.getRespostaRequisitada().setResposta(resposta); |
DaoFactory.getQuestionarioRespostaDaoImpl().save(resposta); |
questionario.setStateClass(QuestionarioImpl.State.PROCESSING_WITH_ANSWERS); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/paginasseccoes/SalvarFicheiro.java |
---|
New file |
0,0 → 1,30 |
package pt.estgp.estgweb.services.paginasseccoes; |
import jomm.utils.FilesUtils; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.web.controllers.paginaseseccoes.PaginasSeccoesForm; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.io.IOException; |
/** |
* Created by jorgemachado on 17/05/16. |
*/ |
public class SalvarFicheiro implements IService |
{ |
public String run(PaginasSeccoesForm frm, UserSession usession) throws IOException { |
RepositoryService service = new RepositoryService(); |
String id = service.storeRepositoryFile(frm.getFicheiro().getInputStream(), |
frm.getFicheiro().getContentType(), |
FilesUtils.getExtension(frm.getFicheiro().getFileName()), |
frm.getFicheiro().getFileSize(), |
frm.getFicheiro().getFileName(), |
"", |
ResourceAccessControlEnum.authenticatedDomain, |
usession); |
return id; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/jobs/JobScheduleService.java |
---|
4,6 → 4,7 |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.courses.CourseUnitsStatisticsJobService; |
import pt.estgp.estgweb.services.sigesimports.*; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
191,7 → 192,8 |
if(persistent.getTargetService().equals(ImportCourseService.class.getName()) || |
persistent.getTargetService().equals(ImportGradesService.class.getName()) || |
persistent.getTargetService().equals(ImportStudentsService.class.getName()) || |
persistent.getTargetService().equals(ImportTeachersService.class.getName())) |
persistent.getTargetService().equals(ImportTeachersService.class.getName()) || |
persistent.getTargetService().equals(CourseUnitsStatisticsJobService.class.getName())) |
{ |
//if(params == null || params.size() == 0) |
//{ |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/jobs/JobDeamon.java |
---|
153,8 → 153,11 |
} |
} |
public static int dayNumber = 0; |
public static JobServiceTaskImpl createServiceJob(Class targetService, User owner, Set<JobServiceTaskParameter> paramsJob, String description) |
{ |
dayNumber++; |
if(description==null || description.trim().length()==0) |
description = targetService.getSimpleName(); |
logger.info("Schedulling one job " + targetService + " to run"); |
173,7 → 176,7 |
jobServiceTask.setProgress(0); |
DaoFactory.getJobServiceTaskDaoImpl().save(jobServiceTask); |
String filePath = targetService.getSimpleName() + "-" + DatesUtils.getFormatedFileSystem(new Date()); |
String filePath = targetService.getSimpleName() + "-" + jobServiceTask.getId() + "-" + DatesUtils.getFormatedFileSystem(new Date()); |
jobServiceTask.setLogFilePath( filePath + ".log"); |
for(JobServiceTaskParameter param: paramsJob) |
/branches/v3/impl/src/java/pt/estgp/estgweb/services/entity/EntityServiceJson.java |
---|
2,12 → 2,13 |
import com.owlike.genson.Genson; |
import com.owlike.genson.TransformationException; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.io.IOException; |
import java.io.Serializable; |
import java.util.ArrayList; |
/** |
* Created by jorgemachado on 22/03/16. |
27,8 → 28,37 |
.create(); |
static Genson userGenson = new Genson.Builder() |
.exclude(Object.class) |
.exclude(User.class) |
.exclude(GenericUser.class) |
.exclude(Student.class) |
.exclude(Teacher.class) |
.include("id", User.class) |
.include("name", User.class) |
.include("sigesCode", User.class) |
.include("email", User.class) |
.include("roles", User.class) |
.create(); |
public String courseUnit(CourseUnit cu) throws IOException, TransformationException { |
return courseUnitGenson.serialize(cu); |
} |
public String courseUnit(Serializable s) throws IOException, TransformationException { |
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().get(s); |
return courseUnitGenson.serialize(cu); |
} |
public String user(Serializable s) throws IOException, TransformationException { |
User u = DaoFactory.getUserDaoImpl().get(s); |
return userGenson.serialize(u); |
} |
public String user(User u) throws IOException, TransformationException { |
return userGenson.serialize(u); |
} |
public String user(ArrayList<User> users) throws IOException, TransformationException { |
return userGenson.serialize(users); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/StudentImpl.java |
---|
3,6 → 3,7 |
import jomm.utils.StringsUtils; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
50,8 → 51,11 |
return subscribedCoursesOldYearsView; |
} |
public String getManagedRole() { |
return STUDENT_ROLE; |
public String getManagedRole() |
{ |
List<String> roles = new ArrayList<String>(); |
roles.add(STUDENT_ROLE); |
return RoleManager.getSerialRoles(roles); |
} |
public List<CourseUnit> getSubscribedUnitsViewS1() |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/IAnswersProcessor.java |
---|
20,4 → 20,6 |
/** to be used on clearances initialization**/ |
public void initClearances(QuestionarioImpl questionario, UserSessionImpl session, SimpleClearanceRuledSupport s); |
public Class getJobServiceTaskAnswersProcessor(); |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java |
---|
34,6 → 34,7 |
private String courseName; |
private String semestre; |
private String importYear; |
private String institutionCode; |
private String contentsGrants; |
private BlogView blog; |
private String pathIntranet; |
142,6 → 143,7 |
this.sumariosPathFileIntranet = ((CourseUnitImpl)courseUnit).getSummariosPathFileIntranet(); |
this.evaluationOpenByAdmin = courseUnit.isEvaluationOpenByAdmin(); //nao tem persistencia propria tem de ser feito num serviço |
this.cdTurma = courseUnit.getCdTurma(); |
this.institutionCode = courseUnit.getInstitutionCode(); |
// this.objectives = courseUnit.getObjectives(); DEPRECATED |
if(courseUnit.getCourseUnitProgram() !=null && courseUnit.getCourseUnitProgram().getCourseUnitProgramPart2() != null) |
470,6 → 472,7 |
c.setCode(code); |
c.setCdTurma(cdTurma); |
c.setSemestre(semestre); |
c.setInstitutionCode(institutionCode); |
if(courseId > 0) |
{ |
c.setCourse(DaoFactory.getCourseDaoImpl().load(courseId)); |
729,7 → 732,14 |
return true; |
} |
public String getInstitutionCode() { |
return institutionCode; |
} |
public void setInstitutionCode(String institutionCode) { |
this.institutionCode = institutionCode; |
} |
public boolean isValidProgram() |
{ |
return validProgram; |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoUnidadeCurricularAfetaImpl.java |
---|
9,8 → 9,10 |
{ |
if(getObs() == null) |
setObs(""); |
else if(obs.trim().length() > 0) |
setObs(getObs() + " ; "); |
setObs(getObs() + " ; " + obs); |
setObs(getObs() + obs); |
} |
public void resetStats() { |
19,9 → 21,19 |
setStudents(0); |
setProfs(0); |
setMarked(false); |
setObs(""); |
//setObs(""); |
setProfsWithoutTurma(0); |
setTurmas(0); |
setTurmaWithoutProf(0); |
} |
public void resetAnswerStats() { |
setStatTipologiasRequisitadas(0); |
setStatRespostasRequisitadas(0); |
} |
public void incStatTipologiasRequisitadas(){ setStatTipologiasRequisitadas(getStatTipologiasRequisitadas()+1);} |
public void incStatRespostasRequisitadas(){ setStatRespostasRequisitadas(getStatRespostasRequisitadas() + 1);} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/DomainObjectFactory.java |
---|
415,4 → 415,12 |
public static ConfigurationImpl createConfigurationImpl() { |
return new ConfigurationImpl(); |
} |
public static QuestionarioRespostaRequisitadaImpl createQuestionarioRespostaRequisitadaImpl(){ |
return new QuestionarioRespostaRequisitadaImpl(); |
} |
public static QuestionarioRespostaImpl createQuestionarioRespostaImpl() { |
return new QuestionarioRespostaImpl(); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/UserImpl.java |
---|
112,4 → 112,11 |
{ |
return DesUtils.getInstance().decrypt(getPop3password()); |
}*/ |
public String getShortName() |
{ |
if(getName() != null) |
return getName().split(" ")[0]; |
return getName(); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/QuestionarioImpl.java |
---|
30,7 → 30,7 |
CREATED(1), |
ASSIGNATION_DETAILS(2), |
ASSIGNING_ANSWERS_PROCESSEMENT(3), |
ASSIGNING_ANSWERS_PROCESSEMENT(3), //NAO USADO NO PEDAGOGIGO OS ESTADOS INTERNOS RESOLVEM O PROBLEMA |
ASSIGNED_ANSWERS(4), |
PROCESSING(5), |
PROCESSING_WITH_ANSWERS(6), |
70,9 → 70,13 |
START(1), |
YEAR_SEMESTRE_ASSIGNED(2), |
ASSIGNING_COURSES(3), |
COURSES_ASSIGNED(4), |
FINNISHED_ANSWERS_GENERATING(5); |
COURSES_ASSIGNED(4), //ESCOLHA DE CURSOS TERMINADA pode escolher tipologias e gerar respostas |
ASSIGNING_ANSWERS(5), //ESCOLHA DE CURSOS TERMINADA pode escolher tipologias e gerar respostas |
ANSWERS_ASSIGNED(6), //ESCOLHA DE CURSOS TERMINADA pode escolher tipologias e gerar respostas |
FINNISHED_ANSWERS_GENERATING(7); //PODE SEMPRE VOLTAR A GERAR ANTES DE TERMINAR TEM DE SER INCREMENTAL |
//Mas depois de clicar em Terminar muda para este estado terminado e já nao pode voltar a gerar respostas |
private int pos = 1; |
SubStatePedagogico(int pos) |
209,6 → 213,11 |
public void initClearances(QuestionarioImpl questionario, UserSessionImpl session, SimpleClearanceRuledSupport s) { |
} |
@Override |
public Class getJobServiceTaskAnswersProcessor() { |
return null; |
} |
}; |
} |
280,8 → 289,10 |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_ADMIN) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_TIPOLOGIAS_ADMIN )) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_CHECK_STUDENTS_ADMIN) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_TIPOLOGIAS_ADMIN) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_CHECK_TEACHERS_ADMIN) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_GERAIS)) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_FORM.name(),usession); |
299,24 → 310,49 |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_DELETE.name(),usession); |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_ANSWER_PROCESSOR.name(),usession); |
} |
if(getStateEnum() == State.ASSIGNED_ANSWERS) |
{ |
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_REVERT_TO_ASSIGNATION_DETAILS.name(),usession); |
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_START_PROCESSEMENT.name(),usession); |
} |
if(getStateEnum() == State.PROCESSING) |
{ |
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_STOP_PROCESSEMENT.name(),usession); |
} |
if(getStateEnum() == State.PROCESSING_WITH_ANSWERS) |
{ |
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_STOP_PROCESSEMENT.name(),usession); |
} |
if(getStateEnum() == State.STOPED_WITH_ANSWERS) |
{ |
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_START_PROCESSEMENT.name(),usession); |
} |
if(getStateEnum() == QuestionarioImpl.State.ASSIGNATION_DETAILS) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name(),usession); |
} |
} |
//ANO SEMESTRE ESPECIFICO apenas neste estado, em atribuição de respostas e respostas atribuidas já não permite |
if(getStateEnum() == QuestionarioImpl.State.ASSIGNATION_DETAILS) |
{ |
if((usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name(),usession); |
} |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_ASSIGNATION_OPERATIONS.name(),usession); |
} |
getiAnswersProcessorClass().initClearances(this,usession,s); |
} |
if(getStateEnum() == State.ASSIGNING_ANSWERS_PROCESSEMENT) |
if(getStateEnum() == QuestionarioImpl.State.STOPED_WITH_ANSWERS || getStateEnum() == QuestionarioImpl.State.PROCESSING || getStateEnum() == QuestionarioImpl.State.PROCESSING_WITH_ANSWERS) |
{ |
if(usession.getUser().isSuperuserOrAdmin() |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN) |
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_GERAIS)) |
{ |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_DASHBOARD.name(),usession); |
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_FORM.name(),usession); |
} |
} |
} |
//AS CLEARANCES SAO VERIFICADAS LA DENTRO PARA TODOS OS ESTADOS |
getiAnswersProcessorClass().initClearances(this,usession,s); |
setClearanceRuledSupport(s); |
} |
333,13 → 369,26 |
QUESTIONARIO_DELETE, |
QUESTIONARIO_REVERT_ALL_ASSIGNEMENTS, |
QUESTIONARIO_PUT_ANSWERS_ASSIGNED, |
QUESTIONARIO_REVERT_TO_ASSIGNATION_DETAILS, |
QUESTIONARIO_START_PROCESSEMENT, |
QUESTIONARIO_STOP_PROCESSEMENT, |
/*Pedagogico Cursos*/ |
QUESTIONARIO_SET_ANO_SEMESTRE, |
QUESTIONARIO_SCHEDULLE_SELECT_COURSES, |
QUESTIONARIO_SCHEDULLE_SEE_SELECT_COURSES, |
QUESTIONARIO_CHANGE_TIPOLOGIES, |
QUESTIONARIO_START_ASSIGN_ANSWERS, |
QUESTIONARIO_SEE_START_ASSIGN_ANSWERS, |
QUESTIONARIO_CHANGE_ASSIGNEMENTS, |
QUESTIONARIO_CHANGE_ASSIGNEMENTS_CHECK_TEACHERS, |
QUESTIONARIO_CHANGE_ASSIGNEMENTS_USE_UNIT, |
QUESTIONARIO_SEE_DASHBOARD |
; |
public static QuestionarioClearancesOperation parse(String clearance) |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java |
---|
511,8 → 511,36 |
setTipologias(tipologias.serialize()); |
} |
public TipologiaPersistent loadPersistent(Tipologia myTipo) |
public static class TipologiaLoadExeption extends Exception |
{ |
boolean teacherFail = false; |
boolean turmaFail = false; |
public TipologiaLoadExeption(boolean teacherFail, boolean turmaFail) { |
this.teacherFail = teacherFail; |
this.turmaFail = turmaFail; |
} |
public boolean isTeacherFail() { |
return teacherFail; |
} |
public boolean isTurmaFail() { |
return turmaFail; |
} |
@Override |
public String getMessage() { |
return "Professor: " + (teacherFail? "Falhou" : "OK") + " Turma: " + (turmaFail? "Falhou" : "OK"); |
} |
} |
/** |
* |
* @param myTipo |
* @return |
*/ |
public TipologiaPersistent loadPersistent(Tipologia myTipo) throws TipologiaLoadExeption |
{ |
TipologiaPersistent tipologiaPersistent = new TipologiaPersistent(); |
tipologiaPersistent.setHorRef(myTipo.isHorRef()); |
tipologiaPersistent.setExtra(myTipo.isExtra()); |
526,7 → 554,7 |
if(tipologiaPersistent.getCourseUnitTurma() == null || tipologiaPersistent.getTeacher() == null) |
{ |
logger.error("Turma ou professor nao encontrados enquanto fazia uma tipologia persistente: turma:" + myTipo.getCdTurma() + " teacher code: " + myTipo.getCdDocente()); |
return null; |
throw new TipologiaLoadExeption(tipologiaPersistent.getTeacher() == null,tipologiaPersistent.getCourseUnitTurma() == null); |
} |
return tipologiaPersistent; |
} |
914,6 → 942,14 |
return serializeMergedList(obtainMergeTipologias()); |
} |
/** |
* Junta todas as tipologias obtidas dos sumarios, horario(ref+trab) + extra |
* e coloca todas numa lista de unicas |
* Marca-as com isHorario, isSumario, isExtra |
* @return |
*/ |
public ArrayList<Tipologia> obtainMergeTipologias() |
{ |
ArrayList<Tipologia> merge = new ArrayList<Tipologia>(); |
978,7 → 1014,12 |
return merge; |
} |
/** |
* |
* |
* @param courseUnit |
* @return |
*/ |
public ArrayList<Tipologia> obtainTipologiasSimples(CourseUnit courseUnit) |
{ |
ArrayList<Tipologia> merge = new ArrayList<Tipologia>(); |
1003,6 → 1044,7 |
{ |
Tipologia simples = new Tipologia(); |
simples.setMarkWarning(true); |
//simples.setUse(true); |
simples.setCdDocente(""+t.getSigesCode()); |
simples.setCdTurma(turma.getTurma()); |
simples.setCdTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE); |
1025,6 → 1067,14 |
return merge; |
} |
/** |
* Cria uma tipologia Simples para cada par Docente-Turma nesta cadeira olhando para |
* todas as tipologias existentes, uma vez que o Baco não guarda associações entre |
* Docentes e Turmas isso será retirado das tipologias importadas |
* |
* @param tipologias |
* @param docenteTurmas |
*/ |
private void fullfillTipologiasSimples(ArrayList<Tipologia> tipologias, Map<String, Map<String, Tipologia>> docenteTurmas) { |
if(tipologias != null) |
for(Tipologia tipo: tipologias) |
1041,13 → 1091,14 |
simples.setCdTurma(tipo.getCdTurma()); |
simples.setCdTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE); |
simples.setDsTipologia(Globals.BACO_TIPOLOGIA_SIMPLES_DS); |
//simples.setUse(true);//TODAS USADAS |
if(tipo.hasOcorrencias()) |
{ |
simples.setOcorrencias(tipo.getOcorrencias()); |
} |
turmasDocente.put(tipo.getCdTurma(),simples); |
} |
if(tipo.hasOcorrencias()) |
else if(tipo.hasOcorrencias()) |
{ |
if(simples.getOcorrencias() == null) |
simples.setOcorrencias(0); |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/UserDaoImpl.java |
---|
10,6 → 10,7 |
import pt.estgp.estgweb.domain.User; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import pt.estgp.estgweb.utils.RoleManager; |
import java.io.Serializable; |
import java.util.ArrayList; |
133,6 → 134,16 |
} |
} |
public List<User> loadRoleUsers(String role, int maxResults, int firstResult) |
{ |
Criteria c = createCriteria() |
.add(like("roles","%" + role + RoleManager.ROLE_SEPARATOR +"%")) |
.addOrder(Order.asc("name")) |
.setMaxResults(maxResults) |
.setFirstResult(firstResult); |
return c.list(); |
} |
public List<User> loadRoleUsers(String role) |
{ |
if(role == null || role.trim().length() == 0) |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/QuestionarioDaoImpl.java |
---|
1,15 → 1,20 |
package pt.estgp.estgweb.domain.dao.impl; |
import jomm.dao.DaoException; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import org.hibernate.Criteria; |
import org.hibernate.HibernateException; |
import org.hibernate.Query; |
import org.hibernate.criterion.Order; |
import pt.estgp.estgweb.domain.QuestionarioImpl; |
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto; |
import pt.estgp.estgweb.domain.QuestionarioResposta; |
import pt.estgp.estgweb.domain.QuestionarioRespostaRequisitada; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.eq; |
import static org.hibernate.criterion.Restrictions.*; |
/** |
* @author Jorge Machado |
63,5 → 68,128 |
} |
} |
public List<QuestionarioImpl> findProcessing() |
{ |
try |
{ |
Criteria criteria = createCriteria(); |
criteria.add(or(eq("state",QuestionarioImpl.State.PROCESSING.name()),eq("state",QuestionarioImpl.State.PROCESSING_WITH_ANSWERS.name()))); |
return criteria.list(); |
} |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
} |
public List<QuestionarioImpl> findNotClosed() |
{ |
try |
{ |
Criteria criteria = createCriteria(); |
criteria.add(not(or(or(eq("state",QuestionarioImpl.State.CLOSED.name()),eq("state",QuestionarioImpl.State.PROCESSING_OLAP.name())), |
eq("state",QuestionarioImpl.State.OLAP.name())))) |
.addOrder(Order.desc("id")); |
return criteria.list(); |
} |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
} |
public long getNumeroRespostas(long questionarioId) |
{ |
Query q = getCurrentSession().createQuery |
("select count(r.id) from r in class " + QuestionarioResposta.class.getName() + " " + |
" JOIN r.questionario q " + |
" where q.id = " + questionarioId); |
Object result = q.uniqueResult(); |
if(result != null && ((Long)result) > 0) |
{ |
return (Long)result; |
} |
else |
return 0; |
} |
public long getNumeroRespostasRequisitadas(long questionarioId) |
{ |
Query q = getCurrentSession().createQuery |
("select count(r.id) from r in class " + QuestionarioRespostaRequisitada.class.getName() + " " + |
" JOIN r.questionario q " + |
" where q.id = " + questionarioId); |
Object result = q.uniqueResult(); |
if(result != null && ((Long)result) > 0) |
{ |
return (Long)result; |
} |
else |
return 0; |
} |
public static class QuestionarioStatsVars |
{ |
public long cursos; |
public long unidades; |
public long profs; |
public long alunos; |
public long turmas; |
public long alunosDeUsadas; |
public long profsDeUsadas; |
public long unidadesUsadas; |
public long profsTimeStudents; |
public long respostasRequisitadas; |
public long respostasObtidas; |
} |
public QuestionarioStatsVars loadQuestionarioStatsPedagogico(long questionarioId) |
{ |
QuestionarioStatsVars questionarioStatsVars = new QuestionarioStatsVars(); |
Query q = AbstractDao.getCurrentSession().createQuery("SELECT " + |
" count(distinct c.id) AS cursos " + |
",count(distinct u.id) AS unidades " + |
",sum (u.profs) AS profs " + |
",sum (u.turmas) AS turmas " + |
",sum (u.students) AS students " + |
",sum (case when u.usar = true then u.students else 0 end) AS alunosDeUsadas " + |
",sum (case when u.usar = true then u.profs else 0 end) AS profsDeUsadas " + |
",sum (case when u.usar = true then 1 else 0 end) AS unidadesUsadas " + |
",sum (case when u.usar = true then 1 else 1 end) AS unidadesTodasCheck " + |
",sum (case when u.usar = true then (u.profs * u.students) else 0 end) AS respostasEsperadas " + |
"from " + QuestionarioPedagogicoCursoAfeto.class.getName() + " c " + |
"JOIN c.questionario q " + |
"JOIN c.unidadesAfetas u " + |
"WHERE q.id = :id " + |
"GROUP BY q.id"); |
q.setLong("id",questionarioId); |
Object[] results = (Object[]) q.uniqueResult(); |
if(results != null && results[0] != null) |
{ |
questionarioStatsVars.cursos = (Long) results[0]; |
questionarioStatsVars.unidades = (Long) results[1]; |
questionarioStatsVars.profs = (Long) results[2]; |
questionarioStatsVars.turmas = (Long) results[3]; |
questionarioStatsVars.alunos = (Long) results[4]; |
questionarioStatsVars.alunosDeUsadas = (Long) results[5]; |
questionarioStatsVars.profsDeUsadas = (Long) results[6]; |
questionarioStatsVars.unidadesUsadas = (Long) results[7]; |
if(((Long) results[8]) != questionarioStatsVars.unidades) |
logger.error("TEM UM ERRO NA QUERY, a contagem de usadas com o distinct da diferente de com o SUM"); |
questionarioStatsVars.profsTimeStudents = (Long) results[9]; |
questionarioStatsVars.respostasRequisitadas = getNumeroRespostasRequisitadas(questionarioId); |
questionarioStatsVars.respostasObtidas = getNumeroRespostas(questionarioId); |
} |
return questionarioStatsVars; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/QuestionarioPedagogicoCursoAfetoDaoImpl.java |
---|
1,7 → 1,9 |
package pt.estgp.estgweb.domain.dao.impl; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import org.hibernate.Query; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto; |
import java.util.List; |
13,6 → 15,8 |
*/ |
public class QuestionarioPedagogicoCursoAfetoDaoImpl extends QuestionarioPedagogicoCursoAfetoDao{ |
private static final Logger logger = Logger.getLogger(QuestionarioPedagogicoCursoAfetoDaoImpl.class); |
public static QuestionarioPedagogicoCursoAfetoDaoImpl getInstance() { |
if (myInstance == null) |
myInstance = new QuestionarioPedagogicoCursoAfetoDaoImpl(); |
33,23 → 37,35 |
.list(); |
} |
public List<Long> findCursosAfetosIds(long questionarioId) |
{ |
return createCriteria() |
.setProjection(Projections.distinct(Projections.property("id"))) |
.add(eq("questionario.id", questionarioId)) |
.list(); |
} |
public static class CourseStatsVars |
{ |
public long unidades; |
public long marcadas; |
public long observadas; |
public long porVerProfs; |
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.vistaProfs = false then 1 else 0 end) AS porVerProfs " + |
",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 " + |
61,12 → 77,38 |
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]; |
if(results != null && results[0] != null) |
{ |
courseStatsVars.porVer = (Long) results[0]; |
courseStatsVars.porVerProfs = (Long) results[1]; |
courseStatsVars.naoUsadas = (Long) results[2]; |
courseStatsVars.marcadas = (Long) results[3]; |
courseStatsVars.observadas = (Long) results[4]; |
courseStatsVars.unidades = (Long) results[5]; |
} |
return courseStatsVars; |
} |
public long countRespostas(long cursoAfetoId) |
{ |
Query q = AbstractDao.getCurrentSession().createQuery("SELECT " + |
" count(distinct r.id) AS respostas " + |
"from " + QuestionarioPedagogicoCursoAfeto.class.getName() + " c " + |
"JOIN c.unidadesAfetas u " + |
"JOIN u.tipologiasRequisitadas t " + |
"JOIN t.alunosRequisitados a " + |
"JOIN a.respostaRequisitada rR " + |
"JOIN rR.resposta r " + |
"WHERE c.id = :id "); |
q.setLong("id",cursoAfetoId); |
Object result = q.uniqueResult(); |
if(result != null) |
return (Long) result; |
return 0; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java |
---|
67,7 → 67,24 |
.uniqueResult(); |
} |
public int countCoursesUnits(String importYear,long courseId,String semestre) |
{ |
/* return createCriteria() |
.createAlias("courseUnits", "c") |
.setProjection(Projections.property("c.id")) |
.add(eq("c.importYear", importYear)) |
.add(eq("id", courseId)) |
.list().size(); |
*/ |
return (Integer) createCriteria(CourseUnit.class) |
.setProjection(Projections.rowCount()) |
.add(eq("importYear",importYear)) |
.add(eq("semestre",semestre)) |
.add(eq("course.id",courseId)) |
.uniqueResult(); |
} |
public int countCoursesUnitsTurmas(String importYear,long courseId) |
{ |
return (Integer) createCriteria(CourseUnitTurma.class) |
231,7 → 248,7 |
} |
if (institutionCode != null && institutionCode.trim().length() > 0) |
{ |
query += logic + "cu.institutionCode = :institutionCode "; |
query += logic + "c.institutionalCode = :institutionCode "; |
logic = " and "; |
} |
if (area != null && area.length() > 0) |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/QuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl.java |
---|
16,16 → 16,16 |
return (QuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl) myInstance; |
} |
public List<QuestionarioPedagogicoUnidadeCurricularAfeta> find(long questionarioId, String cursoCode,String codeUnidade) |
public List<QuestionarioPedagogicoUnidadeCurricularAfeta> find(long questionarioId, String cursoCode,Long idUnidade) |
{//pt.estgp.estgweb.domain.dao.DaoFactory.getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl().getCurrentSession().createCriteria(QuestionarioPedagogicoUnidadeCurricularAfeta.class).add(eq("cursoAfeto.id","1")).list() |
//add(eq("cuA.questionario.id", new Long(20))).add(eq("codigoUnidade","209535")).add(eq("cuA.codigoCurso","9119")) |
Query q = getCurrentSession().createQuery("select c from c in class " + QuestionarioPedagogicoUnidadeCurricularAfeta.class.getName() + " " + |
" join c.cursoAfeto as curso " + |
"where curso.questionario.id = :questionarioId and curso.codigoCurso = :codigoCurso" + |
" and c.codigoUnidade = :codigoUnidade"); |
" and c.courseUnit.id = :idUnidade"); |
q.setLong("questionarioId", questionarioId); |
q.setString("codigoCurso", cursoCode); |
q.setString("codigoUnidade",codeUnidade); |
q.setLong("idUnidade",idUnidade); |
return q.list(); |
/*DaoFactory.getCourseDaoImpl() |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/UserSessionImpl.java |
---|
308,4 → 308,11 |
return getUser() == null; |
} |
public String getShortName() |
{ |
if(getName() != null) |
return getName().split(" ")[0]; |
return getName(); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoCursoAfetoImpl.java |
---|
22,4 → 22,12 |
{ |
setMarcadas(getMarcadas()+1); |
} |
public void resetAnswerStats() { |
setStatTipologiasRequisitadas(0); |
setStatRespostasRequisitadas(0); |
} |
public void incStatTipologiasRequisitadas(){ setStatTipologiasRequisitadas(getStatTipologiasRequisitadas()+1);} |
public void incStatRespostasRequisitadas(){ setStatRespostasRequisitadas(getStatRespostasRequisitadas() + 1);} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/filters/chains/ResourceAccessControlEnum.java |
---|
10,8 → 10,8 |
public enum ResourceAccessControlEnum |
{ |
publicDomain("resource.access.publicDomain", new ResourceAccessControlPublicDomainFilter()), |
privateDomain("resource.access.privateDomain", new ResourceAccessControlPublicDomainFilter()), |
authenticatedDomain("resource.access.authenticatedDomain", new ResourceAccessControlPublicDomainFilter()), |
privateDomain("resource.access.privateDomain", new ResourceAccessControlPrivateDomainFilter()), |
authenticatedDomain("resource.access.authenticatedDomain", new ResourceAccessControlAuthenticatedDomainFilter()), |
adminDomain("resource.access.adminDomain",new ResourceAccessControlAdminDomainFilter()), |
superUserDomain("resource.access.superDomain",new ResourceAccessControlSuperDomainFilter()), |
courseunitDeliverableDomain("resource.access.courseunitDeliverableDomain",new ResourceAccessControlCourseUnitDeliverableFilter()), |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/tags/InstanceOfTag.java |
---|
New file |
0,0 → 1,96 |
package pt.estgp.estgweb.web.tags; |
import org.apache.log4j.Logger; |
import org.apache.struts.util.RequestUtils; |
import javax.servlet.jsp.JspException; |
import javax.servlet.jsp.JspWriter; |
import javax.servlet.jsp.tagext.BodyTagSupport; |
public class InstanceOfTag extends BodyTagSupport |
{ |
private static final Logger logger = Logger.getLogger(InstanceOfTag.class); |
private String name; |
private String property; |
private String value; |
public String getName() |
{ |
return name; |
} |
public void setName(String name) |
{ |
this.name = name; |
} |
public String getProperty() |
{ |
return property; |
} |
public void setProperty(String property) |
{ |
this.property = property; |
} |
public String getValue() { |
return value; |
} |
public void setValue(String value) { |
this.value = value; |
} |
public int doStartTag() throws JspException |
{ |
if (go()) |
{ |
return EVAL_BODY_TAG; |
} |
else |
return SKIP_BODY; |
} |
public boolean go() throws JspException |
{ |
Object obj = RequestUtils.lookup(pageContext, name, property, null); |
try |
{ |
return Class.forName(value).isInstance(obj); |
} |
catch (ClassNotFoundException e) |
{ |
return false; |
} |
} |
public int doEndTag() throws JspException |
{ |
if (go()) |
{ |
String toPage = bodyContent.getString().trim(); |
JspWriter writer = pageContext.getOut(); |
try |
{ |
writer.write(toPage); |
} |
catch (Exception e) |
{ |
logger.error(e, e); |
throw new JspException(e); |
} |
} |
// Continue processing this page |
return EVAL_PAGE; |
} |
} |
Property changes: |
Added: svn:executable |
+ * |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/tags/IsNotAuthenticatedTag.java |
---|
1,53 → 1,18 |
package pt.estgp.estgweb.web.tags; |
import org.apache.log4j.Logger; |
import org.apache.struts.taglib.logic.ConditionalTagBase; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import javax.servlet.jsp.tagext.BodyTagSupport; |
import javax.servlet.jsp.JspException; |
import javax.servlet.jsp.JspWriter; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.Globals; |
public class IsNotAuthenticatedTag extends BodyTagSupport |
public class IsNotAuthenticatedTag extends ConditionalTagBase |
{ |
private static final Logger logger = Logger.getLogger(IsNotAuthenticatedTag.class); |
public int doStartTag() throws JspException |
{ |
if (go()) |
return EVAL_BODY_TAG; |
else |
return SKIP_BODY; |
} |
public boolean go() |
{ |
protected boolean condition() throws JspException { |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
return userSession == null || userSession.getUser() == null; |
return !(userSession != null && userSession.getUser() != null); |
} |
public int doEndTag() throws JspException |
{ |
if (go()) |
{ |
String toPage = bodyContent.getString().trim(); |
JspWriter writer = pageContext.getOut(); |
try |
{ |
writer.write(toPage); |
} |
catch (Exception e) |
{ |
logger.error(e, e); |
throw new JspException(e); |
} |
} |
// Continue processing this page |
return EVAL_PAGE; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/tags/IsAuthenticatedTag.java |
---|
1,53 → 1,22 |
package pt.estgp.estgweb.web.tags; |
import org.apache.log4j.Logger; |
import org.apache.struts.taglib.logic.ConditionalTagBase; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import javax.servlet.jsp.tagext.BodyTagSupport; |
import javax.servlet.jsp.JspException; |
import javax.servlet.jsp.JspWriter; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.Globals; |
public class IsAuthenticatedTag extends BodyTagSupport |
public class IsAuthenticatedTag extends ConditionalTagBase |
{ |
private static final Logger logger = Logger.getLogger(IsAuthenticatedTag.class); |
public int doStartTag() throws JspException |
{ |
if (go()) |
return EVAL_BODY_TAG; |
else |
return SKIP_BODY; |
} |
public boolean go() |
{ |
@Override |
protected boolean condition() throws JspException { |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
return userSession != null && userSession.getUser() != null; |
} |
public int doEndTag() throws JspException |
{ |
if (go()) |
{ |
String toPage = bodyContent.getString().trim(); |
JspWriter writer = pageContext.getOut(); |
try |
{ |
writer.write(toPage); |
} |
catch (Exception e) |
{ |
logger.error(e, e); |
throw new JspException(e); |
} |
} |
// Continue processing this page |
return EVAL_PAGE; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/utils/TestHttpServletRequest.java |
---|
20,8 → 20,11 |
*/ |
public class TestHttpServletRequest implements HttpServletRequest |
{ |
Cookie[] cookies = new Cookie[1]; |
public TestHttpServletRequest(String requester) |
{ |
cookies[0] = new Cookie(pt.estgp.estgweb.web.Globals.BACO_SESSION_COOKIE,requester); |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/form/questionarios/QuestionarioRespostaForm.java |
---|
New file |
0,0 → 1,71 |
package pt.estgp.estgweb.web.form.questionarios; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.action.ActionMapping; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.QuestionarioResposta; |
import pt.estgp.estgweb.domain.QuestionarioRespostaImpl; |
import pt.estgp.estgweb.web.form.ApplicationForm; |
import javax.servlet.http.HttpServletRequest; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* Created by jorgemachado on 05/06/16. |
*/ |
public class QuestionarioRespostaForm extends ApplicationForm |
{ |
QuestionarioRespostaImpl resposta = DomainObjectFactory.createQuestionarioRespostaImpl(); |
public QuestionarioRespostaForm() { |
resposta.setQuestionario(DomainObjectFactory.createQuestionarioImpl()); |
} |
long alunoRequesitadoId; |
public long getAlunoRequesitadoId() { |
return alunoRequesitadoId; |
} |
public void setAlunoRequesitadoId(long alunoRequesitadoId) { |
this.alunoRequesitadoId = alunoRequesitadoId; |
} |
public QuestionarioRespostaImpl getResposta() { |
return resposta; |
} |
public void setResposta(QuestionarioRespostaImpl resposta) { |
this.resposta = resposta; |
} |
@Override |
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { |
ActionErrors errors = new ActionErrors(); |
List<String> respostasVazias = new ArrayList<String>(); |
for(int i = 1; i <= 17; i++) |
{ |
try { |
String r = (String) QuestionarioResposta.class.getMethod("getR"+i).invoke(resposta); |
if(r == null || r.trim().length() == 0) |
{ |
if(respostasVazias.size() == 0) |
addMessage(errors, request, "questionario.respostas.grupos.1.2.3"); |
respostasVazias.add("" + i); |
} |
} |
catch (Throwable e) |
{ |
System.err.println("Erro nao esperado metodo getR" + i + " nao existe na resposta"); |
e.printStackTrace(); |
} |
} |
if(respostasVazias.size() > 0) |
request.setAttribute("respostasVazias",respostasVazias); |
return errors; |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/paginaseseccoes/PaginasSeccoesController.java |
---|
2,40 → 2,21 |
import jomm.dao.utils.HibernateUtils; |
import org.apache.log4j.Logger; |
import org.apache.struts.action.*; |
import org.apache.struts.upload.FormFile; |
import org.hibernate.ObjectNotFoundException; |
import pt.estgp.estgweb.domain.Image; |
import org.apache.struts.action.ActionForm; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import pt.estgp.estgweb.domain.Pagina; |
import pt.estgp.estgweb.domain.Seccao; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.dao.impl.PaginaDao; |
import pt.estgp.estgweb.domain.dao.impl.SeccaoDao; |
import pt.estgp.estgweb.domain.views.BlogPostView; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.filters.exceptions.NotFoundException; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.controllers.AddRolesController; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.estgp.estgweb.web.form.blogs.BlogForm; |
import pt.estgp.estgweb.web.utils.DomainUtils; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterExpressionException; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ExecutedFilterException; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.io.Serializable; |
/** |
* @author Jorge Machado |
49,7 → 30,31 |
private static final Logger logger = Logger.getLogger(PaginasSeccoesController.class); |
public ActionForward uploadFicheiro(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
PaginasSeccoesForm frm = (PaginasSeccoesForm) form; |
String id = (String) ServiceManager.getInstance().execute( |
RequestUtils.getRequester(request, response), |
"SalvarFicheiro", |
new Object[]{ frm } |
); |
System.out.println("O FICHEIRO TEM O ID " + id); |
request.setAttribute("FICHEIRO_ID", id); |
return mapping.getInputForward(); |
} |
public ActionForward criarPagina(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/paginaseseccoes/PaginasSeccoesForm.java |
---|
1,26 → 1,13 |
package pt.estgp.estgweb.web.controllers.paginaseseccoes; |
import jomm.utils.StringsUtils; |
import org.apache.log4j.Logger; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.upload.FormFile; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.Pagina; |
import pt.estgp.estgweb.domain.Seccao; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.views.BlogPostView; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.utils.DynamicArrayList; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.form.AddRolesForm; |
import pt.estgp.estgweb.web.form.ApplicationForm; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import java.util.ArrayList; |
import java.util.HashSet; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @date 21/Abr/2008 |
34,7 → 21,16 |
Pagina pagina; |
Seccao seccao; |
FormFile ficheiro; |
public FormFile getFicheiro() { |
return ficheiro; |
} |
public void setFicheiro(FormFile ficheiro) { |
this.ficheiro = ficheiro; |
} |
public Pagina getPagina() |
{ |
if(pagina == null) |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/questionarios/QuestionarioYearSemestreController.java |
---|
3,6 → 3,7 |
import org.apache.struts.action.*; |
import pt.estgp.estgweb.domain.QuestionarioImpl; |
import pt.estgp.estgweb.web.form.questionarios.QuestionarioForm; |
import pt.estgp.estgweb.web.form.questionarios.QuestionarioRespostaForm; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
52,4 → 53,25 |
} |
return mapping.findForward("admin"); |
} |
public ActionForward submitResposta(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable |
{ |
QuestionarioRespostaForm frm = (QuestionarioRespostaForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"resposta","alunoRequisitadoId"}; |
Object[] args = {frm.getResposta(),frm.getAlunoRequesitadoId()}; |
sm.execute(RequestUtils.getRequester(request, response),"QuestionarioSalvarResposta",args,names); |
addMessage(request,"questionario.resposta.com.sucesso"); |
return mapping.findForward("success"); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/questionarios/QuestionarioController.java |
---|
141,5 → 141,120 |
} |
public ActionForward putInAssignedAnwsers(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable |
{ |
QuestionarioForm frm = (QuestionarioForm) form; |
long questionarioId; |
if(request.getParameter("questionarioId")!=null) |
questionarioId = Long.parseLong(request.getParameter("questionarioId")); |
else |
questionarioId = frm.getQuestionario().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"questionarioId"}; |
Object[] args = {questionarioId}; |
QuestionarioImpl affected = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"QuestionarioPutAssignedAnswers",args,names); |
frm.setQuestionario(affected); |
return mapping.findForward("admin"); |
} |
public ActionForward revertAssignationDetails(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable |
{ |
QuestionarioForm frm = (QuestionarioForm) form; |
long questionarioId; |
if(request.getParameter("questionarioId")!=null) |
questionarioId = Long.parseLong(request.getParameter("questionarioId")); |
else |
questionarioId = frm.getQuestionario().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"questionarioId"}; |
Object[] args = {questionarioId}; |
QuestionarioImpl affected = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"QuestionarioRevertAssignationDetails",args,names); |
frm.setQuestionario(affected); |
return mapping.findForward("admin"); |
} |
public ActionForward stopProcessement(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable |
{ |
QuestionarioForm frm = (QuestionarioForm) form; |
long questionarioId; |
if(request.getParameter("questionarioId")!=null) |
questionarioId = Long.parseLong(request.getParameter("questionarioId")); |
else |
questionarioId = frm.getQuestionario().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"questionarioId"}; |
Object[] args = {questionarioId}; |
QuestionarioImpl affected = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"QuestionarioStopProcessement",args,names); |
frm.setQuestionario(affected); |
return mapping.findForward("admin"); |
} |
public ActionForward startProcessement(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable |
{ |
QuestionarioForm frm = (QuestionarioForm) form; |
long questionarioId; |
if(request.getParameter("questionarioId")!=null) |
questionarioId = Long.parseLong(request.getParameter("questionarioId")); |
else |
questionarioId = frm.getQuestionario().getId(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"questionarioId"}; |
Object[] args = {questionarioId}; |
QuestionarioImpl affected = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"QuestionarioStartProcessement",args,names); |
frm.setQuestionario(affected); |
return mapping.findForward("admin"); |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/questionarios/QuestionarioCourseSelectionController.java |
---|
24,6 → 24,28 |
private static final Logger logger = Logger.getLogger(QuestionarioCourseSelectionController.class); |
public ActionForward assignAnswers(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable |
{ |
QuestionarioForm frm = (QuestionarioForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = {"questionarioId"}; |
Object[] args = {frm.getQuestionario().getId()}; |
QuestionarioImpl q = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"RunJobAssignAnswers",args,names); |
frm.setQuestionario(q); |
addMessage(request,"questionarios.answers.start"); |
return mapping.findForward("assignAnswers"); |
} |
public ActionForward selectCourses(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/authenticate/AuthenticateController.java |
---|
139,7 → 139,7 |
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request); |
if(userSession.getUser() == null) |
return mapping.findForward("welcome"); |
return mapping.findForward(Globals.SYSTEM_REDIRECTIONS_POLICY_INDEX_WELCOME); |
IServiceManager sm = ServiceManager.getInstance(); |
Object[] args = new Object[]{}; |
//to send good by message |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/filters/UserSessionFilter.java |
---|
91,9 → 91,9 |
if(((HttpServletRequest)request).getServletPath().indexOf("errorNoCookies.do")>=0 || !hrequest.isRequestedSessionIdFromCookie()) |
{ |
chain.doFilter(request,response); |
//chain.doFilter(request,response); |
logger.info("COOKIE lost"); |
return; |
} |
try |
{ |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/filters/CacheControlFilter.java |
---|
New file |
0,0 → 1,35 |
package pt.estgp.estgweb.web.filters; |
/** |
* Created by jorgemachado on 24/05/16. |
*/ |
import javax.servlet.*; |
import javax.servlet.http.HttpServletResponse; |
import java.io.IOException; |
import java.util.Date; |
public class CacheControlFilter implements Filter { |
@Override |
public void init(FilterConfig filterConfig) throws ServletException { |
} |
public void doFilter(ServletRequest request, ServletResponse response, |
FilterChain chain) throws IOException, ServletException { |
HttpServletResponse resp = (HttpServletResponse) response; |
resp.setHeader("Expires", "Tue, 03 Jul 2001 06:00:00 GMT"); |
resp.setDateHeader("Last-Modified", new Date().getTime()); |
resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0"); |
resp.setHeader("Pragma", "no-cache"); |
chain.doFilter(request, response); |
} |
@Override |
public void destroy() { |
} |
} |
/branches/v3/impl/src/java/pt/estgp/estgweb/web/FTPFileProxy.java |
---|
102,7 → 102,7 |
{ |
//FALHOU PODE A PASS DO USER NAO DAR POR NAO ESTAR NO FTP |
//TEM DE VERIFICAR SE PODE USAR DEFAULTS QUANDO AUTENTICACAO FALHA |
if(userSession.getUsername() != null && |
if(userSession != null && userSession.getUsername() != null && |
ConfigProperties |
.getBooleanProperty( |
server + ".use.default.credentials.to.read.if.user.fail.when.authenticated")) |
121,7 → 121,7 |
return ftpServer.getClient(); |
} |
else if(userSession.getUsername() != null && |
else if(userSession != null && userSession.getUsername() != null && |
!ConfigProperties |
.getBooleanProperty( |
server + ".use.default.credentials.to.read.if.user.fail.when.authenticated")) |
169,6 → 169,7 |
if(path != null) |
{ |
String serverUrl = pt.estgp.estgweb.utils.ConfigProperties.getProperty("server." + server); |
String startPath = pt.estgp.estgweb.utils.ConfigProperties.getProperty("server." + server + ".start.path"); |
String remoteName = path.substring(path.lastIndexOf("/")+1); |
String remoteDirectory = path.substring(0,path.lastIndexOf("/")); |
FtpServer ftpServer = FtpServer.getNewServer(serverUrl,username,password); |
182,6 → 183,15 |
return; |
} |
if(startPath.length() > 0) |
{ |
if(remoteDirectory.startsWith("/")) |
remoteDirectory = startPath + remoteDirectory; |
else |
remoteDirectory = startPath + "/" + remoteDirectory; |
} |
client.changeWorkingDirectory(remoteDirectory); |
/branches/v3/impl/src/doc/estgweb.eap |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/branches/v3/impl/src/doc/siges/ModeloDeInformacaoPAE-EmVigor.docx |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/branches/v3/impl/src/doc/siges/ModeloDeInformacaoPAEv2.docx |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |