package org.akaza.openclinica.service.extract;
import org.akaza.openclinica.bean.extract.ExtractPropertyBean;
import org.akaza.openclinica.bean.login.UserAccountBean;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import java.math.BigInteger;
public class XsltTriggerService {
public XsltTriggerService() {
}
public static final String DATASET_ID = "dsId";
public static final String EMAIL = "contactEmail";
public static final String USER_ID = "user_id";
public static final String XSL_FILE_PATH = "xslFilePath";
public static final String XML_FILE_PATH = "xmlFilePath";
public static final String POST_FILE_PATH = "postFilePath";
public static final String POST_FILE_NAME = "postFileName";
public static final String EXTRACT_PROPERTY = "extractProperty";
public static final String LOCALE = "locale";
public static final String STUDY_ID = "studyId";
public static final String ZIPPED="zipped";
public static final String DELETE_OLD="deleteOld";
public static final String SUCCESS_MESSAGE="SUCCESS_MESSAGE";
public static final String FAILURE_MESSAGE="FAILURE_MESSAGE";
public static final String XSLT_PATH="XSLT_PATH";
public static final String EP_BEAN="epBean";
public static String TRIGGER_GROUP_NAME = "XsltTriggersExportJobs";
public static final String PERIOD = "periodToRun";
public static final String EXPORT_FORMAT = "exportFormat";
public static final String EXPORT_FORMAT_ID = "exportFormatId";
public static final String JOB_NAME = "jobName";
//POST PROCESSING VARIABLES
public static final String POST_PROC_DELETE_OLD="postProcDeleteOld";
public static final String POST_PROC_ZIP="postProcZip";
public static final String POST_PROC_LOCATION="postProcLocation";
public static final String POST_PROC_EXPORT_NAME="postProcExportName";
public static final String COUNT="count";
public SimpleTrigger generateXsltTrigger(Scheduler scheduler, String xslFile, String xmlFile, String endFilePath,
String endFile, int datasetId, ExtractPropertyBean epBean, UserAccountBean userAccountBean, String locale,int cnt, String xsltPath, String triggerGroupName) {
//Date startDateTime = new Date(System.currentTimeMillis());
String jobName = datasetId+ "_"+epBean.getExportFileName()[0];
if(triggerGroupName!=null)
TRIGGER_GROUP_NAME = triggerGroupName;
//WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
ApplicationContext context = null;
try {
context = (ApplicationContext) scheduler.getContext().get("applicationContext");
} catch (SchedulerException e) {
e.printStackTrace();
}
SimpleTriggerFactoryBean triggerFactoryBean = context.getBean(
SimpleTriggerFactoryBean.class, xslFile, xmlFile, endFilePath, endFile, datasetId, epBean, userAccountBean, locale, cnt, xsltPath);
SimpleTrigger trigger = triggerFactoryBean.getObject();
return trigger;
}
public static long getIntervalTime(String period) {
BigInteger interval = new BigInteger("0");
if ("monthly".equalsIgnoreCase(period)) {
interval = new BigInteger("2419200000"); // how many
// milliseconds in
// a month? should
// be 24192000000
} else if ("weekly".equalsIgnoreCase(period)) {
interval = new BigInteger("604800000"); // how many
// milliseconds in
// a week? should
// be 6048000000
} else { // daily
interval = new BigInteger("86400000");// how many
// milliseconds in a
// day?
}
return interval.longValue();
}
public String getTriggerGroupNameForExportJobs()
{
return "XsltTriggersExportJobs";
}
}