1 package net.sf.appstatus.batch.jdbc;
2
3 /**
4 * Oracle-Compatible implementation.
5 * <p>
6 *
7 * <pre>
8 * <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
9 * scope="singleton">
10 * <constructor-arg ref="dataSource" />
11 * </bean>
12 *
13 * <bean id="batchDao" class="net.sf.appstatus.batch.jdbc.BatchDao"
14 * scope="singleton"> <property name="jdbcTemplate" ref="jdbcTemplate" />
15 * </bean>
16 *
17 *
18 *
19 * <bean id="jdbcBatchManager"
20 * class="net.sf.appstatus.batch.jdbc.JdbcBatchManager" scope="singleton">
21 * <property name="batchDao" ref="batchDao" />
22 * </bean>
23 *
24 * </pre>
25 *
26 * Create table: BATCH
27 *
28 * <p>
29 * <table>
30 * <tr>
31 * <td>UUID_BATCH</td>
32 * <td>varchar (256)</td>
33 * </tr>
34 * <tr>
35 * <td>GROUP_BATCH</td>
36 * <td>varchar (256)</td>
37 * </tr>
38 * <tr>
39 * <td>NAME_BATCH</td>
40 * <td>varchar (256)</td>
41 * </tr>
42 * <tr>
43 * <td>START_DATE</td>
44 * <td>DATETIME</td>
45 * </tr>
46 * <tr>
47 * <td>END_DATE</td>
48 * <td>DATETIME</td>
49 * </tr>
50 * <tr>
51 * <td>UPDATED</td>
52 * <td>DATETIME</td>
53 * </tr>
54 * <tr>
55 * <td>STATUS</td>
56 * <td>varchar (64)</td>
57 * </tr>
58 * <tr>
59 * <td>SUCCESS</td>
60 * <td>BOOLEAN</td>
61 * </tr>
62 * <tr>
63 * <td>ITEMCOUNT</td>
64 * <td>LONG</td>
65 * </tr>
66 * <tr>
67 * <td>ITEM</td>
68 * <td>varchar (256)</td>
69 * </tr>
70 * </tr>
71 * <tr>
72 * <td>CURRENT_TASK</td>
73 * <td>varchar (256)</td>
74 * </tr>
75 * <tr>
76 * <td>PROGRESS</td>
77 * <td>Float</td>
78 * </tr>
79 * <tr>
80 * <td>REJECT</td>
81 * <td>CLOB</td>
82 * </tr>
83 * <tr>
84 * <td>LAST_MSG</td>
85 * <td>varchar (1024)</td>
86 * </tr>
87 * </table>
88 */
89 public class BatchDaoOracle extends BatchDao {
90
91 @Override
92 protected String getSql(int query) {
93
94 switch (query) {
95
96 case BATCH_FETCH:
97 return "SELECT " //
98 + " UUID_BATCH, ITEM, CURRENT_TASK, END_DATE, GROUP_BATCH, ITEMCOUNT, LAST_MSG, UPDATED, NAME_BATCH, PROGRESS, REJECT, START_DATE, STATUS,SUCCESS " //
99 + "FROM ( " //
100 + "SELECT UUID_BATCH, ITEM, CURRENT_TASK, END_DATE, GROUP_BATCH, ITEMCOUNT, LAST_MSG, UPDATED, NAME_BATCH, PROGRESS, REJECT, START_DATE, STATUS,SUCCESS FROM "
101 + tableName + " WHERE STATUS IN ( %s ) ORDER BY UPDATED DESC " //
102 + ") WHERE ROWNUM <= ? ";
103
104 case BATCH_FETCH_BY_NAME:
105 return "SELECT " //
106 + " UUID_BATCH, ITEM, CURRENT_TASK, END_DATE, GROUP_BATCH, ITEMCOUNT, LAST_MSG, UPDATED, NAME_BATCH, PROGRESS, REJECT, START_DATE, STATUS,SUCCESS " //
107 + "FROM ( " //
108 + "SELECT UUID_BATCH, ITEM, CURRENT_TASK, END_DATE, GROUP_BATCH, ITEMCOUNT, LAST_MSG, UPDATED, NAME_BATCH, PROGRESS, REJECT, START_DATE, STATUS,SUCCESS FROM "
109 + tableName
110 + " WHERE GROUP_BATCH = ? AND NAME_BATCH = ? AND STATUS IN ( %s ) ORDER BY UPDATED DESC " //
111 + ") WHERE ROWNUM <= ? ";
112
113 case BATCH_CREATE_TABLE:
114 return "CREATE TABLE " + tableName + " (" //
115 + " UUID_BATCH VARCHAR2(256 BYTE) NOT NULL," //
116 + "GROUP_BATCH VARCHAR2(256 BYTE) NULL," //
117 + "NAME_BATCH VARCHAR2(256 BYTE) NULL," //
118 + "START_DATE DATE NULL," //
119 + "END_DATE DATE NULL," //
120 + "UPDATED DATE NULL," //
121 + "STATUS VARCHAR2(64 BYTE) NULL," //
122 + "SUCCESS CHAR(1) NULL," //
123 + "ITEMCOUNT NUMBER(12) NULL," //
124 + "ITEM VARCHAR2(256 BYTE) NULL," //
125 + "CURRENT_TASK VARCHAR2(256 BYTE) NULL," //
126 + "PROGRESS FLOAT(15) NULL," //
127 + "REJECT CLOB NULL," //
128 + "LAST_MSG VARCHAR2(1024 BYTE) NULL, " //
129 + "PRIMARY KEY (UUID_BATCH)" + ") ";
130
131 case BATCH_DELETE_SUCCESS:
132 return "delete from " + tableName + " where STATUS = ? AND REJECT is NULL";
133 default:
134 return super.getSql(query);
135 }
136
137 }
138 }