roaddefectinsert.java

来自「Java的框架」· Java 代码 · 共 119 行

JAVA
119
字号
package mcaps.apps.prrm.roaddefect.dao.jdbc.query;

import mcaps.apps.prrm.roaddefect.dao.util.RoadDefectField;
import mcaps.apps.prrm.roaddefect.model.RoadDefect;
import mcaps.apps.prrm.util.TableNameConstants;

import javax.sql.DataSource;

import org.springframework.jdbc.object.SqlUpdate;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer;

/**
 * This class extends SqlUpdate to perform JDBC Insert 
 * operation to the road defect table. This class is 
 * used to set the precompiled INSERT SQL statement and
 * to execute the INSERT SQL statement.
 * 
 * @author jov
 * @date Sep 23, 2005
 * @version 1.0.1.0
 */
public class RoadDefectInsert extends SqlUpdate {

	private DataFieldMaxValueIncrementer incrementer;
	
	/**
	 * Default constructor that accepts a datasource object to allow
	 * the connection to the database for insert operation.
	 * @param ds the datasource object
	 */
	public RoadDefectInsert(DataSource ds){
		setDataSource(ds);
		setDefaultParameterTypes();
		setSql(getDefaultSQL());
		compile();
	}
	
	/**
	 * Sets the incrementer.
	 * @param incrementer The incrementer to set.
	 */
	public void setIncrementer (DataFieldMaxValueIncrementer incrementer) {
		this.incrementer = incrementer;
	}

	/**
	 * Execute the JDBC insert operation using the values as
	 * in the contact object
	 * @param contact the object the holds the field values to be inserted
	 * @return returns the id in which created for the newly 
	 * inserted record
	 */
	public void insert(RoadDefect roadDefect){
//	TODO Exception code If not initialized throw excp
		Integer id = new Integer(incrementer.nextIntValue());
		Object[] paramValues = new Object[]{
				id,
				roadDefect.getDefectType(),				
				roadDefect.getDefectDetail(),
				roadDefect.getRoad().getId(),
				roadDefect.getLocation(),
				roadDefect.getSeverity(),
				roadDefect.getStatus(),
				roadDefect.getContact().getId(),
				roadDefect.getClosedDate(),
				roadDefect.getCreationTime(),
				roadDefect.getLastModifiedTime()
		};
		super.update(paramValues);
		roadDefect.setId(id); 
	}
	
	/**
	 * Generates the defact SQL statement.
	 * @return the default sql statement.
	 */
	private String getDefaultSQL(){
		StringBuffer sb = new StringBuffer();
		sb.append("INSERT INTO ")
			.append(TableNameConstants.ROADDEFECT_TABLENAME)
			.append(" (");
		
		int fieldNum = RoadDefectField.MAX; 
		
		for (int i = 0; i <= fieldNum; i++){
			sb.append(RoadDefectField.FIELDS[i]);
			if (i < fieldNum){
				sb.append(", ");
			}
		}
			
		sb.append(") ")
			.append("VALUES ")
			.append("(");
			
		for (int i = 0; i<=fieldNum; i++){
			sb.append("?");
			if (i < fieldNum){
				sb.append(", ");
			}
		}
			
		sb.append(")");
		return sb.toString();
	}
		
	/**
	 * Sets the default parameter types.
	 */
	protected void setDefaultParameterTypes(){	
		for (int i=0; i <= RoadDefectField.MAX; i++){
			declareParameter(new SqlParameter(RoadDefectField.FIELDTYPES[i]));			
		}
	}
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?