加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]SPRING实现自动触发方法

(2012-06-02 12:59:15)
标签:

转载

分类: 我的IT
Spring自动触发事件
原文地址:SPRING实现自动触发方法作者:光子

 <bean id="autoBuildJobTask" class="com.wcis.util.AutoBuildJobTask">
 </bean>
 <!-- 2008-06-23 POLICE -->
 <bean id="tadyFrequency" class="com.wcis.util.TadyFrequency">
 </bean>
 <bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
     <property name="delay" value="10000"/>  
     <property name="period" value="1800000"/>  
     <property name="timerTask" ref="autoBuildJobTask" /> 
 </bean>  
 <bean id="scheduledTask2" class="org.springframework.scheduling.timer.ScheduledTimerTask">
     <property name="delay" value="10000"/>  
     <property name="period" value="18000"/>  
     <property name="timerTask" ref="tadyFrequency" /> 
 </bean> 
 <bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">  
    <property name="scheduledTimerTasks">  
        <list>  
            <ref bean="scheduledTask" />  
            <ref bean="scheduledTask2" />
        < st>  
    </property>  
 </bean>
package com.wcis.util;
import java.util.List;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.TimerTask;
import com.wcis.mytool.CmsConstant;
import com.wcis.persistent.Frequency;
import org.apache.struts.util.MessageResources;


public class TadyFrequency extends TimerTask {
 
 @Override
 public void run() {
  Calendar cNow = Calendar.getInstance();
  int iHourOfDay = cNow.get(Calendar.HOUR_OF_DAY);
  String startTime = MessageResources.getMessageResources(
    "ApplicationResources").getMessage("AutoBuildJobTaskStartime2");
  GetDate getdate = new GetDate();
  if (iHourOfDay >= 5 && iHourOfDay <= 6) {
   int time = 0;
   try {
    time = Integer.parseInt(getdate.getTaday3());
    autoBuidJobTask();
    getFrrequencyId();
   } catch (Exception e) {
    e.printStackTrace();
    System.out.println("------------------ 今天是" + time + "号------ 自动排班 运行中 -----");
   }
  }
  
  //
  if (CmsConstant.FREQUENCY_ID == 0 && iHourOfDay < 5) { 
   try {
    resetFrrequencyId();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  //
  
  
  //
  if (CmsConstant.FREQUENCY_ID == 0 && iHourOfDay > 6) {
   try {
    autoBuidJobTask();
    getFrrequencyId();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  //
  
  try {
   getSamllFrequency();
  } catch (Exception e) {
   e.printStackTrace();
   System.out.println("-------- 小班次排班排班 运行中 -----");
  }
 }
 
 
 public void resetFrrequencyId() throws Exception {
  GetDate getdate = new GetDate();
  int time = Integer.parseInt(getdate.getTaday3());
  time = time - 1;
  String sql = "SELECT * FROM Frequency WHERE frequencyType=0"
    + " AND startDate=" + time;
  Collection coll = new Collection();
  ResultSet res = null;
  res = coll.getCon(sql);
  if (res.next()) {
   CmsConstant.FREQUENCY_ID = res.getInt(1);
   CmsConstant.BIGFREQUENCY_NAME = res.getString("FrequencyName");
  } else {
   autoBuidJobTask();
  }
  coll.closeCon();
 }


 
 public void getFrrequencyId() throws Exception {
  GetDate getdate = new GetDate();
  int time = Integer.parseInt(getdate.getTaday3());
  String sql = "SELECT * FROM Frequency WHERE frequencyType=0"
    + " AND startDate=" + time;
  Collection coll = new Collection();
  ResultSet res = null;
  res = coll.getCon(sql);
  if (res.next()) {
   CmsConstant.FREQUENCY_ID = res.getInt(1);
   CmsConstant.BIGFREQUENCY_NAME = res.getString("FrequencyName");
  } else {
   autoBuidJobTask();
  }
  coll.closeCon();
 }
 
 
 public int getSamllFrequency() throws Exception {
  GetDate getdate = new GetDate();
  String time = getdate.getTaday5();
  String sql = "SELECT * FROM Frequency WHERE frequencyType=1 AND "
    + "fatherId=" + CmsConstant.FREQUENCY_ID + " AND "
    + "btimesign<"+time+" AND etimesign>"+time;
  System.out.println("得到的SQL语句是" + sql);
  Collection coll = new Collection();
  ResultSet res = null;
  res = coll.getCon(sql);
  if (res.next()) {
   CmsConstant.FREQUENCY_ZID = res.getInt(1);
   CmsConstant.FREQUENCY_NAME = res.getString(5);
  }
  System.out.println("班次的名字是: " + CmsConstant.FREQUENCY_NAME);
  return 0;
 }
 
 
 public void autoBuidJobTask() throws Exception {
  GetDate getdate = new GetDate();
  int time = Integer.parseInt(getdate.getTaday3());
  String sql = "SELECT * FROM Frequency WHERE frequencyType=0"
    + " AND startDate=" + time;
  int id = 0;
  Collection coll = new Collection();

  ResultSet res = null;
  res = coll.getCon(sql);
  if (res.next()) {
   id = res.getInt(1);
  } else {
   Initialization();
  }
  coll.closeCon();

  List<Frequency> after = new ArrayList<Frequency>();
  List<Frequency> before = new ArrayList<Frequency>();
  if (id > 0) {
   String sql1 = "SELECT * FROM Frequency WHERE frequencyType=0"
     + " AND id<" + id;
   res = coll.getCon(sql1);
   while (res.next()) {
    Frequency frequency = new Frequency();
    frequency.setId(res.getInt(1));
    frequency.setStartDate(res.getInt("startDate"));
    before.add(frequency);
   }
   coll.closeCon();
  }

  if (id > 0) {
   String sql2 = "SELECT * FROM Frequency WHERE frequencyType=0"
     + " AND id>" + id;
   res = coll.getCon(sql2);
   while (res.next()) {
    Frequency frequency = new Frequency();
    frequency.setId(res.getInt(1));
    frequency.setStartDate(res.getInt("startDate"));
    after.add(frequency);
   }
   coll.closeCon();
  }

  int hou = after.size();
  int qian = before.size();
  Frequency frequency = new Frequency();
  if (qian == 0 && hou > 0) {
   for (int i = 0; i < after.size(); i++) {
    frequency = after.get(i);
    time += 1;
    String up = "UPDATE Frequency SET startDate=" + time
      + " WHERE id=" + frequency.getId();
    coll.upobj(up);
   }
   coll.closeCon();
  } else if (qian > 0 && hou > 0) {
   int time2 = time;
   for (int i = 0; i < after.size(); i++) {
    frequency = after.get(i);
    time2 += 1;
    String up = "UPDATE Frequency SET startDate=" + time2
      + " WHERE id=" + frequency.getId();
    System.out.println(up);
    coll.upobj(up);
   }
   for (int i2 = 0; i2 < before.size(); i2++) {
    frequency = before.get(i2);
    time2 += 1;
    String up = "UPDATE Frequency SET startDate=" + time2
      + " WHERE id=" + frequency.getId();
    System.out.println(up);
    coll.upobj(up);
   }
   coll.closeCon();
  } else if (qian > 0 && hou == 0) {
   for (int i = 0; i < after.size(); i++) {
    frequency = after.get(i);
    time += 1;
    String up = "UPDATE Frequency SET startDate=" + time
      + " WHERE id=" + frequency.getId();
    coll.upobj(up);
   }
   coll.closeCon();
  }
 }
 
 
 public void Initialization() throws Exception {
  List<Frequency> flist = new ArrayList<Frequency>();
  Collection coll = new Collection();
  String sql = "SELECT * FROM Frequency WHERE frequencyType=0";
  ResultSet res = null;
  res = coll.getCon(sql);
  while (res.next()) {
   Frequency frequency = new Frequency();
   frequency.setId(res.getInt(1));
   frequency.setStartDate(res.getInt("startDate"));
   flist.add(frequency);
  }
  coll.closeCon();
  Frequency frequency = new Frequency();
  GetDate getdate = new GetDate();
  int time = Integer.parseInt(getdate.getTaday3());
  for (int i = 0; i < flist.size(); i++) {
   frequency = flist.get(i);
   time += (i == 0) ? 0 : 1;
   String up = "UPDATE Frequency SET startDate=" + time + " WHERE id="
     + frequency.getId();
   coll.upobj(up);
  }
  coll.closeCon();
 }
}

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有