Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1543 → Rev 1544

/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/pedagogico/OlapGenerationProcessor.java
New file
0,0 → 1,100
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.impl.DefaultLogMessages;
 
 
/**
* Created by jorgemachado on 22/03/16.
*/
public class OlapGenerationProcessor extends ServiceJob
{
 
//int unidadesNaoUtilizadas = 0;
 
 
private static Logger logger = Logger.getLogger(OlapGenerationProcessor.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();
 
//unidadesNaoUtilizadas = 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 OLAP GENERATION generation for questionario: " + q.getId() + " - " + q.getiAnswersProcessorClass().getTitle();
serviceLogInfo(msg);
logger.info(msg);
 
//List<Long> cursosAfetosIds = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().findCursosAfetosIds(questionarioId);
int count = 0;
 
 
for(Long cursoAfetoId : new Long[]{new Long(1),new Long(2)})
{
count++;
int size=2;
/** COMMIT OPERATION **/
setProgress((int)((((float)count)/((float)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);
 
 
 
}
 
/** COMMIT OPERATION **/
setProgress(100);
commitPartially();
DaoFactory.getQuestionarioDaoImpl().update(q);
/** COMMIT OPERATION **/
 
msg = "Set courses state as " + QuestionarioImpl.State.OLAP.name();
serviceLogInfo(msg);
logger.info(msg);
q.setStateClass(QuestionarioImpl.State.OLAP);
commitPartially();
 
 
serviceLogInfo("######################################");
serviceLogInfo("######################################");
 
 
logger.info("######################################");
logger.info("######################################");
 
return logMessages;
}
 
 
 
 
 
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/PedagogicoAlunosProcessor.java
8,6 → 8,7
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.OlapGenerationProcessor;
import pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService;
import pt.estgp.estgweb.utils.ConfigProperties;
 
177,5 → 178,9
return AnswersAlunosProcessor.class;
}
 
public Class getJobServiceOlapGenerationProcessor() {
return OlapGenerationProcessor.class;
}
 
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/QuestionariosService.java
9,7 → 9,9
import pt.estgp.estgweb.services.email.EMAILJob;
import pt.estgp.estgweb.services.email.EMAILJobPersonalizedCertificated;
import pt.estgp.estgweb.services.email.SendEmailService;
import pt.estgp.estgweb.services.jobs.JobDeamon;
import pt.estgp.estgweb.services.jobs.JobScheduleService;
import pt.estgp.estgweb.services.jobs.ServiceJob;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Email;
import pt.estgp.estgweb.utils.EmailPersonalizedCertificated;
176,6 → 178,54
return questionarioCleared;
}
 
public QuestionarioImpl closeProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
{
 
if(questionarioCleared.isClear((UserSessionImpl) userSession,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CLOSE_PROCESSEMENT.toString()))
{
questionarioCleared.setStateClass(QuestionarioImpl.State.CLOSED);
}
return questionarioCleared;
}
 
public QuestionarioImpl reopenProcessement(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared)
{
 
if(questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REOPEN_PROCESSEMENT.toString()))
{
if(DaoFactory.getQuestionarioDaoImpl().getNumeroRespostas(questionarioId) > 0)
questionarioCleared.setStateClass(QuestionarioImpl.State.PROCESSING_WITH_ANSWERS);
else
questionarioCleared.setStateClass(QuestionarioImpl.State.PROCESSING);
}
return questionarioCleared;
}
 
public QuestionarioImpl generateOlap(long questionarioId, UserSession userSession,QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
 
if(!questionarioCleared.isClear((UserSessionImpl) userSession, QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_GENERATE_OLAP.toString()) )
{
throw new NotAuthorizedException("Nao tem autorização para atribuir respostas ao questionario " + questionarioId);
}
 
questionarioCleared.setStateClass(QuestionarioImpl.State.PROCESSING_OLAP);
 
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().getJobServiceOlapGenerationProcessor(), userSession.getUser(), paramsJob,
"Service: Geracao OLAP a um questionário Pedagógico");
questionarioCleared.setAnswerOlapGenerationTaskId(job.getId());
 
 
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);
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/IAnswersProcessor.java
22,4 → 22,6
 
public Class getJobServiceTaskAnswersProcessor();
 
public Class getJobServiceOlapGenerationProcessor();
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/QuestionarioImpl.java
218,6 → 218,11
public Class getJobServiceTaskAnswersProcessor() {
return null;
}
 
@Override
public Class getJobServiceOlapGenerationProcessor() {
return null;
}
};
}
 
318,15 → 323,34
if(getStateEnum() == State.PROCESSING)
{
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_STOP_PROCESSEMENT.name(),usession);
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_CLOSE_PROCESSEMENT.name(),usession);
}
if(getStateEnum() == State.PROCESSING_WITH_ANSWERS)
{
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_STOP_PROCESSEMENT.name(),usession);
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_CLOSE_PROCESSEMENT.name(),usession);
}
if(getStateEnum() == State.STOPED_WITH_ANSWERS)
{
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_START_PROCESSEMENT.name(),usession);
//Nao esta no diagrama //s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_CLOSE_PROCESSEMENT.name(),usession);
}
if(getStateEnum() == State.CLOSED)
{
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_REOPEN_PROCESSEMENT.name(),usession);
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_GENERATE_OLAP.name(),usession);
}
if(getStateEnum() == State.PROCESSING_OLAP)
{
//notting to do
//verificar aqui ou pedido de paragem OLAP ou forçar caso tenha passado muito tempo
//todo para ver depois
}
if(getStateEnum() == State.OLAP)
{
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_CLOSE_PROCESSEMENT.name(),usession);
s.addClearance(QuestionarioClearancesOperation.QUESTIONARIO_GENERATE_OLAP.name(),usession);
}
if(getStateEnum() == QuestionarioImpl.State.ASSIGNATION_DETAILS)
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name(),usession);
376,6 → 400,11
QUESTIONARIO_START_PROCESSEMENT,
QUESTIONARIO_STOP_PROCESSEMENT,
 
QUESTIONARIO_CLOSE_PROCESSEMENT,
QUESTIONARIO_REOPEN_PROCESSEMENT,
 
QUESTIONARIO_GENERATE_OLAP,
 
/*Pedagogico Cursos*/
QUESTIONARIO_SET_ANO_SEMESTRE,
QUESTIONARIO_SCHEDULLE_SELECT_COURSES,
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/questionarios/QuestionarioController.java
226,6 → 226,92
return mapping.findForward("admin");
}
 
 
 
public ActionForward closeProcessement(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),"QuestionarioCloseProcessement",args,names);
 
frm.setQuestionario(affected);
 
return mapping.findForward("admin");
}
 
public ActionForward reopenProcessement(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),"QuestionarioReopenProcessement",args,names);
 
frm.setQuestionario(affected);
 
return mapping.findForward("admin");
}
 
public ActionForward generateOlap(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),"QuestionarioGenerateOlap",args,names);
 
frm.setQuestionario(affected);
 
return mapping.findForward("admin");
}
 
public ActionForward startProcessement(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,