package com.QA.businessLogic;
import com.QA.QAOperator;
import org.jblooming.agenda.CompanyCalendar;
import org.jblooming.messaging.Listener;
import org.jblooming.oql.OqlQuery;
import org.jblooming.persistence.hibernate.PersistenceContext;
import org.jblooming.scheduler.ExecutableSupport;
import org.jblooming.scheduler.JobLogData;
import org.jblooming.tracer.Tracer;
import java.util.Date;
import java.util.List;
public class KillDeadUsers extends ExecutableSupport {
public JobLogData run(JobLogData jobLogData) throws Exception {
PersistenceContext pc = null;
try {
pc = new PersistenceContext();
OqlQuery oqlQuery = new OqlQuery("SELECT o FROM " + QAOperator.class.getName() + " as o where o.lastLoggedOn - o.creationDate < 60 and o.lastLoggedOn<:date", pc);
oqlQuery.getQuery().setMaxResults(50); // ---------------------------------- ONLI 50 AT THE VOLT
StringBuffer report = new StringBuffer();
oqlQuery.getQuery().setDate("date", new Date(System.currentTimeMillis() - CompanyCalendar.MILLIS_IN_MONTH));
List<QAOperator> operators = oqlQuery.list();
int i = 1;
for (QAOperator op : operators) {
try {
report.append(i++ + ": " + " <b>" + op.getIntId() + "</b> " + op.getLoginName() + "\n");
report.append(" used for " + ((op.getLastLoggedOn().getTime() - op.getCreationDate().getTime()) / 1000) + " seconds\n");
//reset user invited
oqlQuery = new OqlQuery("update " + QAOperator.class.getName() + " as op set op.owner=null where (op.owner=:o)", pc);
oqlQuery.getQuery().setEntity("o", op);
int q = oqlQuery.getQuery().executeUpdate();
report.append("inv removed=" + q + "\n");
pc.checkPoint();
//ammazz the listeners
oqlQuery = new OqlQuery("delete from " + Listener.class.getName() + " as l where (l.owner=:o)", pc);
oqlQuery.getQuery().setEntity("o", op);
q = oqlQuery.getQuery().executeUpdate();
report.append("ass removed=" + q + "\n");
pc.checkPoint();
//ammazz the user
op.remove(pc);
pc.checkPoint();
report.append("ok!\n");
} catch (Throwable t) {
report.append("ERROR DELETING " + op.getLoginName() + "\n");
Tracer.platformLogger.error("ERROR DELETING " + op.getLoginName(),t );
}
report.append("\n-----------------------------------------------------------------------------------\n");
Tracer.jobLogger.debug(report.toString());
}
pc.commitAndClose();
} catch (Throwable e) {
Tracer.platformLogger.error("KillDeadUsers import error", e);
if (pc != null) {
pc.rollbackAndClose();
}
jobLogData.successfull = false;
}
return jobLogData;
}
}