亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? oracledelegate.java

?? Java中非常實(shí)用流控制工具
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
/* 
 * Copyright 2004-2005 OpenSymphony 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 
 * use this file except in compliance with the License. You may obtain a copy 
 * of the License at 
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0 
 *   
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 
 * License for the specific language governing permissions and limitations 
 * under the License.
 * 
 */

/*
 * Previously Copyright (c) 2001-2004 James House
 */
package org.quartz.impl.jdbcjobstore.oracle;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.math.BigDecimal;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.commons.logging.Log;
import org.quartz.Calendar;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.impl.jdbcjobstore.StdJDBCDelegate;

/**
 * <p>
 * This is a driver delegate for the Oracle JDBC driver. To use this delegate,
 * <code>jdbcDriverVendor</code> should be configured as 'Oracle' with any
 * <code>jdbcDriverVersion</code>.
 * </p>
 * 
 * @see org.quartz.impl.jdbcjobstore.WebLogicDelegate
 * @see org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate
 * @author James House
 * @author Patrick Lightbody
 * @author Eric Mueller
 */
public class OracleDelegate extends StdJDBCDelegate {
    /**
     * <p>
     * Create new OrcaleDelegate instance.
     * </p>
     * 
     * @param logger
     *          the logger to use during execution
     * @param tablePrefix
     *          the prefix of all table names
     */
    public OracleDelegate(Log logger, String tablePrefix, String instanceId) {
        super(logger, tablePrefix, instanceId);
    }

    /**
     * <p>
     * Create new OrcaleDelegate instance.
     * </p>
     * 
     * @param logger
     *          the logger to use during execution
     * @param tablePrefix
     *          the prefix of all table names
     * @param useProperties
     *          use java.util.Properties for storage
     */
    public OracleDelegate(Log logger, String tablePrefix, String instanceId,
            Boolean useProperties) {
        super(logger, tablePrefix, instanceId, useProperties);
    }

    public static final String UPDATE_ORACLE_JOB_DETAIL = "UPDATE "
            + TABLE_PREFIX_SUBST + TABLE_JOB_DETAILS + " SET "
            + COL_DESCRIPTION + " = ?, " + COL_JOB_CLASS + " = ?, "
            + COL_IS_DURABLE + " = ?, " + COL_IS_VOLATILE + " = ?, "
            + COL_IS_STATEFUL + " = ?, " + COL_REQUESTS_RECOVERY + " = ? "
            + " WHERE " + COL_JOB_NAME + " = ? AND " + COL_JOB_GROUP + " = ?";

    public static final String UPDATE_ORACLE_JOB_DETAIL_BLOB = "UPDATE "
            + TABLE_PREFIX_SUBST + TABLE_JOB_DETAILS + " SET "
            + COL_JOB_DATAMAP + " = ? " + " WHERE " + COL_JOB_NAME
            + " = ? AND " + COL_JOB_GROUP + " = ?";

    public static final String UPDATE_ORACLE_JOB_DETAIL_EMPTY_BLOB = "UPDATE "
            + TABLE_PREFIX_SUBST + TABLE_JOB_DETAILS + " SET "
            + COL_JOB_DATAMAP + " = EMPTY_BLOB() " + " WHERE " + COL_JOB_NAME
            + " = ? AND " + COL_JOB_GROUP + " = ?";

    public static final String SELECT_ORACLE_JOB_DETAIL_BLOB = "SELECT "
            + COL_JOB_DATAMAP + " FROM " + TABLE_PREFIX_SUBST
            + TABLE_JOB_DETAILS + " WHERE " + COL_JOB_NAME + " = ? AND "
            + COL_JOB_GROUP + " = ? FOR UPDATE";

    public static final String UPDATE_ORACLE_TRIGGER = "UPDATE "  
        + TABLE_PREFIX_SUBST + TABLE_TRIGGERS + " SET " + COL_JOB_NAME  
        + " = ?, " + COL_JOB_GROUP + " = ?, " + COL_IS_VOLATILE + " = ?, "
        + COL_DESCRIPTION + " = ?, " + COL_NEXT_FIRE_TIME + " = ?, "
        + COL_PREV_FIRE_TIME + " = ?, " + COL_TRIGGER_STATE + " = ?, "
        + COL_TRIGGER_TYPE + " = ?, " + COL_START_TIME + " = ?, "
        + COL_END_TIME + " = ?, " + COL_CALENDAR_NAME + " = ?, "
        + COL_MISFIRE_INSTRUCTION + " = ?, "
        + COL_PRIORITY + " = ? WHERE " 
        + COL_TRIGGER_NAME + " = ? AND " + COL_TRIGGER_GROUP + " = ?";

    
    public static final String SELECT_ORACLE_TRIGGER_JOB_DETAIL_BLOB = "SELECT "
        + COL_JOB_DATAMAP + " FROM " + TABLE_PREFIX_SUBST
        + TABLE_TRIGGERS + " WHERE " + COL_TRIGGER_NAME + " = ? AND "
        + COL_TRIGGER_GROUP + " = ? FOR UPDATE";

    public static final String UPDATE_ORACLE_TRIGGER_JOB_DETAIL_BLOB = "UPDATE "
        + TABLE_PREFIX_SUBST + TABLE_TRIGGERS + " SET "
        + COL_JOB_DATAMAP + " = ? " + " WHERE " + COL_TRIGGER_NAME
        + " = ? AND " + COL_TRIGGER_GROUP + " = ?";

    public static final String UPDATE_ORACLE_TRIGGER_JOB_DETAIL_EMPTY_BLOB = "UPDATE "
        + TABLE_PREFIX_SUBST + TABLE_TRIGGERS + " SET "
        + COL_JOB_DATAMAP + " = EMPTY_BLOB() " + " WHERE " + COL_TRIGGER_NAME
        + " = ? AND " + COL_TRIGGER_GROUP + " = ?";
    
    
    public static final String INSERT_ORACLE_CALENDAR = "INSERT INTO "
            + TABLE_PREFIX_SUBST + TABLE_CALENDARS + " (" + COL_CALENDAR_NAME
            + ", " + COL_CALENDAR + ") " + " VALUES(?, EMPTY_BLOB())";

    public static final String SELECT_ORACLE_CALENDAR_BLOB = "SELECT "
            + COL_CALENDAR + " FROM " + TABLE_PREFIX_SUBST + TABLE_CALENDARS
            + " WHERE " + COL_CALENDAR_NAME + " = ? FOR UPDATE";

    public static final String UPDATE_ORACLE_CALENDAR_BLOB = "UPDATE "
            + TABLE_PREFIX_SUBST + TABLE_CALENDARS + " SET " + COL_CALENDAR
            + " = ? " + " WHERE " + COL_CALENDAR_NAME + " = ?";

    //---------------------------------------------------------------------------
    // protected methods that can be overridden by subclasses
    //---------------------------------------------------------------------------

    protected Object getObjectFromBlob(ResultSet rs, String colName)
        throws ClassNotFoundException, IOException, SQLException {
        
        Object obj = null;
        InputStream binaryInput = rs.getBinaryStream(colName);
        if (binaryInput != null) {
            ObjectInputStream in = new ObjectInputStream(binaryInput);
            try {
                obj = in.readObject();
            } finally {
                in.close();
            }
        }

        return obj;
    }

    public int insertJobDetail(Connection conn, JobDetail job)
        throws IOException, SQLException {

        ByteArrayOutputStream baos = serializeJobData(job.getJobDataMap());
        byte[] data = baos.toByteArray();
        PreparedStatement ps = null;
        ResultSet rs = null;

        try {
            ps = conn.prepareStatement(rtp(INSERT_JOB_DETAIL));
            ps.setString(1, job.getName());
            ps.setString(2, job.getGroup());
            ps.setString(3, job.getDescription());
            ps.setString(4, job.getJobClass().getName());
            setBoolean(ps, 5, job.isDurable());
            setBoolean(ps, 6, job.isVolatile());
            setBoolean(ps, 7, job.isStateful());
            setBoolean(ps, 8, job.requestsRecovery());

            ps.setBinaryStream(9, null, 0);
            ps.executeUpdate();
            ps.close();

            ps = conn
                    .prepareStatement(rtp(UPDATE_ORACLE_JOB_DETAIL_EMPTY_BLOB));
            ps.setString(1, job.getName());
            ps.setString(2, job.getGroup());
            ps.executeUpdate();
            ps.close();

            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;

            Blob dbBlob = null;
            if (rs.next()) {
                dbBlob = writeDataToBlob(rs, 1, data);
            } else {
                return res;
            }

            rs.close();
            ps.close();

            ps = conn.prepareStatement(rtp(UPDATE_ORACLE_JOB_DETAIL_BLOB));
            ps.setBlob(1, dbBlob);
            ps.setString(2, job.getName());
            ps.setString(3, job.getGroup());

            res = ps.executeUpdate();

            if (res > 0) {
                String[] jobListeners = job.getJobListenerNames();
                for (int i = 0; jobListeners != null && i < jobListeners.length; i++) {
                    insertJobListener(conn, job, jobListeners[i]);
                }
            }

            return res;
        } finally {
            closeResultSet(rs);
            closeStatement(ps);
        }

    }

    protected Object getJobDetailFromBlob(ResultSet rs, String colName)
        throws ClassNotFoundException, IOException, SQLException {
        
        if (canUseProperties()) {
            InputStream binaryInput = rs.getBinaryStream(colName);
            return binaryInput;
        }

        return getObjectFromBlob(rs, colName);
    }

    public int updateJobDetail(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(UPDATE_ORACLE_JOB_DETAIL));
            ps.setString(1, job.getDescription());
            ps.setString(2, job.getJobClass().getName());
            setBoolean(ps, 3, job.isDurable());
            setBoolean(ps, 4, job.isVolatile());
            setBoolean(ps, 5, job.isStateful());
            setBoolean(ps, 6, job.requestsRecovery());
            ps.setString(7, job.getName());
            ps.setString(8, job.getGroup());

            ps.executeUpdate();
            ps.close();

            ps = conn
                    .prepareStatement(rtp(UPDATE_ORACLE_JOB_DETAIL_EMPTY_BLOB));
            ps.setString(1, job.getName());
            ps.setString(2, job.getGroup());
            ps.executeUpdate();
            ps.close();

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

            if (res > 0) {
                deleteJobListeners(conn, job.getName(), job.getGroup());
                String[] jobListeners = job.getJobListenerNames();
                for (int i = 0; jobListeners != null && i < jobListeners.length; i++) {
                    insertJobListener(conn, job, jobListeners[i]);
                }
            }

            return res;

        } finally {
            closeResultSet(rs);
            closeStatement(ps);
            closeStatement(ps2);
        }
    }

    public int insertTrigger(Connection conn, Trigger trigger, String state,
            JobDetail jobDetail) throws SQLException, IOException {

        byte[] data = null;
        if (trigger.getJobDataMap().size() > 0) {
            data = serializeJobData(trigger.getJobDataMap()).toByteArray();
        }
        
        PreparedStatement ps = null;
        ResultSet rs = null;
        
        int insertResult = 0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费视频网站| 日韩免费视频一区| 91麻豆精品91久久久久同性| 久久综合九色综合欧美98| 亚洲人成影院在线观看| 精品亚洲aⅴ乱码一区二区三区| 91网站在线观看视频| 久久久99精品久久| 日产国产欧美视频一区精品| 欧美亚洲愉拍一区二区| 日本一区二区动态图| 久久99国产精品成人| 欧美日韩dvd在线观看| 亚洲欧美日韩一区| 成人激情动漫在线观看| 久久欧美一区二区| 国内一区二区在线| 精品国产乱码久久久久久蜜臀| 亚洲国产精品麻豆| 在线一区二区三区| 亚洲另类在线视频| 99视频一区二区| 国产精品免费观看视频| 国产成人免费在线观看| 久久日韩粉嫩一区二区三区| 久久激情五月婷婷| 欧美一区二区三级| 日产国产欧美视频一区精品| 欧美一区二区私人影院日本| 午夜精品久久久久久久久久久| 在线这里只有精品| 亚洲尤物在线视频观看| 在线精品视频免费播放| 亚洲另类中文字| 91官网在线观看| 亚洲va韩国va欧美va精品| 欧美日韩1234| 美女性感视频久久| 精品国产一区二区三区不卡 | 欧美一区二区三区系列电影| 一区二区三区波多野结衣在线观看 | 日韩欧美专区在线| 久久99国产精品久久99果冻传媒| 欧美tk—视频vk| 国产中文字幕精品| 欧美电影精品一区二区| 国产精品亚洲第一| 成人欧美一区二区三区黑人麻豆| 91视频你懂的| 婷婷丁香激情综合| 日韩三区在线观看| 国产成人在线视频免费播放| 国产精品污网站| 在线区一区二视频| 日韩av高清在线观看| 国产午夜精品一区二区三区视频 | 精品奇米国产一区二区三区| 国产自产视频一区二区三区| 中文字幕在线不卡视频| 91福利在线观看| 麻豆freexxxx性91精品| 欧美精彩视频一区二区三区| 91麻豆123| 美女脱光内衣内裤视频久久网站 | 日日摸夜夜添夜夜添精品视频| 5566中文字幕一区二区电影| 国产成人免费在线观看不卡| 一区二区三区在线视频播放| 91精品国产福利| 成人禁用看黄a在线| 香蕉久久一区二区不卡无毒影院| 精品精品国产高清一毛片一天堂| 99久久久国产精品免费蜜臀| 日日夜夜精品免费视频| 国产精品久久久久一区| 91精品国产黑色紧身裤美女| 成人丝袜高跟foot| 欧美aⅴ一区二区三区视频| 日本一区二区三区视频视频| 7777精品伊人久久久大香线蕉经典版下载| 国产一区视频网站| 久久美女高清视频 | 一本大道久久a久久精二百| 另类小说视频一区二区| 亚洲综合在线电影| 国产欧美日韩精品一区| 制服丝袜中文字幕亚洲| 91麻豆福利精品推荐| 精一区二区三区| 日韩精品免费视频人成| 亚洲欧洲综合另类在线| 亚洲精品在线网站| 7777精品伊人久久久大香线蕉经典版下载 | 青青草一区二区三区| 一区二区三区中文在线观看| 中文一区在线播放| 久久综合999| 日韩一区二区免费视频| 欧美日韩激情一区| 五月天激情小说综合| 精品国产乱码久久久久久蜜臀 | 91在线观看一区二区| 精久久久久久久久久久| 一区二区三区电影在线播| 中文字幕乱码久久午夜不卡| 日韩精品一区二区三区视频在线观看| 91传媒视频在线播放| 色综合亚洲欧洲| 一本色道久久综合亚洲91| 成人夜色视频网站在线观看| 国产高清在线观看免费不卡| 国产制服丝袜一区| 国产精品99久久久久久似苏梦涵| 精品一区二区三区影院在线午夜| 成人av在线影院| 国产精品 日产精品 欧美精品| 精品一区二区三区视频| 精品影视av免费| 国产一区二区三区在线观看免费视频| 久久99国内精品| 国精产品一区一区三区mba桃花 | 成人av在线一区二区| hitomi一区二区三区精品| 成人深夜视频在线观看| 成人小视频免费观看| caoporen国产精品视频| 99re亚洲国产精品| 欧洲一区二区三区在线| 欧美性做爰猛烈叫床潮| 8v天堂国产在线一区二区| 日韩精品中午字幕| 国产午夜精品一区二区三区视频| 国产精品久久久久9999吃药| 亚洲视频一区二区在线观看| 亚洲一级在线观看| 日本午夜精品一区二区三区电影 | 国产日韩欧美高清| 最新久久zyz资源站| 一区二区三区在线免费| 天天亚洲美女在线视频| 国产美女视频91| 91在线国产观看| 日韩欧美国产综合| 国产精品伦理在线| 亚洲成人av免费| 国产毛片精品一区| 91黄色激情网站| 日韩一区二区免费视频| 国产精品福利在线播放| 午夜精品福利一区二区三区av| 美国毛片一区二区| 99久久国产综合色|国产精品| 69堂成人精品免费视频| 亚洲国产精品99久久久久久久久| 亚洲精品久久久蜜桃| 精品一区二区三区视频在线观看| 一本色道亚洲精品aⅴ| 日韩欧美一级片| 亚洲免费成人av| 韩国av一区二区| 欧美日韩中文字幕一区| 国产欧美精品一区| 首页国产欧美久久| 成人性生交大合| 日韩欧美国产精品| 一区二区三区四区中文字幕| 国产伦精品一区二区三区免费| 欧美日韩一区二区在线观看视频 | 亚洲一区自拍偷拍| 激情综合五月婷婷| 欧美日韩国产综合视频在线观看| 国产精品私房写真福利视频| 日本大胆欧美人术艺术动态| 色又黄又爽网站www久久| 欧美精品一区二区三区蜜桃 | 亚洲另类在线制服丝袜| 国产高清一区日本| 欧美成人aa大片| 婷婷成人激情在线网| 色悠悠久久综合| 国产精品福利一区二区| 国产自产高清不卡| 欧美mv日韩mv国产网站| 五月婷婷激情综合网| 欧美综合久久久| 亚洲视频一区二区在线| 国产69精品久久99不卡| 精品乱人伦小说| 美国毛片一区二区| 日韩欧美一区在线| 日欧美一区二区| 欧美日韩高清在线播放| 一区二区成人在线| 日本大香伊一区二区三区| 国产精品剧情在线亚洲| 岛国一区二区三区| 中文字幕免费在线观看视频一区| 国产成人无遮挡在线视频| 久久久精品中文字幕麻豆发布| 美女一区二区三区|