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); } } }