package com.QA.messages;
import com.QA.QAOperator;
import org.jblooming.messaging.Message;
import org.jblooming.messaging.MessagingSystem;
import org.jblooming.oql.OqlQuery;
import org.jblooming.persistence.PersistenceHome;
import org.jblooming.persistence.hibernate.PersistenceContext;
import org.jblooming.scheduler.ExecutableSupport;
import org.jblooming.scheduler.JobLogData;
import org.jblooming.tracer.Tracer;
import org.jblooming.utilities.DateUtilities;
import java.util.Date;
import java.util.List;
public class StickyMessageDispatcher extends ExecutableSupport {
public JobLogData run(JobLogData jobLogData) throws Exception {
PersistenceContext pc = null;
try {
pc = PersistenceContext.getDefaultPersistenceContext();
String hql = "from " + Message.class.getName() + " as mess where mess.media = :media";
OqlQuery query = new OqlQuery(hql, pc);
query.getQuery().setString("media", MessagingSystem.Media.STICKY.toString());
List<Message> messages = query.list();
for (Message message : messages) {
if (message.getToOperator() != null) {
String body = message.getMessageBody();
if (message.getLink() != null)
body = body + "<hr>link: " + message.getLink();
StickyNote sn = new StickyNote();
sn.setIdAsNew();
if (message.getFromOperator() != null) {
QAOperator frop = (QAOperator) PersistenceHome.findByPrimaryKey(QAOperator.class, message.getFromOperator().getId());
sn.setAuthor(frop);
}
QAOperator top = (QAOperator) PersistenceHome.findByPrimaryKey(QAOperator.class, message.getToOperator().getId());
sn.setReceiver(top);
sn.setType(message.getSubject());
sn.setMessage(body);
sn.store();
}
message.remove();
}
pc.commitAndClose();
jobLogData.notes = jobLogData.notes + "StickyMessageDispatcher executed on " + DateUtilities.dateAndHourToString(new Date());
} catch (Throwable e) {
Tracer.platformLogger.error("StickyMessageDispatcher error", e);
if (pc != null) {
pc.rollbackAndClose();
}
jobLogData.successfull = false;
}
return jobLogData;
}
}