Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1330 → Rev 1332

/branches/v3/impl/src/java/pt/estgp/estgweb/services/jobs/ServiceJob.java
2,6 → 2,7
 
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import pt.estgp.estgweb.Globals;
35,10 → 36,10
public static final String JOB_questionario_id_KEY = "JOB_questionario_id_KEY";
/*Log for service run*/
 
protected final Logger serviceLog = Logger.getLogger(ServiceJob.class);
protected final Logger serviceLog = Logger.getLogger("JobServiceTaskLog");
 
/*Class regular log*/
private static final Logger logger = Logger.getLogger("JobServiceTaskLog");
private static final Logger logger = Logger.getLogger(ServiceJob.class);
 
private Map<String,JobServiceTaskParameter> parameters = new HashMap<String, JobServiceTaskParameter>();
protected pt.estgp.estgweb.domain.JobServiceTaskImpl jobServiceTask = null; //to be used in subService in order to update log and check stopRequest
203,4 → 204,10
//serviceLogInfo("Max Memory:" + runtime.maxMemory() / mb);
logger.info("Max Memory:" + runtime.maxMemory() / mb);
}
 
public void serviceLogInfoWithLoggerSource(String message)
{
serviceLogInfo(message);
logger.log(this.getClass().getCanonicalName(), Level.INFO, message, null);
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/pedagogico/UpdateCoursesAndUnitsJobService.java
8,11 → 8,14
import pt.estgp.estgweb.services.jobs.JobDeamon;
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.questionarios.QuestionariosService;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
52,10 → 55,33
return new String[0];
 
String courses = job.getParameter(ServiceJob.JOB_questionario_courseList_KEY).getObject();
return deserializeCoursesList(courses);
}
 
public List<Course> getCoursesList(String coursesListJson)
{
List<Course> courses = new ArrayList<Course>();
String[] courseIds = deserializeCoursesList(coursesListJson);
for(String courseId: courseIds)
{
try
{
Course c = DaoFactory.getCourseDaoImpl().load(new Long(courseId));
courses.add(c);
}
catch(Throwable e)
{
logger.info("Course not found in course list with id:" + courseId);
}
}
return courses;
}
 
public String[] deserializeCoursesList(String json)
{
try {
 
JSONArray jsonArray = new JSONArray(courses);
JSONArray jsonArray = new JSONArray(json);
String[] coursesList = new String[jsonArray.length()];
for(int i=0;i <jsonArray.length();i++)
{
103,34 → 129,128
return questionarioCleared;
}
 
 
@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);
 
String[] coursesList = deserializeCoursesList((QuestionarioImpl) q);
String[] coursesList = deserializeCoursesList(q);
//Colocamos já aqui o estado para nao se poder mudar o Ano e o Semestre
 
serviceLogInfo("Starting running service ");
long total = 5000;
long start = System.currentTimeMillis();
//Thread.sleep(20000);
while(true)
serviceLogInfo("Starting running service ");
logger.info("Starting running service");
 
int count = 0;
int totalCourses = coursesList.length;
for(String courseStrId: coursesList)
{
Thread.sleep(5000);
long elapsed = System.currentTimeMillis() - start;
setProgress((int) (((float)elapsed)/((float)total)*100.0f));
commitPartially();
DaoFactory.getQuestionarioDaoImpl().reattach(q);
if(System.currentTimeMillis() - start > total)
break;
count++;
try{
Long courseLong = Long.parseLong(courseStrId);
/** logging **/
 
String msg = "Loading Course BACO ID: " + courseStrId;
serviceLogInfo(msg);
logger.info(msg);
/** logging **/
 
Course c = DaoFactory.getCourseDaoImpl().load(courseLong);
 
QuestionarioPedagogicoCursoAfeto cursoAfeto = DomainObjectFactory.createQuestionarioPedagogicoCursoAfeto();
cursoAfeto.setCourse(c);
cursoAfeto.setAno(q.getYear());
cursoAfeto.setCodigoCurso(c.getCode());
cursoAfeto.setNome(c.getName());
cursoAfeto.setQuestionario(q);
cursoAfeto.setSemestre(q.getSemestre());
cursoAfeto.setUnidadesAfetas(new HashSet<QuestionarioPedagogicoUnidadeCurricularAfeta>());
 
DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().save(cursoAfeto);
 
/** logging **/
msg = "(" + count + " of " + totalCourses + ")-> Course loaded: " + c.getName() + "(" + c.getCode() + ")";
serviceLogInfo(msg);
logger.info(msg);
/** logging **/
 
int countUnits = 0;
int totalUnits = c.getCourseUnits().size();
for(CourseUnit cu : c.getCourseUnits())
{
countUnits++;
/** logging **/
msg = "---->(" + countUnits + " of " + totalUnits +") CourseUnit loaded: " + cu.getName() + "(" + cu.getCode() + ")";
serviceLogInfo(msg);
logger.info(msg);
/** logging **/
 
 
QuestionarioPedagogicoUnidadeCurricularAfetaImpl unidadeAfeta = DomainObjectFactory.createQuestionarioPedagogicoUnidadeCurricularAfeta();
unidadeAfeta.setCourseUnit(cu);
unidadeAfeta.setObs("");
 
unidadeAfeta.setCodigoUnidade(cu.getCode());
cursoAfeto.getUnidadesAfetas().add(unidadeAfeta);//so metemos de um dos lados
 
unidadeAfeta.setMarked(false);
if(cu.getTeachers() == null || cu.getTeachers().size() == 0)
{
unidadeAfeta.setProfs(0);
unidadeAfeta.setMarked(true); //WARNING
unidadeAfeta.addObs("Não tem professores");
}
else
unidadeAfeta.setProfs(cu.getTeachers().size());
 
//todo falta as turmas verificacao de numero de profs
// testar se ja tem notas acrescentar
try{
unidadeAfeta.setTipologiasJson(((CourseUnitImpl)cu).getTipologiasClass().obtainMergeTipologiasSerialized());
}
catch(Throwable e)
{
unidadeAfeta.setMarked(true);
unidadeAfeta.setTipologiasJson(CourseUnitImpl.Tipologias.serializeMergedList(new ArrayList<CourseUnitImpl.Tipologia>()));
cursoAfeto.setMarcadas(cursoAfeto.getMarcadas()+1);
//todo colocar as observacoes auqi e na unidade marcada
}
 
 
cursoAfeto.setCourse(c);
cursoAfeto.setAno(q.getYear());
cursoAfeto.setCodigoCurso(c.getCode());
cursoAfeto.setNome(c.getName());
cursoAfeto.setQuestionario(q);
cursoAfeto.setSemestre(q.getSemestre());
cursoAfeto.setUnidadesAfetas(new HashSet<QuestionarioPedagogicoUnidadeCurricularAfeta>());
 
DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().save(cursoAfeto);
 
 
}
setProgress((int)((((float)count)/((float)totalCourses))*100.0f));
commitPartially();
}
catch(Throwable t)
{
logger.error(t,t);
serviceLogError(t.toString(),t);
logMessages.addMessage(new DefaultLogMessage("questionario.courses.selection", LogMessageTypeEnum.ERROR,t.toString()));
}
 
}
setProgress(100);
commitPartially();
 
serviceLogInfo("Set courses state as " + QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.name());
String msg = "Set courses state as " + QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.name();
serviceLogInfo(msg);
logger.info(msg);
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED);
commitPartially();
return new DefaultLogMessages();
 
return logMessages;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoUnidadeCurricularAfetaImpl.java
4,4 → 4,12
* Created by jorgemachado on 23/03/16.
*/
public class QuestionarioPedagogicoUnidadeCurricularAfetaImpl extends QuestionarioPedagogicoUnidadeCurricularAfeta {
 
public void addObs(String obs)
{
if(getObs() == null)
setObs("");
 
setObs(getObs() + " ; " + obs);
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/DomainObjectFactory.java
398,4 → 398,11
public static QuestionarioHistoryDriveImpl createQuestionarioHistoryDriveImpl() {
return new QuestionarioHistoryDriveImpl();
}
 
public static QuestionarioPedagogicoCursoAfetoImpl createQuestionarioPedagogicoCursoAfeto() {
return new QuestionarioPedagogicoCursoAfetoImpl();
}
public static QuestionarioPedagogicoUnidadeCurricularAfetaImpl createQuestionarioPedagogicoUnidadeCurricularAfeta() {
return new QuestionarioPedagogicoUnidadeCurricularAfetaImpl();
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
835,6 → 835,10
throw e;
}
}
public String obtainMergeTipologiasSerialized() throws IOException, TransformationException
{
return serializeMergedList(obtainMergeTipologias());
}
public ArrayList<Tipologia> obtainMergeTipologias()
{
ArrayList<Tipologia> merge = new ArrayList<Tipologia>();
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/QuestionarioPedagogicoCursoAfetoDaoImpl.java
New file
0,0 → 1,13
package pt.estgp.estgweb.domain.dao.impl;
 
/**
* Created by jorgemachado on 24/03/16.
*/
public class QuestionarioPedagogicoCursoAfetoDaoImpl extends QuestionarioPedagogicoCursoAfetoDao{
 
public static QuestionarioPedagogicoCursoAfetoDaoImpl getInstance() {
if (myInstance == null)
myInstance = new QuestionarioPedagogicoCursoAfetoDaoImpl();
return (QuestionarioPedagogicoCursoAfetoDaoImpl) myInstance;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/QuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl.java
New file
0,0 → 1,13
package pt.estgp.estgweb.domain.dao.impl;
 
/**
* Created by jorgemachado on 24/03/16.
*/
public class QuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl extends QuestionarioPedagogicoUnidadeCurricularAfetaDao
{
public static QuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl getInstance() {
if (myInstance == null)
myInstance = new QuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl();
return (QuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl) myInstance;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java
1,5 → 1,6
package pt.estgp.estgweb.domain.dao;
 
import pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto;
import pt.estgp.estgweb.domain.dao.impl.*;
 
/**
384,4 → 385,12
{
return QuestionarioHistoryDriveDaoImpl.getInstance();
}
 
public static QuestionarioPedagogicoCursoAfetoDaoImpl getQuestionarioPedagogicoCursoAfetoDaoImpl() {
return QuestionarioPedagogicoCursoAfetoDaoImpl.getInstance();
}
 
public static QuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl getQuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl() {
return QuestionarioPedagogicoUnidadeCurricularAfetaDaoImpl.getInstance();
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoCursoAfetoImpl.java
4,4 → 4,13
* Created by jorgemachado on 23/03/16.
*/
public class QuestionarioPedagogicoCursoAfetoImpl extends QuestionarioPedagogicoCursoAfeto {
 
public void addObs(String obs)
{
if(getObs() == null)
setObs("");
 
setObs(getObs() + " ; " + obs);
}
 
}