abstracttaskdaojdbc.java
来自「Java的框架」· Java 代码 · 共 211 行
JAVA
211 行
package mcaps.apps.prrm.task.dao.jdbc;
import java.util.Date;
import java.util.List;
import mcaps.apps.prrm.task.dao.TaskDAO;
import mcaps.apps.prrm.task.dao.jdbc.query.TaskByIdQuery;
import mcaps.apps.prrm.task.dao.jdbc.query.TaskInsert;
import mcaps.apps.prrm.task.dao.jdbc.query.TaskQuery;
import mcaps.apps.prrm.task.dao.jdbc.query.TaskUpdate;
import mcaps.apps.prrm.task.dao.util.TaskField;
import mcaps.apps.prrm.task.dao.util.TaskQueryUtil;
import mcaps.apps.prrm.task.model.Status;
import mcaps.apps.prrm.task.model.Task;
import mcap.core.base.dao.jdbc.SQLDelete;
import mcap.core.base.dao.util.SortOrder;
import mcap.core.base.model.BaseTimeObject;
import mcaps.apps.prrm.util.TableNameConstants;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer;
/**
* This class provides the abstract dao implementation for task using
* JDBC. The dao operation like query, insert, update, delete, archive and purge
* are supported.
*
* @author jov
* @date Oct 20, 2005
* @version 1.0.1.0
*/
public abstract class AbstractTaskDAOJdbc extends JdbcDaoSupport implements TaskDAO {
//Static Query
private TaskQuery taskQuery;
private TaskByIdQuery taskByIdQuery;
private TaskInsert taskInsert;
private TaskUpdate taskUpdate;
private SQLDelete taskDelete;
//Data Incrementer
private DataFieldMaxValueIncrementer taskIncrementer;
/* (non-Javadoc)
* @see org.springframework.dao.support.DaoSupport#initDao()
*/
public void initDao() {
this.taskQuery = new TaskQuery(
getDataSource(),
new int[]{TaskField.CREATIONTIME,TaskField.CATEGORY,TaskField.PRIORITY},
new SortOrder[]{SortOrder.ASCENDING,SortOrder.ASCENDING,SortOrder.DESCENDING}
);
this.taskByIdQuery = new TaskByIdQuery(getDataSource(),TaskField.ID,SortOrder.ASCENDING);
this.taskInsert = new TaskInsert(getDataSource());
this.taskInsert.setIncrementer(this.taskIncrementer);
this.taskUpdate = new TaskUpdate(getDataSource());
initTaskDelete();
}
//========================================================================================
/**
* Initialise the static query object for task delete operation.
*/
private void initTaskDelete(){
String table = TableNameConstants.TASK_TABLENAME;
String whereClause = null;
StringBuffer sb = new StringBuffer();
int paramTypes[] = null;
sb = new StringBuffer();
sb.append(TaskField.FIELDS[TaskField.ID]).append(" ")
.append("= ?");
whereClause = sb.toString();
paramTypes = new int[]{
TaskField.FIELDTYPES[TaskField.ID]};
taskDelete = new SQLDelete(getDataSource(),table,
whereClause,paramTypes);
}
//=====================================================================================================
// DATA INCREMENTER
//=====================================================================================================
/**
* Sets the taskIncrementer.
* @param taskIncrementer The task incrementer to set.
*/
public void setTaskIncrementer(DataFieldMaxValueIncrementer taskIncrementer){
this.taskIncrementer = taskIncrementer;
}
//=====================================================================================================
// OPERATION METHODS, IMPLEMENTING THE ROADDEFECTDAO INTERFACE
//=====================================================================================================
/* (non-Javadoc)
* @see mcaps.apps.prrm.task.dao.TaskDAO#getTask(java.lang.Integer)
*/
public Task getTask(Integer taskID) throws DataAccessException {
Object[] params = new Object[]{taskID};
List taskList = taskByIdQuery.execute(params);
if(taskList.size() > 0) {
Task task = (Task)taskList.get(0);
return task;
}
return null;
}
//========================================================================================
/* (non-Javadoc)
* @see mcaps.apps.prrm.task.dao.TaskDAO#getAllTasks()
*/
public List getAllTasks() throws DataAccessException {
return taskQuery.execute();
}
//========================================================================================
/* (non-Javadoc)
* @see mcaps.apps.prrm.task.dao.TaskDAO#getTasks(mcaps.apps.prrm.task.model.Task)
*/
public List getTasks(Task task) throws DataAccessException {
Object[] obj = TaskQueryUtil.getWhereClauseAndParameterTypes(task);
Object[] params = TaskQueryUtil.getParameters(task);
TaskQuery taskQuery =
new TaskQuery(getDataSource(),(String)obj[0],(int[])obj[1]);
return taskQuery.execute(params);
}
//========================================================================================
/* (non-Javadoc)
* @see mcaps.apps.prrm.task.dao.TaskDAO#saveTask(mcaps.apps.prrm.task.model.Task)
*/
public void saveTask(Task task) throws DataAccessException {
System.out.println("Save Task [AssignedUSerId] : " + task.getAssignedUserId());
if (task.isNew()){
taskInsert.insert(task);
}else{
taskUpdate.update(task);
}
}
//========================================================================================
/* (non-Javadoc)
* @see mcaps.apps.prrm.task.dao.TaskDAO#removeTask(java.lang.Integer)
*/
public void removeTask(Task task) throws DataAccessException {
// TODO Auto-generated method stub
taskDelete.delete(new Object[]{task.getId()});
}
//========================================================================================
/**
* @param taskID
* @param status
* @throws DataAccessException
*/
public void changeStatus(Integer taskID, String status)
throws DataAccessException {
Object[] params = new Object[]{taskID};
Task task = (Task)taskByIdQuery.execute(params).get(0);
if (task != null){
task.setStatus(status);
Date date = new Date();
task.setLastModifiedTime(date);
// if (status.equals(Status.CLOSED)){
// task.setClosedDate(date);
// }
saveTask(task);
}
}
//========================================================================================
/**
* Retrieve and set the identity for the given entity,
* assuming that the last executed insert affected that entity
* and generated an auto-increment value for it.
* @param entity the entity object to retrieved the id for
* @see #getIdentityQuery
*/
protected void retrieveIdentity(BaseTimeObject entity) {
entity.setId(new Integer(getJdbcTemplate().queryForInt(getIdentityQuery())));
}
//========================================================================================
/**
* Return the identity query for the particular database:
* a query that can be used to retrieve the id of a row
* that has just been inserted.
* @return the identity query
*/
protected abstract String getIdentityQuery();
//========================================================================================
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?