// Path: cango-instance/src/main/java/com/bella/cango/instance/oracle/common/lifecycle/AbstractYuGongLifeCycle.java
// public abstract class AbstractYuGongLifeCycle implements YuGongLifeCycle {
// 
//     protected final Logger logger = LoggerFactory.getLogger(this.getClass());
//     protected volatile boolean running = false;                                   // 是否处于运行中
// 
//     public boolean isStart() {
//         return running;
//     }
// 
//     public void start() {
//         if (running) {
//             return;
//         }
// 
//         running = true;
//     }
// 
//     public void stop() {
//         if (!running) {
//             return;
//         }
// 
//         running = false;
//     }
// 
//     public void abort(String why, Throwable e) {
//         logger.error("abort caused by " + why, e);
//         stop();
//     }
// 
//     public boolean isStop() {
//         return !isStart();
//     }
// 
// }
// 
// Path: cango-instance/src/main/java/com/bella/cango/instance/oracle/common/model/ExtractStatus.java
// public enum ExtractStatus {
//     /**
//      * 正常提取
//      */
//     NORMAL,
//     /**
//      * 追上
//      */
//     CATCH_UP,
//     /**
//      * 无变更
//      */
//     NO_UPDATE,
//     /**
//      * 处理结束
//      */
//     TABLE_END;
// }


import com.bella.cango.instance.oracle.common.lifecycle.AbstractYuGongLifeCycle;
import com.bella.cango.instance.oracle.common.model.ExtractStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
package com.bella.cango.instance.oracle.extractor;


/**
 * @author agapple 2014年2月25日 下午11:38:06
 * @since 1.0.0
 */
public abstract class AbstractRecordExtractor extends AbstractYuGongLifeCycle implements RecordExtractor {

    protected final Logger logger = LoggerFactory.getLogger(this.getClass());

// Path: cango-instance/src/main/java/com/bella/cango/instance/oracle/common/lifecycle/AbstractYuGongLifeCycle.java
// public abstract class AbstractYuGongLifeCycle implements YuGongLifeCycle {
// 
//     protected final Logger logger = LoggerFactory.getLogger(this.getClass());
//     protected volatile boolean running = false;                                   // 是否处于运行中
// 
//     public boolean isStart() {
//         return running;
//     }
// 
//     public void start() {
//         if (running) {
//             return;
//         }
// 
//         running = true;
//     }
// 
//     public void stop() {
//         if (!running) {
//             return;
//         }
// 
//         running = false;
//     }
// 
//     public void abort(String why, Throwable e) {
//         logger.error("abort caused by " + why, e);
//         stop();
//     }
// 
//     public boolean isStop() {
//         return !isStart();
//     }
// 
// }
// 
// Path: cango-instance/src/main/java/com/bella/cango/instance/oracle/common/model/ExtractStatus.java
// public enum ExtractStatus {
//     /**
//      * 正常提取
//      */
//     NORMAL,
//     /**
//      * 追上
//      */
//     CATCH_UP,
//     /**
//      * 无变更
//      */
//     NO_UPDATE,
//     /**
//      * 处理结束
//      */
//     TABLE_END;
// }


// Path: cango-instance/src/main/java/com/bella/cango/instance/oracle/extractor/AbstractRecordExtractor.java
import com.bella.cango.instance.oracle.common.lifecycle.AbstractYuGongLifeCycle;
import com.bella.cango.instance.oracle.common.model.ExtractStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

package com.bella.cango.instance.oracle.extractor;


/**
 * @author agapple 2014年2月25日 下午11:38:06
 * @since 1.0.0
 */
public abstract class AbstractRecordExtractor extends AbstractYuGongLifeCycle implements RecordExtractor {

    protected final Logger logger = LoggerFactory.getLogger(this.getClass());

    protected volatile ExtractStatus status = ExtractStatus.NORMAL;