package pt.estgp.estgweb.services.questionarios.pedagogico;
import org.apache.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONException;
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.services.logresults.ILogMessages;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
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 UpdateCoursesAndUnitsJobService
extends ServiceJob
implements IService
{
public static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(UpdateCoursesAndUnitsJobService.
class);
public 1.5.0/docs/api/java/lang/String.html">String[] deserializeCoursesList
(QuestionarioImpl questionario
)
{
JobServiceTaskImpl job = questionario.
getCourseSelectionTaskId() > 0
?
(JobServiceTaskImpl
) DaoFactory.
getJobServiceTaskDaoImpl().
load(questionario.
getCourseSelectionTaskId()) :
null;
if(job ==
null)
return new 1.5.0/docs/api/java/lang/String.html">String[0
];
1.5.0/docs/api/java/lang/String.html">String courses = job.
getParameter(ServiceJob.
JOB_questionario_courseList_KEY).
getObject();
try {
JSONArray jsonArray =
new JSONArray
(courses
);
1.5.0/docs/api/java/lang/String.html">String[] coursesList =
new 1.5.0/docs/api/java/lang/String.html">String[jsonArray.
length()];
for(int i=
0;i
<jsonArray.
length();i++
)
{
coursesList
[i
] =
""+ jsonArray.
get(i
);
}
return coursesList
;
} catch (JSONException e
) {
logger.
error(e,e
);
}
return new 1.5.0/docs/api/java/lang/String.html">String[0
];
}
//todo falta validar as clearances
//todo falta meter a tarefa no Questionario
public QuestionarioImpl runJobSelectCourses
(long questionarioId,
1.5.0/docs/api/java/lang/String.html">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");
}
JSONArray jsonArray =
new JSONArray
();
for(1.5.0/docs/api/java/lang/String.html">String sele: coursesList
)
{
jsonArray.
put(new 1.5.0/docs/api/java/lang/Long.html">Long(sele
));
}
Set
<JobServiceTaskParameter
> paramsJob =
new HashSet
<JobServiceTaskParameter
>();
JobServiceTaskParameterImpl paramJobL = DomainObjectFactory.
createJobServiceTaskParameterImpl();
paramJobL.
setName(ServiceJob.
JOB_questionario_courseList_KEY);
paramJobL.
setDescription("lista de cursos a associar");
paramJobL.
setObject(jsonArray.
toString());
paramsJob.
add(paramJobL
);
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(UpdateCoursesAndUnitsJobService.
class, session.
getUser(), paramsJob,
"Service: Atribuição de Cursos e Unidades a um questionário Pedagógico");
questionarioCleared.
setCourseSelectionTaskId(job.
getId());
return questionarioCleared
;
}
@
1.5.0/docs/api/java/lang/Override.html">Override
protected ILogMessages runJobServiceTask
() throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {
1.5.0/docs/api/java/lang/System.html">System.
out.
println("RUNNING DEMO");
long total =
60000;
long start =
1.5.0/docs/api/java/lang/System.html">System.
currentTimeMillis();
//Thread.sleep(20000);
while(true)
{
1.5.0/docs/api/java/lang/Thread.html">Thread.
sleep(5000
);
long elapsed =
1.5.0/docs/api/java/lang/System.html">System.
currentTimeMillis() - start
;
setProgress
((int) (((float)elapsed
)/
((float)total
)*100.0f
));
commitPartially
();
if(1.5.0/docs/api/java/lang/System.html">System.
currentTimeMillis() - start
> total
)
break;
}
setProgress
(100
);
return new DefaultLogMessages
();
}
}