001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.sys.batch; 017 018 import java.util.ArrayList; 019 import java.util.HashMap; 020 import java.util.List; 021 import java.util.Map; 022 023 import org.kuali.kfs.sys.batch.service.SchedulerService; 024 import org.quartz.JobDetail; 025 import org.springframework.beans.factory.BeanNameAware; 026 027 public class JobDescriptor implements BeanNameAware { 028 private String name; 029 private String namespaceCode; 030 private String group; 031 private Map<String, String> dependencies; 032 private List<Step> steps; 033 private SchedulerService schedulerService; 034 private boolean durable = true; 035 036 public JobDescriptor() { 037 dependencies = new HashMap(); 038 steps = new ArrayList(); 039 } 040 041 public JobDescriptor(String name, String group, Step step, boolean durable) { 042 this(); 043 this.name = name; 044 this.group = group; 045 this.durable = durable; 046 steps.add(step); 047 } 048 049 /** 050 * @see org.springframework.beans.factory.BeanNameAware#setBeanName(java.lang.String) 051 */ 052 public void setBeanName(String name) { 053 this.name = name; 054 } 055 056 /** 057 * Constructs a non-volatile, durable, non-recoverable JobDetail w/ org.kuali.kfs.sys.batch.Job as the job class and the specified 058 * name and group from this instance. Also adds status=Pending to the JobDataMap, if this is a scheduled job. 059 * 060 * @return the org.quartz.JobDetail corresponding to this instance 061 */ 062 public JobDetail getJobDetail() { 063 return new JobDetail(name, group, Job.class, false, durable, false); 064 } 065 066 /** 067 * Sets the group attribute value. 068 * 069 * @param group The group to set. 070 */ 071 public void setGroup(String group) { 072 this.group = group; 073 } 074 075 /** 076 * Sets the dependencies attribute value. 077 * 078 * @param dependencies The dependencies to set. 079 */ 080 public void setDependencies(Map<String, String> dependencies) { 081 this.dependencies = dependencies; 082 } 083 084 /** 085 * Gets the dependencies attribute. 086 * 087 * @return Returns the dependencies. 088 */ 089 public Map<String, String> getDependencies() { 090 return dependencies; 091 } 092 093 /** 094 * Sets the steps attribute value. 095 * 096 * @param steps The steps to set. 097 */ 098 public void setSteps(List<Step> steps) { 099 this.steps = steps; 100 } 101 102 /** 103 * Gets the steps attribute. 104 * 105 * @return Returns the steps. 106 */ 107 public List<Step> getSteps() { 108 return steps; 109 } 110 111 /** 112 * Sets the schedulerService attribute value. 113 * 114 * @param schedulerService The schedulerService to set. 115 */ 116 public void setSchedulerService(SchedulerService schedulerService) { 117 this.schedulerService = schedulerService; 118 } 119 120 public String getGroup() { 121 return group; 122 } 123 124 public String getName() { 125 return name; 126 } 127 128 public SchedulerService getSchedulerService() { 129 return schedulerService; 130 } 131 132 public boolean isDurable() { 133 return durable; 134 } 135 136 public void setDurable(boolean durable) { 137 this.durable = durable; 138 } 139 140 /** 141 * Gets the namespaceCode attribute. 142 * @return Returns the namespaceCode. 143 */ 144 public String getNamespaceCode() { 145 return namespaceCode; 146 } 147 148 /** 149 * Sets the namespaceCode attribute value. 150 * @param namespaceCode The namespaceCode to set. 151 */ 152 public void setNamespaceCode(String namespaceCode) { 153 this.namespaceCode = namespaceCode; 154 } 155 156 }