package net.sf.appstatus.batch.jdbc;
/**
* Oracle-Compatible implementation.
* <p>
*
* <pre>
* <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
* scope="singleton">
* <constructor-arg ref="dataSource" />
* </bean>
*
* <bean id="batchDao" class="net.sf.appstatus.batch.jdbc.BatchDao"
* scope="singleton"> <property name="jdbcTemplate" ref="jdbcTemplate" />
* </bean>
*
*
*
* <bean id="jdbcBatchManager"
* class="net.sf.appstatus.batch.jdbc.JdbcBatchManager" scope="singleton">
* <property name="batchDao" ref="batchDao" />
* </bean>
*
* </pre>
*
* Create table: BATCH
*
* <p>
* <table>
* <tr>
* <td>UUID_BATCH</td>
* <td>varchar (256)</td>
* </tr>
* <tr>
* <td>GROUP_BATCH</td>
* <td>varchar (256)</td>
* </tr>
* <tr>
* <td>NAME_BATCH</td>
* <td>varchar (256)</td>
* </tr>
* <tr>
* <td>START_DATE</td>
* <td>DATETIME</td>
* </tr>
* <tr>
* <td>END_DATE</td>
* <td>DATETIME</td>
* </tr>
* <tr>
* <td>UPDATED</td>
* <td>DATETIME</td>
* </tr>
* <tr>
* <td>STATUS</td>
* <td>varchar (64)</td>
* </tr>
* <tr>
* <td>SUCCESS</td>
* <td>BOOLEAN</td>
* </tr>
* <tr>
* <td>ITEMCOUNT</td>
* <td>LONG</td>
* </tr>
* <tr>
* <td>ITEM</td>
* <td>varchar (256)</td>
* </tr>
* </tr>
* <tr>
* <td>CURRENT_TASK</td>
* <td>varchar (256)</td>
* </tr>
* <tr>
* <td>PROGRESS</td>
* <td>Float</td>
* </tr>
* <tr>
* <td>REJECT</td>
* <td>CLOB</td>
* </tr>
* <tr>
* <td>LAST_MSG</td>
* <td>varchar (1024)</td>
* </tr>
* </table>
*/
public class BatchDaoOracle extends BatchDao {
@Override
protected String getSql(int query) {
switch (query) {
case BATCH_FETCH:
return "SELECT " //
+ " UUID_BATCH, ITEM, CURRENT_TASK, END_DATE, GROUP_BATCH, ITEMCOUNT, LAST_MSG, UPDATED, NAME_BATCH, PROGRESS, REJECT, START_DATE, STATUS,SUCCESS " //
+ "FROM ( " //
+ "SELECT UUID_BATCH, ITEM, CURRENT_TASK, END_DATE, GROUP_BATCH, ITEMCOUNT, LAST_MSG, UPDATED, NAME_BATCH, PROGRESS, REJECT, START_DATE, STATUS,SUCCESS FROM "
+ tableName + " WHERE STATUS IN ( %s ) ORDER BY UPDATED DESC " //
+ ") WHERE ROWNUM <= ? ";
case BATCH_FETCH_BY_NAME:
return "SELECT " //
+ " UUID_BATCH, ITEM, CURRENT_TASK, END_DATE, GROUP_BATCH, ITEMCOUNT, LAST_MSG, UPDATED, NAME_BATCH, PROGRESS, REJECT, START_DATE, STATUS,SUCCESS " //
+ "FROM ( " //
+ "SELECT UUID_BATCH, ITEM, CURRENT_TASK, END_DATE, GROUP_BATCH, ITEMCOUNT, LAST_MSG, UPDATED, NAME_BATCH, PROGRESS, REJECT, START_DATE, STATUS,SUCCESS FROM "
+ tableName
+ " WHERE GROUP_BATCH = ? AND NAME_BATCH = ? AND STATUS IN ( %s ) ORDER BY UPDATED DESC " //
+ ") WHERE ROWNUM <= ? ";
case BATCH_CREATE_TABLE:
return "CREATE TABLE " + tableName + " (" //
+ " UUID_BATCH VARCHAR2(256 BYTE) NOT NULL," //
+ "GROUP_BATCH VARCHAR2(256 BYTE) NULL," //
+ "NAME_BATCH VARCHAR2(256 BYTE) NULL," //
+ "START_DATE DATE NULL," //
+ "END_DATE DATE NULL," //
+ "UPDATED DATE NULL," //
+ "STATUS VARCHAR2(64 BYTE) NULL," //
+ "SUCCESS CHAR(1) NULL," //
+ "ITEMCOUNT NUMBER(12) NULL," //
+ "ITEM VARCHAR2(256 BYTE) NULL," //
+ "CURRENT_TASK VARCHAR2(256 BYTE) NULL," //
+ "PROGRESS FLOAT(15) NULL," //
+ "REJECT CLOB NULL," //
+ "LAST_MSG VARCHAR2(1024 BYTE) NULL, " //
+ "PRIMARY KEY (UUID_BATCH)" + ") ";
case BATCH_DELETE_SUCCESS:
return "delete from " + tableName + " where STATUS = ? AND REJECT is NULL";
default:
return super.getSql(query);
}
}
}