/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.broadcast.gui.wizard; import net.codjo.broadcast.common.message.BroadcastRequest; import net.codjo.workflow.common.message.JobRequest; import net.codjo.workflow.common.message.JobRequestTemplate; import net.codjo.workflow.gui.wizard.RequestTemplateFactory; import net.codjo.workflow.gui.wizard.WizardConstants; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; /** * */ public class BroadcastTemplateRequestFactory implements RequestTemplateFactory { public JobRequestTemplate createTemplate(final Map wizardState) { JobRequestTemplate matchType = JobRequestTemplate.matchType("broadcast"); JobRequestTemplate matchInitiator = JobRequestTemplate.matchInitiator(System.getProperty("user.name")); JobRequestTemplate matchRequest = JobRequestTemplate.matchCustom(new BroadcastMatchExpression(wizardState)); return JobRequestTemplate.and(matchType, JobRequestTemplate.and(matchInitiator, matchRequest)); } private class BroadcastMatchExpression implements JobRequestTemplate.MatchExpression { private String selectionFileName; private Date date; BroadcastMatchExpression(Map wizardState) { selectionFileName = (String)wizardState.get(WizardConstants.BROADCAST_FILE_NAME); date = removeHoursToDate((Date)wizardState.get(WizardConstants.BROADCAST_DATE)); } public boolean match(JobRequest jobRequest) { BroadcastRequest request = new BroadcastRequest(jobRequest); return selectionFileName.equals(request.getDestinationFile().getName()) && date.equals(request.getBroadcastDate()); } private Date removeHoursToDate(Date dateWithHour) { return java.sql.Date.valueOf(new SimpleDateFormat("yyyy-MM-dd").format(dateWithHour)); } } }