BlockingQueue とスレッド(3)

これらをiBATIS2 のSqlMapClient を実行するようなキュースレッド、
キューデータは、SQLMap 記述のID 等、そして Google guice で立ち上げることを考えると。。。

public class SqlOperation implements Comparable<SqlOperation>{
   public String sqlID;
   public SqlOpe type;
   public Object obj;
    :
}
--------------------------------
public enum SqlOpe{
   Insert
   ,Update
   ,Delete
}
--------------------------------
public abstract class SqlOpeCatcher extends QueCatcher<SqlOperation>{
   :
を用意、

// SqlOpeCatcher実装を用意
public class SampleSqlOpeCatcher extends SqlOpeCatcher{
   @Inject
   public SampleSqlOpeCatcher(int readMax,long interruptCycle,SqlMapClient sqlmapclient){
      super(readMax,interruptCycle,sqlmapclient);
   }

   @Override
   public abstract void success(){
       :
   }
   @Override
   public abstract void failed(){
       :
   }
}
----------------------------------
// guice でインジェクト
Injector injecttor = Guice.createInjector(new AbstractModule(){
         // readMax,interruptCycle,SqlMapClient インジェクト定義
     }
);
BlockingQueue<SqlOperation>  bque = new LinkedBlockingQueue<SqlOperation>();
QueContoroller qctl = QueContoroller.getInstance();
qctl.start(bque
           ,"sqlope"
           ,new QueEndProvider<SqlOperation>(){
               @Override
               public SqlOperation endElement(){
                   // キュー処理終了させる為のメソッド
                   return new SqlOperation(){};
               }
            }
           ,injector.getInstance(SampleSqlOpeCatcher.class)
           );

// SQLMap 記述 ID="uptem" を実行
bque.put(new SqlOperation("upitem",SqlOpe.Update,"33"));