📄 oracledelegate.java
字号:
try {
ps = conn.prepareStatement(rtp(INSERT_TRIGGER));
ps.setString(1, trigger.getName());
ps.setString(2, trigger.getGroup());
ps.setString(3, trigger.getJobName());
ps.setString(4, trigger.getJobGroup());
setBoolean(ps, 5, trigger.isVolatile());
ps.setString(6, trigger.getDescription());
ps.setBigDecimal(7, new BigDecimal(String.valueOf(trigger
.getNextFireTime().getTime())));
long prevFireTime = -1;
if (trigger.getPreviousFireTime() != null) {
prevFireTime = trigger.getPreviousFireTime().getTime();
}
ps.setBigDecimal(8, new BigDecimal(String.valueOf(prevFireTime)));
ps.setString(9, state);
if (trigger instanceof SimpleTrigger && ((SimpleTrigger)trigger).hasAdditionalProperties() == false ) {
ps.setString(10, TTYPE_SIMPLE);
} else if (trigger instanceof CronTrigger && ((CronTrigger)trigger).hasAdditionalProperties() == false ) {
ps.setString(10, TTYPE_CRON);
} else {
ps.setString(10, TTYPE_BLOB);
}
ps.setBigDecimal(11, new BigDecimal(String.valueOf(trigger
.getStartTime().getTime())));
long endTime = 0;
if (trigger.getEndTime() != null) {
endTime = trigger.getEndTime().getTime();
}
ps.setBigDecimal(12, new BigDecimal(String.valueOf(endTime)));
ps.setString(13, trigger.getCalendarName());
ps.setInt(14, trigger.getMisfireInstruction());
ps.setBinaryStream(15, null, 0);
ps.setInt(16, trigger.getPriority());
insertResult = ps.executeUpdate();
if(data != null) {
ps.close();
ps = conn
.prepareStatement(rtp(UPDATE_ORACLE_TRIGGER_JOB_DETAIL_EMPTY_BLOB));
ps.setString(1, trigger.getName());
ps.setString(2, trigger.getGroup());
ps.executeUpdate();
ps.close();
ps = conn.prepareStatement(rtp(SELECT_ORACLE_TRIGGER_JOB_DETAIL_BLOB));
ps.setString(1, trigger.getName());
ps.setString(2, trigger.getGroup());
rs = ps.executeQuery();
int res = 0;
Blob dbBlob = null;
if (rs.next()) {
dbBlob = writeDataToBlob(rs, 1, data);
} else {
return res;
}
rs.close();
ps.close();
ps = conn.prepareStatement(rtp(UPDATE_ORACLE_TRIGGER_JOB_DETAIL_BLOB));
ps.setBlob(1, dbBlob);
ps.setString(2, trigger.getName());
ps.setString(3, trigger.getGroup());
res = ps.executeUpdate();
}
} finally {
closeResultSet(rs);
closeStatement(ps);
}
if (insertResult > 0) {
String[] trigListeners = trigger.getTriggerListenerNames();
for (int i = 0; trigListeners != null && i < trigListeners.length; i++) {
insertTriggerListener(conn, trigger, trigListeners[i]);
}
}
return insertResult;
}
public int updateTrigger(Connection conn, Trigger trigger, String state,
JobDetail jobDetail) throws SQLException, IOException {
// save some clock cycles by unnecessarily writing job data blob ...
boolean updateJobData = trigger.getJobDataMap().isDirty();
byte[] data = null;
if (updateJobData && trigger.getJobDataMap().size() > 0) {
data = serializeJobData(trigger.getJobDataMap()).toByteArray();
}
PreparedStatement ps = null;
PreparedStatement ps2 = null;
ResultSet rs = null;
int insertResult = 0;
try {
ps = conn.prepareStatement(rtp(UPDATE_ORACLE_TRIGGER));
ps.setString(1, trigger.getJobName());
ps.setString(2, trigger.getJobGroup());
setBoolean(ps, 3, trigger.isVolatile());
ps.setString(4, trigger.getDescription());
long nextFireTime = -1;
if (trigger.getNextFireTime() != null) {
nextFireTime = trigger.getNextFireTime().getTime();
}
ps.setBigDecimal(5, new BigDecimal(String.valueOf(nextFireTime)));
long prevFireTime = -1;
if (trigger.getPreviousFireTime() != null) {
prevFireTime = trigger.getPreviousFireTime().getTime();
}
ps.setBigDecimal(6, new BigDecimal(String.valueOf(prevFireTime)));
ps.setString(7, state);
if (trigger instanceof SimpleTrigger && ((SimpleTrigger)trigger).hasAdditionalProperties() == false ) {
// updateSimpleTrigger(conn, (SimpleTrigger)trigger);
ps.setString(8, TTYPE_SIMPLE);
} else if (trigger instanceof CronTrigger && ((CronTrigger)trigger).hasAdditionalProperties() == false ) {
// updateCronTrigger(conn, (CronTrigger)trigger);
ps.setString(8, TTYPE_CRON);
} else {
// updateBlobTrigger(conn, trigger);
ps.setString(8, TTYPE_BLOB);
}
ps.setBigDecimal(9, new BigDecimal(String.valueOf(trigger
.getStartTime().getTime())));
long endTime = 0;
if (trigger.getEndTime() != null) {
endTime = trigger.getEndTime().getTime();
}
ps.setBigDecimal(10, new BigDecimal(String.valueOf(endTime)));
ps.setString(11, trigger.getCalendarName());
ps.setInt(12, trigger.getMisfireInstruction());
ps.setInt(13, trigger.getPriority());
ps.setString(14, trigger.getName());
ps.setString(15, trigger.getGroup());
insertResult = ps.executeUpdate();
if(updateJobData) {
ps.close();
ps = conn
.prepareStatement(rtp(UPDATE_ORACLE_TRIGGER_JOB_DETAIL_EMPTY_BLOB));
ps.setString(1, trigger.getName());
ps.setString(2, trigger.getGroup());
ps.executeUpdate();
ps.close();
ps = conn.prepareStatement(rtp(SELECT_ORACLE_TRIGGER_JOB_DETAIL_BLOB));
ps.setString(1, trigger.getName());
ps.setString(2, trigger.getGroup());
rs = ps.executeQuery();
int res = 0;
if (rs.next()) {
Blob dbBlob = writeDataToBlob(rs, 1, data);
ps2 = conn.prepareStatement(rtp(UPDATE_ORACLE_TRIGGER_JOB_DETAIL_BLOB));
ps2.setBlob(1, dbBlob);
ps2.setString(2, trigger.getName());
ps2.setString(3, trigger.getGroup());
res = ps2.executeUpdate();
}
}
} finally {
closeResultSet(rs);
closeStatement(ps);
closeStatement(ps2);
}
if (insertResult > 0) {
deleteTriggerListeners(conn, trigger.getName(), trigger.getGroup());
String[] trigListeners = trigger.getTriggerListenerNames();
for (int i = 0; trigListeners != null && i < trigListeners.length; i++) {
insertTriggerListener(conn, trigger, trigListeners[i]);
}
}
return insertResult;
}
public int insertCalendar(Connection conn, String calendarName,
Calendar calendar) throws IOException, SQLException {
ByteArrayOutputStream baos = serializeObject(calendar);
PreparedStatement ps = null;
PreparedStatement ps2 = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(rtp(INSERT_ORACLE_CALENDAR));
ps.setString(1, calendarName);
ps.executeUpdate();
ps.close();
ps = conn.prepareStatement(rtp(SELECT_ORACLE_CALENDAR_BLOB));
ps.setString(1, calendarName);
rs = ps.executeQuery();
if (rs.next()) {
Blob dbBlob = writeDataToBlob(rs, 1, baos.toByteArray());
ps2 = conn.prepareStatement(rtp(UPDATE_ORACLE_CALENDAR_BLOB));
ps2.setBlob(1, dbBlob);
ps2.setString(2, calendarName);
return ps2.executeUpdate();
}
return 0;
} finally {
closeResultSet(rs);
closeStatement(ps);
closeStatement(ps2);
}
}
public int updateCalendar(Connection conn, String calendarName,
Calendar calendar) throws IOException, SQLException {
ByteArrayOutputStream baos = serializeObject(calendar);
PreparedStatement ps = null;
PreparedStatement ps2 = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(rtp(SELECT_ORACLE_CALENDAR_BLOB));
ps.setString(1, calendarName);
rs = ps.executeQuery();
if (rs.next()) {
Blob dbBlob = writeDataToBlob(rs, 1, baos.toByteArray());
ps2 = conn.prepareStatement(rtp(UPDATE_ORACLE_CALENDAR_BLOB));
ps2.setBlob(1, dbBlob);
ps2.setString(2, calendarName);
return ps2.executeUpdate();
}
return 0;
} finally {
closeResultSet(rs);
closeStatement(ps);
closeStatement(ps2);
}
}
public int updateJobData(Connection conn, JobDetail job)
throws IOException, SQLException {
ByteArrayOutputStream baos = serializeJobData(job.getJobDataMap());
byte[] data = baos.toByteArray();
PreparedStatement ps = null;
PreparedStatement ps2 = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(rtp(SELECT_ORACLE_JOB_DETAIL_BLOB));
ps.setString(1, job.getName());
ps.setString(2, job.getGroup());
rs = ps.executeQuery();
int res = 0;
if (rs.next()) {
Blob dbBlob = writeDataToBlob(rs, 1, data);
ps2 = conn.prepareStatement(rtp(UPDATE_ORACLE_JOB_DETAIL_BLOB));
ps2.setBlob(1, dbBlob);
ps2.setString(2, job.getName());
ps2.setString(3, job.getGroup());
res = ps2.executeUpdate();
}
return res;
} finally {
closeResultSet(rs);
closeStatement(ps);
closeStatement(ps2);
}
}
protected Blob writeDataToBlob(ResultSet rs, int column, byte[] data) throws SQLException {
Blob blob = rs.getBlob(column); // get blob
if (blob == null) {
throw new SQLException("Driver's Blob representation is null!");
}
if (blob instanceof oracle.sql.BLOB) { // is it an oracle blob?
((oracle.sql.BLOB) blob).putBytes(1, data);
return blob;
} else {
throw new SQLException(
"Driver's Blob representation is of an unsupported type: "
+ blob.getClass().getName());
}
}
}
// EOF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -