001package org.apache.turbine.services.schedule; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import java.util.List; 023 024import org.apache.torque.TorqueException; 025import org.apache.torque.criteria.Criteria; 026import org.apache.turbine.util.TurbineException; 027 028/** 029 * Service for a cron like scheduler. 030 * 031 * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a> 032 * @author <a href="mailto:quintonm@bellsouth.net">Quinton McCombs</a> 033 * @version $Id: TorqueSchedulerService.java 534527 2007-05-02 16:10:59Z tv $ 034 * 035 * @deprecated Use {@link QuartzSchedulerService} instead 036 */ 037@Deprecated 038public class TorqueSchedulerService extends AbstractSchedulerService 039{ 040 /** 041 * Load all jobs from configuration storage 042 * 043 * @return the list of pre-configured jobs 044 * @throws TurbineException if unable to load jobs 045 */ 046 @Override 047 protected List<? extends JobEntry> loadJobs() throws TurbineException 048 { 049 // Load all from cold storage. 050 try 051 { 052 List<JobEntryTorque> jobsTorque = JobEntryTorquePeer.doSelect(new Criteria()); 053 054 for (JobEntryTorque job : jobsTorque) 055 { 056 job.calcRunTime(); 057 } 058 059 return jobsTorque; 060 } 061 catch (TorqueException e) 062 { 063 throw new TurbineException("Error retrieving initial job list from persistent storage.", e); 064 } 065 } 066 067 /** 068 * @see org.apache.turbine.services.schedule.ScheduleService#newJob(int, int, int, int, int, java.lang.String) 069 */ 070 @Override 071 public JobEntry newJob(int sec, int min, int hour, int wd, int day_mo, String task) throws TurbineException 072 { 073 JobEntryTorque jet = new JobEntryTorque(); 074 jet.setSecond(sec); 075 jet.setMinute(min); 076 jet.setHour(hour); 077 jet.setWeekDay(wd); 078 jet.setDayOfMonth(day_mo); 079 jet.setTask(task); 080 081 return jet; 082 } 083 084 /** 085 * Get a specific Job from Storage. 086 * 087 * @param oid 088 * The int id for the job. 089 * @return A JobEntry. 090 * @throws TurbineException 091 * job could not be retrieved. 092 */ 093 @Override 094 public JobEntry getJob(int oid) throws TurbineException 095 { 096 try 097 { 098 JobEntryTorque je = JobEntryTorquePeer.retrieveByPK(oid); 099 return scheduleQueue.getJob(je); 100 } 101 catch (TorqueException e) 102 { 103 throw new TurbineException("Error retrieving job from persistent storage.", e); 104 } 105 } 106 107 /** 108 * Remove a job from the queue. 109 * 110 * @param je 111 * A JobEntry with the job to remove. 112 * @throws TurbineException 113 * job could not be removed 114 */ 115 @Override 116 public void removeJob(JobEntry je) throws TurbineException 117 { 118 try 119 { 120 // First remove from DB. 121 Criteria c = new Criteria().where(JobEntryTorquePeer.JOB_ID, Integer.valueOf(je.getJobId())); 122 JobEntryTorquePeer.doDelete(c); 123 124 // Remove from the queue. 125 scheduleQueue.remove(je); 126 127 // restart the scheduler 128 restart(); 129 } 130 catch (TorqueException e) 131 { 132 throw new TurbineException("Problem removing Scheduled Job: " + je.getTask(), e); 133 } 134 } 135 136 /** 137 * Add or update a job. 138 * 139 * @param je 140 * A JobEntry with the job to modify 141 * @throws TurbineException 142 * job could not be updated 143 */ 144 @Override 145 public void updateJob(JobEntry je) throws TurbineException 146 { 147 try 148 { 149 je.calcRunTime(); 150 151 // Update the queue. 152 if (je.isNew()) 153 { 154 scheduleQueue.add(je); 155 } 156 else 157 { 158 scheduleQueue.modify(je); 159 } 160 161 if (je instanceof JobEntryTorque) 162 { 163 ((JobEntryTorque)je).save(); 164 } 165 166 restart(); 167 } 168 catch (TorqueException e) 169 { 170 throw new TurbineException("Problem persisting Scheduled Job: " + je.getTask(), e); 171 } 172 catch (TurbineException e) 173 { 174 throw new TurbineException("Problem updating Scheduled Job: " + je.getTask(), e); 175 } 176 } 177}