/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.core.cachepool.extend.assignment;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import org.apache.log4j.Logger;
import com.jinhe.tss.core.cachepool.CacheManager;
import com.jinhe.tss.core.cachepool.Cacheable;
import com.jinhe.tss.core.cachepool.IPool;
import com.jinhe.tss.core.cachepool.strategy.CacheConstants;
/**
* <p> RecordsOutputTask.java </p>
*
* 输出记录到数据库的任务抽象超类。
* 类似日志输出、访问量输出可以通过继承该超类实现。
*
* @author Jon.King 2007-2-15
*/
public abstract class RecordsOutputTask implements IAssignment {
protected Logger log = Logger.getLogger(this.getClass());
private static int count = 0;
private String name = "";
public RecordsOutputTask(){
count ++;
String className = this.getClass().getName();
name = className.substring(className.lastIndexOf(".") + 1) + "_" + count;
}
public String toString(){
return name;
}
protected List<Object> records;
public void fill(List<Object> records) {
this.records = records;
}
public void recycle() throws Exception {
this.records = null;
}
public void excute() {
if(records == null) return;
IPool connectionPool = CacheManager.getInstance().getCachePool(CacheConstants.CONNECTION_POOL);
Cacheable connItem = connectionPool.checkOut(0);
Connection conn = (Connection) connItem.getValue();
try {
createRecords(conn);
} catch (SQLException e) {
log.error("写入记录到数据库时候出错", e);
}finally{
connectionPool.checkIn(connItem);
}
}
protected abstract void createRecords(Connection conn) throws SQLException;
}