package org.activiti.crystalball.anttasks; /* * #%L * anttasks * %% * Copyright (C) 2012 - 2013 crystalball * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import org.activiti.crystalball.simulator.SimulationRun; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.springframework.context.support.FileSystemXmlApplicationContext; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * run simulation ant task * */ public class RunSimulationTask extends Task { /** app context which will be loaded */ protected String appContext; /** simulation run bean */ protected String simRunBean; /** simulation generation start date string*/ protected String startDate; /** simulation generation end date string*/ protected String endDate = null; /** date time format for SimpleDateFormatter */ protected String dateFormat = "MMMM dd yyyy"; public void execute() { log("Starting simulation run [" + simRunBean + "] from application context [" + appContext + "]."); // seting app context if (appContext==null) { throw new BuildException("No application context set."); } FileSystemXmlApplicationContext applicationContext = new FileSystemXmlApplicationContext( appContext ); try { // getting simulation run SimulationRun simRun = null; if ( simRunBean != null) simRun = (SimulationRun) applicationContext.getBean( simRunBean ); if ( simRun == null ) { log("Using default simulation run bean", Project.MSG_WARN); simRun = applicationContext.getBean( SimulationRun.class); } if ( simRun == null ) { throw new BuildException("unable to get sim run bean"); } // // execute simulation run // simRun.execute(getStartDate(), getEndDate()); } catch (ParseException e) { log("Simulation task exception - parsing dates", Project.MSG_ERR); throw new BuildException(e); } catch (Exception e) { log("Simulation task exception - simulation run error", Project.MSG_ERR); throw new BuildException(e); } finally { applicationContext.close(); } log("Simulation run [" + simRunBean + "] from application context [" + appContext + "] done."); } public void setAppContext(String appContext) { this.appContext = appContext; } public void setSimRunBean(String simRunBean) { this.simRunBean = simRunBean; } public String getDateFormat() { return dateFormat; } public void setDateFormat(String dateFormat) { this.dateFormat = dateFormat; } protected Date getStartDate() throws ParseException { if (startDate != null) return new SimpleDateFormat(dateFormat).parse(startDate); return null; } protected Date getEndDate() throws ParseException { if (endDate != null) return new SimpleDateFormat(dateFormat).parse(endDate); return null; } public void setStartDate(String startDate) { this.startDate = startDate; } public void setEndDate(String endDate) { this.endDate = endDate; } }