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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? oracledelegate.java

?? Java中非常實用流控制工具
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* 
 * 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄一区二区三区| 99精品在线观看视频| 韩国欧美国产一区| 欧美在线观看视频在线| 国产欧美一区二区精品性色超碰| 亚洲午夜免费视频| www.99精品| 久久久久久久久久久久电影| 日本亚洲三级在线| 欧美日韩一区在线观看| 国产精品电影一区二区三区| 国产永久精品大片wwwapp| 欧美老女人第四色| 亚洲一级不卡视频| 色哟哟亚洲精品| 中文字幕中文字幕中文字幕亚洲无线| 久久成人久久爱| 欧美成人bangbros| 婷婷开心久久网| 欧美日韩成人高清| 一区二区三区四区中文字幕| 91在线观看美女| 中文字幕在线观看一区| 国产精品一二三四五| 精品久久人人做人人爽| 蜜臀久久久99精品久久久久久| 欧美日韩一级片在线观看| 亚洲狼人国产精品| 欧美在线不卡一区| 一区二区三区免费| 欧美午夜精品理论片a级按摩| 亚洲日本丝袜连裤袜办公室| aaa国产一区| 亚洲人成网站色在线观看| 91麻豆免费视频| 亚洲一区免费观看| 欧美日韩一区二区电影| 午夜不卡在线视频| 欧美xxxxx牲另类人与| 狠狠久久亚洲欧美| 欧美极品另类videosde| 91在线精品秘密一区二区| 亚洲黄色av一区| 欧美二区三区91| 久久国产精品一区二区| 久久久久国产精品免费免费搜索| 国产福利91精品一区二区三区| 国产精品―色哟哟| 欧美性受极品xxxx喷水| 美女一区二区三区| 中文字幕不卡的av| 91极品视觉盛宴| 美日韩一区二区三区| 久久久一区二区三区| 91视频国产资源| 日韩在线一区二区三区| 国产欧美日韩卡一| 欧美日韩久久不卡| 极品瑜伽女神91| 中文字幕人成不卡一区| 欧美视频一区二区三区四区| 久久99精品一区二区三区三区| 国产女主播视频一区二区| 欧美午夜免费电影| 国产成人午夜片在线观看高清观看| 亚洲天堂久久久久久久| 7777精品伊人久久久大香线蕉的| 国产一区二区视频在线| 亚洲女女做受ⅹxx高潮| 亚洲精品一区二区三区影院| 99v久久综合狠狠综合久久| 免费视频一区二区| 亚洲蜜桃精久久久久久久| 日韩欧美你懂的| 91福利视频网站| 国产专区综合网| 偷拍一区二区三区四区| 中文字幕一区日韩精品欧美| 日韩欧美国产成人一区二区| 91国产福利在线| 国产成人精品aa毛片| 日韩av一级电影| 亚洲毛片av在线| 国产日韩欧美精品综合| 在线播放一区二区三区| 色偷偷成人一区二区三区91| 国产一区二区三区在线观看免费 | 26uuu国产一区二区三区| 91麻豆6部合集magnet| 国产一区二区三区在线观看精品 | 国产成人av一区二区三区在线 | 依依成人精品视频| 国产午夜精品久久| 日韩欧美中文字幕公布| 欧美视频一区在线| 91碰在线视频| 丁香婷婷综合激情五月色| 老司机午夜精品| 日韩不卡在线观看日韩不卡视频| 亚洲免费av高清| 亚洲特级片在线| 国产精品视频免费看| 国产午夜三级一区二区三| 日韩欧美国产麻豆| 日韩亚洲国产中文字幕欧美| 欧美最新大片在线看| 在线免费观看视频一区| 91免费精品国自产拍在线不卡| 丁香婷婷综合五月| 成人免费av网站| 成人一级片在线观看| 成人精品一区二区三区四区 | 51久久夜色精品国产麻豆| 欧美在线观看视频在线| 一本大道久久a久久综合| 99免费精品视频| 91网上在线视频| 91香蕉视频mp4| 在线精品观看国产| 欧美肥妇bbw| 欧美大尺度电影在线| 欧美第一区第二区| 日韩欧美另类在线| 久久精品一区二区三区四区 | 欧美精品粉嫩高潮一区二区| 欧美日韩亚洲高清一区二区| 欧美酷刑日本凌虐凌虐| 在线电影欧美成精品| 日韩免费高清视频| 久久久久久亚洲综合| 亚洲国产精品成人综合| 亚洲美女视频在线| 亚洲观看高清完整版在线观看| 日本午夜精品一区二区三区电影| 美女www一区二区| 成人在线视频一区| 91黄色激情网站| 欧美老肥妇做.爰bbww视频| 欧美一卡2卡三卡4卡5免费| 精品乱人伦小说| 亚洲欧美偷拍另类a∨色屁股| 亚洲成人手机在线| 国产一区二区精品久久99| 成人性生交大片免费看视频在线| 色香蕉成人二区免费| 日韩欧美中文字幕制服| 国产精品卡一卡二| 日韩经典中文字幕一区| 国产精品夜夜爽| 欧美日韩卡一卡二| 国产日韩欧美麻豆| 日日夜夜一区二区| 成人精品一区二区三区四区| 69久久夜色精品国产69蝌蚪网| 久久久久久影视| 午夜激情久久久| 成人开心网精品视频| 欧美一卡2卡3卡4卡| 亚洲同性gay激情无套| 国产资源在线一区| 欧美疯狂性受xxxxx喷水图片| 国产精品久久久久久久久快鸭| 日本午夜一本久久久综合| 91在线精品一区二区| 久久久久九九视频| 天使萌一区二区三区免费观看| 成人丝袜高跟foot| 精品精品欲导航| 亚洲午夜免费视频| 91看片淫黄大片一级| 国产日韩欧美a| 蜜臀精品久久久久久蜜臀| 日本乱人伦一区| 中文字幕一区av| 国产永久精品大片wwwapp| 69堂成人精品免费视频| 亚洲猫色日本管| av综合在线播放| 久久久精品国产免费观看同学| 偷拍亚洲欧洲综合| 欧美色综合影院| 玉米视频成人免费看| 91在线无精精品入口| 国产三级久久久| 国产高清亚洲一区| 欧美xxx久久| 麻豆视频观看网址久久| 337p亚洲精品色噜噜噜| 亚洲国产你懂的| 欧美日韩专区在线| 亚洲午夜日本在线观看| 在线精品视频免费观看| 亚洲美女精品一区| 欧洲一区二区三区在线| 一卡二卡欧美日韩| 欧美日韩一区精品| 亚洲chinese男男1069| 欧美老女人第四色| 日日夜夜精品视频免费| 日韩午夜小视频|