package altk.comm.engine; public class JobReport { private String broadcastId; private String launchRecordId; private String contactId; private String recordId; // id into table, e.g. call_record, sms_record, etc. private String jobStatus; // Note: not enum private String errorText; private long startTime; private String activityRecordIdParamName; private String xmlRootNodeName; protected JobReport() { } protected final void initBase(Job job, String broadcastId, String launchRecordId, String activityRecordIdParamName, String xmlRootNodeName) { if (broadcastId == null || broadcastId.length() == 0) { throw new IllegalArgumentException("JobReport given null or empty broadcastId"); } if (launchRecordId == null || launchRecordId.length() == 0) { throw new IllegalArgumentException("JobReport given null or empty launchRecordId"); } this.broadcastId = broadcastId; this.launchRecordId = launchRecordId; this.activityRecordIdParamName = activityRecordIdParamName; this.xmlRootNodeName = xmlRootNodeName; startTime = job.startTime; contactId = job.recipient.contact_id; recordId = job.recipient.activity_record_id; jobStatus = job.jobStatus.toString(); errorText = job.errorText; } /** * Derived class may initialize its own attributes. * @param job */ public void init(Job job) { } public String toString() { StringBuffer xml = new StringBuffer(); appendXML(xml); return xml.toString(); } public final StringBuffer appendXML(StringBuffer xml) { xml.append("<" + xmlRootNodeName + " broadcast_id=\"" + broadcastId + "\" launch_record_id=\"" + launchRecordId + "\" " + activityRecordIdParamName + "=\"" + recordId + "\" contact_id=\"" + contactId + "\" recipient_status=\"" + jobStatus + "\" >\r\n"); xml.append("" + startTime/1000 + "\r\n"); xml = appendSpecificXML(xml); if (errorText != null && errorText.length() > 0) { xml.append(""); xml.append(errorText.replaceAll("&", "&").replaceAll("<", "<")); xml.append("\r\n"); } xml.append(""); return xml; } /** * Append data to xml which is specific to the derived class. For example, email * address for EmailJobReport. * @param xml * @return */ protected StringBuffer appendSpecificXML(StringBuffer xml) { return xml; } }