abstractroaddefectdaojdbc.java
来自「Java的框架」· Java 代码 · 共 577 行 · 第 1/2 页
JAVA
577 行
package mcaps.apps.prrm.roaddefect.dao.jdbc;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.sql.Timestamp;
import javax.sql.DataSource;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer;
import mcaps.apps.prrm.roaddefect.dao.RoadDefectDAO;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.ContactByIdQuery;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.ContactExport;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.ContactInsert;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.ContactUpdate;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.RoadDefectByIdQuery;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.RoadDefectExport;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.RoadDefectInsert;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.RoadDefectQuery;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.RoadDefectUpdate;
import mcaps.apps.prrm.roaddefect.dao.jdbc.query.RoadQuery;
import mcaps.apps.prrm.roaddefect.dao.util.ContactField;
import mcaps.apps.prrm.roaddefect.dao.util.RoadDefectField;
import mcaps.apps.prrm.roaddefect.dao.util.RoadDefectQueryUtil;
import mcaps.apps.prrm.roaddefect.dao.util.RoadField;
import mcaps.apps.prrm.roaddefect.model.Contact;
import mcaps.apps.prrm.roaddefect.model.RoadDefect;
import mcaps.apps.prrm.roaddefect.model.RoadDefectStatus;
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;
/**
* This class provides the abstract dao implementation for road defect using
* JDBC. The dao operation like query, insert, update, delete, archive and purge
* are supported.
*
* @author jov
* @date Sept 27, 2005
* @version 1.0.1.0
*/
public abstract class AbstractRoadDefectDAOJdbc extends JdbcDaoSupport implements RoadDefectDAO {
private DataSource roadMapDataSource;
//Static Query
private RoadQuery roadQuery;
private RoadDefectQuery roadDefectQuery;
private RoadDefectByIdQuery roadDefectByIdQuery;
private RoadDefectInsert roadDefectInsert;
private RoadDefectUpdate roadDefectUpdate;
private SQLDelete roadDefectPurgeStartEnd;
private SQLDelete roadDefectPurgeStart;
private SQLDelete roadDefectPurgeEnd;
private SQLDelete roadDefectDelete;
private ContactByIdQuery contactByIdQuery;
private ContactInsert contactInsert;
private ContactUpdate contactUpdate;
//Dynamic Query
private RoadDefectExport roadDefectExport;
private ContactExport contactExport;
//Data Incrementer
private DataFieldMaxValueIncrementer roadDefectIncrementer;
private DataFieldMaxValueIncrementer contactIncrementer;
//Setting up the static query object
/* (non-Javadoc)
* @see org.springframework.dao.support.DaoSupport#initDao()
*/
public void initDao() {
this.roadQuery = new RoadQuery(roadMapDataSource,
RoadField.FIELDS[RoadField.GID] + " = ?",
new int[] {RoadField.FIELDTYPES[RoadField.GID]},
new int[]{RoadField.ROADNAME},
new SortOrder[]{SortOrder.ASCENDING}
);
this.contactByIdQuery = new ContactByIdQuery(getDataSource());
this.roadDefectQuery = new RoadDefectQuery(
getDataSource(),
new int[]{RoadDefectField.CREATIONTIME,RoadDefectField.SEVERITY},
new SortOrder[]{SortOrder.ASCENDING,SortOrder.ASCENDING}
);
this.roadDefectQuery.setContactByIdQuery(contactByIdQuery);
this.roadDefectQuery.setRoadQuery(roadQuery);
this.roadDefectByIdQuery = new RoadDefectByIdQuery(getDataSource(),RoadDefectField.ID,SortOrder.ASCENDING);
this.roadDefectByIdQuery.setContactByIdQuery(contactByIdQuery);
this.roadDefectByIdQuery.setRoadQuery(roadQuery);
this.roadDefectInsert = new RoadDefectInsert(getDataSource());
this.roadDefectInsert.setIncrementer(this.roadDefectIncrementer);
this.contactInsert = new ContactInsert(getDataSource());
this.contactInsert.setIncrementer(this.contactIncrementer);
this.roadDefectUpdate = new RoadDefectUpdate(getDataSource());
this.contactUpdate = new ContactUpdate(getDataSource());
initRoadDefectDelete();
initRoadDefectPurge();
}
//========================================================================================
/**
* Initialise the static query object for road defect delete operation.
*/
private void initRoadDefectDelete(){
String roadDefectTable = TableNameConstants.ROADDEFECT_TABLENAME;
String contactTable = TableNameConstants.CONTACT_TABLENAME;
String whereClause = null;
StringBuffer sb = new StringBuffer();
int paramTypes[] = null;
//Create the last conditional statement of the whereClause
//so that it can be appended in the if statement.
sb.append("AND").append(" ")
.append(roadDefectTable).append(".")
.append(RoadDefectField.FIELDS[RoadDefectField.CONTACTID]).append(" ")
.append("=").append(" ")
.append(contactTable).append(".")
.append(ContactField.FIELDS[ContactField.ID]);
String tempStr = sb.toString();
//Create full qualified LastModifiedTime field name
//in terms of <table>.<field> due to existence of the
//same field in both select tables.
sb = new StringBuffer();
sb.append(roadDefectTable).append(".")
.append(RoadDefectField.FIELDS[RoadDefectField.ID]);
String roadDefectId = sb.toString();
sb = new StringBuffer();
sb.append(roadDefectId).append(" ")
.append("= ?").append(" ")
.append(tempStr);
whereClause = sb.toString();
paramTypes = new int[]{
RoadDefectField.FIELDTYPES[RoadDefectField.ID]};
roadDefectDelete = new SQLDelete(getDataSource(),
new String[]{roadDefectTable, contactTable},
new String[]{roadDefectTable, contactTable},
whereClause,paramTypes);
}
//========================================================================================
/**
* Initialise the static query object for road defect purge operation.
*/
private void initRoadDefectPurge(){
String roadDefectTable = TableNameConstants.ROADDEFECT_TABLENAME;
String contactTable = TableNameConstants.CONTACT_TABLENAME;
StringBuffer sb = new StringBuffer();
int paramTypes[] = null;
//Create the last conditional statement of the whereClause
//so that it can be appended in the if statement.
sb.append("AND").append(" ")
.append(roadDefectTable).append(".")
.append(RoadDefectField.FIELDS[RoadDefectField.CONTACTID]).append(" ")
.append("=").append(" ")
.append(contactTable).append(".")
.append(ContactField.FIELDS[ContactField.ID]);
String tempStr = sb.toString();
//Create full qualified LastModifiedTime field name in terms of
//<table>.<field> due to existence of the same field in both select tables.
sb = new StringBuffer();
sb.append(roadDefectTable).append(".")
.append(RoadDefectField.FIELDS[RoadDefectField.LASTMODIFIEDTIME]);
String lastModifiedTime = sb.toString();
//roadDefectPurgeStartEnd
sb = new StringBuffer();
sb.append(lastModifiedTime).append(" ")
.append(">= ?").append(" ")
.append("AND").append(" ")
.append(lastModifiedTime).append(" ")
.append("<= ?").append(" ")
.append(tempStr);
paramTypes = new int[]{
RoadDefectField.FIELDTYPES[RoadDefectField.LASTMODIFIEDTIME],
RoadDefectField.FIELDTYPES[RoadDefectField.LASTMODIFIEDTIME]
};
roadDefectPurgeStartEnd = new SQLDelete(getDataSource(),
new String[]{roadDefectTable, contactTable},
new String[]{roadDefectTable, contactTable},
sb.toString(),paramTypes);
//roadDefectPurgeStart
sb = new StringBuffer();
sb.append(lastModifiedTime).append(" ")
.append(">= ?").append(" ")
.append(tempStr);
paramTypes = new int[]{RoadDefectField.FIELDTYPES[RoadDefectField.LASTMODIFIEDTIME]};
roadDefectPurgeStart = new SQLDelete(getDataSource(),
new String[]{roadDefectTable, contactTable},
new String[]{roadDefectTable, contactTable},
sb.toString(),paramTypes);
//roadDefectPurgeEnd
sb = new StringBuffer();
sb.append(lastModifiedTime).append(" ")
.append("<= ?").append(" ")
.append(tempStr);
paramTypes = new int[]{RoadDefectField.FIELDTYPES[RoadDefectField.LASTMODIFIEDTIME]};
roadDefectPurgeEnd = new SQLDelete(getDataSource(),
new String[]{roadDefectTable, contactTable},
new String[]{roadDefectTable, contactTable},
sb.toString(),paramTypes);
}
//=====================================================================================================
// DATA INCREMENTER
//=====================================================================================================
/**
* Sets the contactIncrementer.
* @param contactIncrementer The contactIncrementer to set.
*/
public void setContactIncrementer (
DataFieldMaxValueIncrementer contactIncrementer) {
this.contactIncrementer = contactIncrementer;
}
/**
* Sets the roadDefectIncrementer.
* @param roadDefectIncrementer The roadDefectIncrementer to set.
*/
public void setRoadDefectIncrementer (
DataFieldMaxValueIncrementer roadDefectIncrementer) {
this.roadDefectIncrementer = roadDefectIncrementer;
}
//=====================================================================================================
// OPERATION METHODS, IMPLEMENTING THE ROADDEFECTDAO INTERFACE
//=====================================================================================================
/* (non-Javadoc)
* @see mcapss.prrm.roaddefect.dao.RoadDefectDAO#getRoadDefect(java.lang.Integer)
*/
public RoadDefect getRoadDefect(Integer roadDefectID) throws DataAccessException {
Object[] params = new Object[]{roadDefectID};
List roadDefectList = roadDefectByIdQuery.execute(params);
if(roadDefectList.size() > 0) {
RoadDefect roadDefect = (RoadDefect)roadDefectList.get(0);
if (roadDefect != null){
params = new Object[]{roadDefect.getContact().getId()};
List contactList = contactByIdQuery.execute(params);
if(contactList.size() > 0){
Contact contact = (Contact)contactList.get(0);
roadDefect.setContact(contact);
}
}
return roadDefect;
}
return null;
}
//========================================================================================
/* (non-Javadoc)
* @see mcapss.prrm.roaddefect.dao.RoadDefectDAO#getAllRoadDefects()
*/
public List getAllRoadDefects() throws DataAccessException {
return roadDefectQuery.execute();
}
//========================================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?