jp.terasoluna.fw.batch.controlbreak
クラス ControlBreakDef

java.lang.Object
  上位を拡張 jp.terasoluna.fw.batch.controlbreak.ControlBreakDef

public class ControlBreakDef
extends java.lang.Object

コントロールブレイク定義情報。

ユーザが定義するコントロールブレイクのブレイクキー、ハンドラ情報を格納するクラス。

コントロールブレイクはチャンクコントロールブレイクを定義しなくても使用可能であるが、 チャンクコントロールブレイクを定義した場合、チャンクコントロールブレイクの範囲を超えることはできない。

トランスチャンクコントロールブレイクを使用するにはチャンクコントロールブレイクを定義する必要がある。またチャンクコントロールブレイクキーの項目はトランスチャンクコントロールブレイクキー の項目を含むように定義にする必要がある。

設定例を以下に示す。

◎ブレークキー設定許可例
チャンクコントロールブレイク ・トランスチャンクコントロールブレイク ・コントロールブレイクの別種類のコントロールブレイクに同一ブレイクキーは設定可能
   <!-- チャンクコントロールブレイク設定 -->
   <bean id="chunkControlBreakDefItem"
       class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
       <property name="breakKey">
           <list>
               <value>AAA</value>
               <value>BBB</value>
               <value>CCC</value>
           </list>
       </property>
       <property name="controlBreakHandler">
               <bean class="jp.terasoluna……XXXControlBreakHandler"/>
       </property>
   </bean>
   <!-- トランスチャンクコントロールブレイク設定 -->
   <util:list id="transChunkControlBreakDefItemList">
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                          <value>AAA</value>
                          <value>BBB</value>
                          <value>CCC</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……YYYControlBreakHandler"/>
                   </property>
               </bean>
   </util:list>   
   <!-- コントロールブレイク設定 -->
   <util:list id="controlBreakDefItemList">
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                           <value>AAA</value>
                           <value>BBB</value>
                           <value>CCC</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……ZZZControlBreakHandler"/>
                   </property>
               </bean>
   </util:list>
   
トランスチャンクコントロールブレイクはチャンクコントロールブレイクの定義が必要。チャンクコントロールブレイクはトランスチャンクコントロールブレークより下位であること。
   <!-- チャンクコントロールブレイク設定 -->
   <bean id="chunkControlBreakDefItem"
       class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
       <property name="breakKey">
           <list>
               <value>AAA</value>
               <value>BBB</value>
               <value>CCC</value>
           </list>
       </property>
       <property name="controlBreakHandler">
               <bean class="jp.terasoluna……XXXControlBreakHandler"/>
       </property>
   </bean>
   <!-- トランスチャンクコントロールブレイク設定 -->
   <util:list id="transChunkControlBreakDefItemList">
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                          <value>AAA</value>
                          <value>BBB</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……YYYControlBreakHandler"/>
                   </property>
               </bean>
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                          <value>AAA</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……ZZZControlBreakHandler"/>
                   </property>
               </bean>
   </util:list>   
   
チャンクコントロールブレイクを定義した場合、コントロールブレイクはチャンクコントロールブレークより下位であること。
   <!-- チャンクコントロールブレイク設定 -->
   <bean id="chunkControlBreakDefItem"
       class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
       <property name="breakKey">
           <list>
               <value>AAA</value>
               <value>BBB</value>
               <value>CCC</value>
           </list>
       </property>
       <property name="controlBreakHandler">
               <bean class="jp.terasoluna……XXXControlBreakHandler"/>
       </property>
   </bean>
   <!-- コントロールブレイク設定 -->
   <util:list id="controlBreakDefItemList">
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                           <value>AAA</value>
                           <value>BBB</value>
                           <value>CCC</value>
                           <value>DDD</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……YYYControlBreakHandler"/>
                   </property>
               </bean>
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                           <value>AAA</value>
                           <value>BBB</value>
                           <value>CCC</value>
                           <value>DDD</value>
                           <value>EEE</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……ZZZControlBreakHandler"/>
                   </property>
               </bean>
   </util:list>
   

次に設定不可例を以下に示す。

×ブレークキー設定不可例
ブレイクキー内に同一項目は不可
   <!-- チャンクコントロールブレイク設定 -->
   <bean id="chunkControlBreakDefItem"
       class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
       <property name="breakKey">
           <list>
               <value>AAA</value>
               <value>AAA</value>
               <value>BBB</value>
           </list>
       </property>
       <property name="controlBreakHandler">
               <bean class="jp.terasoluna……XXXControlBreakHandler"/>
       </property>
   </bean>
  
トランスチャンクコントロールブレイクまたはコントロールブレイクの複数定義において同一ブレイクキーを複数定義することは不可
   <!-- コントロールブレイク設定 -->
   <util:list id="controlBreakDefItemList">
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                          <value>AAA</value>
                          <value>BBB</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……YYYControlBreakHandler"/>
                   </property>
               </bean>
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                           <value>AAA</value>
                           <value>BBB</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……ZZZControlBreakHandler"/>
                   </property>
               </bean>
   </util:list>
   
トランスチャンクコントロールブレイクの複数定義において包含関係でないブレイクキーを定義することは不可
   <!-- チャンクコントロールブレイク設定 -->
   <bean id="chunkControlBreakDefItem"
       class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
       <property name="breakKey">
           <list>
               <value>AAA</value>
               <value>BBB</value>
           </list>
       </property>
       <property name="controlBreakHandler">
               <bean class="jp.terasoluna……XXXControlBreakHandler"/>
       </property>
   </bean>
   <!-- トランスチャンクコントロールブレイク設定 -->
   <util:list id="transChunkControlBreakDefItemList">
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                          <value>BBB</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……YYYControlBreakHandler"/>
                   </property>
               </bean>
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                          <value>AAA</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……ZZZControlBreakHandler"/>
                   </property>
               </bean>
   </util:list>   
   
コントロールブレイクの複数定義において包含関係でないブレイクキーを定義することは不可
   <!-- コントロールブレイク設定 -->
   <util:list id="controlBreakDefItemList">
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                          <value>AAA</value>
                          <value>BBB</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……YYYControlBreakHandler"/>
                   </property>
               </bean>
               <bean class="jp.terasoluna.fw.batch.controlbreak.ControlBreakDefItem">
                   <property name="breakKey">
                       <list>
                           <value>AAA</value>
                           <value>CCC</value>
                       </list>
                   </property>
                   <property name="controlBreakHandler">
                       <bean class="jp.terasoluna……ZZZControlBreakHandler"/>
                   </property>
               </bean>
   </util:list>
   


フィールドの概要
private  ControlBreakDefItem chunkControlBreakDefItem
          チャンクコントロールブレイクの「ブレイクキー、ハンドラ」。
private  java.util.List<ControlBreakDefItem> controlBreakDefItemList
          コントロールブレイクの「ブレイクキー、ハンドラ」リスト。
private static Log log
          ログインスタンス。
private  java.util.List<ControlBreakDefItem> transChunkControlBreakDefItemList
          トランスチャンクコントロールブレイクの「ブレイクキー、ハンドラ」リスト。
 
コンストラクタの概要
ControlBreakDef()
           
 
メソッドの概要
private  void checkNextBreakKeyList(java.util.List<java.lang.String> checkKeyList, java.util.List<java.lang.String> nextKeyList, java.lang.String breakRank)
          ソートされた同種類のコントロールブレイク間でのブレイクキーのチェックを行う。
private  boolean existSameKeyInBreakKeyList(java.util.List<java.lang.String> keyList)
          ブレイクキー内に重複項目があるかチェックを行う。
 ControlBreakDefItem getChunkControlBreakDefItem()
          チャンクコントロールブレイクを取得する。
 java.util.List<ControlBreakDefItem> getControlBreakDefItemList()
          コントロールブレイクリストを取得する。
 ControlBreakHandler<JobContext> getControlBreakHandler(java.util.List<java.lang.String> controlBreakkey)
          コントロールブレイクリストからコントロールブレイクハンドラを取得する。
 java.util.List<ControlBreakDefItem> getTransChunkControlBreakDefItemList()
          トランスチャンクコントロールブレイクリストを取得する。
 ControlBreakHandler<JobContext> getTransChunkControlBreakHandler(java.util.List<java.lang.String> transChunkControlBreakkey)
          トランスチャンクコントロールブレイクリストからコントロールブレイクハンドラを取得する。
 void init()
          初期化処理。
private  boolean isOutOfRelativeBreakRange(java.util.List<java.lang.String> largeBreakRangeKeyList, java.util.List<java.lang.String> smallBreakRangeKeyList)
          ブレイク範囲が包含関係でないかチェックを行う。
 void setChunkControlBreakDefItem(ControlBreakDefItem chunkControlBreakDefItem)
          チャンクコントロールブレイクを設定する。
 void setControlBreakDefItemList(java.util.List<ControlBreakDefItem> controlBreakDefItemList)
          コントロールブレイクリストを設定する。
 void setTransChunkControlBreakDefItemList(java.util.List<ControlBreakDefItem> transChunkControlBreakDefItemList)
          トランスチャンクコントロールブレイクリストを設定する。
private  java.lang.String showBreakList(java.util.List<java.lang.String> keyList)
          (デバッグ用)ブレイクキーの項目内容を表示。
private  void sortControlBreakDefItemListByBreakKeyCount(java.util.List<ControlBreakDefItem> itemList)
          コントロールブレイク定義リストをブレイクキーの項目数にて降順(下位順)にソートを行う。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

log

private static final Log log
ログインスタンス。


controlBreakDefItemList

private java.util.List<ControlBreakDefItem> controlBreakDefItemList
コントロールブレイクの「ブレイクキー、ハンドラ」リスト。 (コントロールブレイク範囲:小)


chunkControlBreakDefItem

private ControlBreakDefItem chunkControlBreakDefItem
チャンクコントロールブレイクの「ブレイクキー、ハンドラ」。 (コントロールブレイク範囲:中)


transChunkControlBreakDefItemList

private java.util.List<ControlBreakDefItem> transChunkControlBreakDefItemList
トランスチャンクコントロールブレイクの「ブレイクキー、ハンドラ」リスト。 (コントロールブレイク範囲:大)

コンストラクタの詳細

ControlBreakDef

public ControlBreakDef()
メソッドの詳細

init

public final void init()

初期化処理。

ジョブBean定義ファイルに定義されたコントロールブレイクのブレイクキーの 設定内容をチェックし、不正があればInitializeExceptionを発生させ処理を中断する。
複数のコントロールブレイクが存在する場合、起動順序である下位順に保持する。

チェック内容を以下に示す。
      *
  • チャンクコントロールブレイク
    • ブレークキー内に重複項目が存在していないか
  • トランスチャンクコントロールブレイク
    • チャンクコントロールブレイクが存在するか
    • ブレークキー内に重複項目が存在していないか
    • ブレイク範囲がチャンクコントロールブレイク範囲を包含しているか(同一ブレイクキー可能)
    • 複数定義されたトランスチャンクコントロールブレイクに包含関係があるか(同一ブレイクキー不可)
  • コントロールブレイク
    • ブレークキー内に重複項目が存在していないか
    • チャンクコントロールブレイクが存在する場合ブレイク範囲がチャンクコントロールブレイク範囲を包含しているか(同一ブレイクキー可能)
    • 複数定義されたコントロールブレイクに包含関係があるか(同一ブレイクキー不可)


sortControlBreakDefItemListByBreakKeyCount

private void sortControlBreakDefItemListByBreakKeyCount(java.util.List<ControlBreakDefItem> itemList)
コントロールブレイク定義リストをブレイクキーの項目数にて降順(下位順)にソートを行う。

パラメータ:
itemList - コントロールブレイク定義リスト

existSameKeyInBreakKeyList

private boolean existSameKeyInBreakKeyList(java.util.List<java.lang.String> keyList)
ブレイクキー内に重複項目があるかチェックを行う。

パラメータ:
keyList - ブレークキー
戻り値:
boolean 重複キー項目がある場合true

checkNextBreakKeyList

private void checkNextBreakKeyList(java.util.List<java.lang.String> checkKeyList,
                                   java.util.List<java.lang.String> nextKeyList,
                                   java.lang.String breakRank)
ソートされた同種類のコントロールブレイク間でのブレイクキーのチェックを行う。

パラメータ:
checkKeyList - チェック対象のブレイクキー(項目数多)
nextKeyList - チェック対象の次に上位にセットされたブレイクキー(項目数少)
breakRank - コントロールブレイクの種類
例外:
InitializeException - コントロールブレイクの包含関係が不正の場合

isOutOfRelativeBreakRange

private boolean isOutOfRelativeBreakRange(java.util.List<java.lang.String> largeBreakRangeKeyList,
                                          java.util.List<java.lang.String> smallBreakRangeKeyList)
ブレイク範囲が包含関係でないかチェックを行う。
コントロールブレイク範囲の小さい下位のブレイクキー(項目数多)に コントロールブレイク範囲の大きい上位のブレイクキー(項目数少)の項目が 1つでも欠けていれば包含関係は成立しない。

パラメータ:
largeBreakRangeKeyList - 上位のブレイクキー(項目数少)
smallBreakRangeKeyList - 下位のブレイクキー(項目数多)
戻り値:
boolean コントロールブレイク範囲の包含関係に不正がある場合true

getChunkControlBreakDefItem

public ControlBreakDefItem getChunkControlBreakDefItem()
チャンクコントロールブレイクを取得する。

戻り値:
チャンクコントロールブレイク

setChunkControlBreakDefItem

public void setChunkControlBreakDefItem(ControlBreakDefItem chunkControlBreakDefItem)
チャンクコントロールブレイクを設定する。

パラメータ:
chunkControlBreakDefItem - チャンクコントロールブレイク

getControlBreakDefItemList

public java.util.List<ControlBreakDefItem> getControlBreakDefItemList()
コントロールブレイクリストを取得する。

戻り値:
コントロールブレイクリスト

setControlBreakDefItemList

public final void setControlBreakDefItemList(java.util.List<ControlBreakDefItem> controlBreakDefItemList)
コントロールブレイクリストを設定する。

パラメータ:
controlBreakDefItemList - コントロールブレイクリスト

getTransChunkControlBreakDefItemList

public java.util.List<ControlBreakDefItem> getTransChunkControlBreakDefItemList()
トランスチャンクコントロールブレイクリストを取得する。

戻り値:
トランスチャンクコントロールブレイクリスト

setTransChunkControlBreakDefItemList

public final void setTransChunkControlBreakDefItemList(java.util.List<ControlBreakDefItem> transChunkControlBreakDefItemList)
トランスチャンクコントロールブレイクリストを設定する。

パラメータ:
transChunkControlBreakDefItemList - トランスチャンクコントロールブレイクリスト

getTransChunkControlBreakHandler

public ControlBreakHandler<JobContext> getTransChunkControlBreakHandler(java.util.List<java.lang.String> transChunkControlBreakkey)
トランスチャンクコントロールブレイクリストからコントロールブレイクハンドラを取得する。

パラメータ:
transChunkControlBreakkey - トランスチャンクコントロールブレイクキー
戻り値:
トランスチャンクコントロールブレイクハンドラ

getControlBreakHandler

public ControlBreakHandler<JobContext> getControlBreakHandler(java.util.List<java.lang.String> controlBreakkey)
コントロールブレイクリストからコントロールブレイクハンドラを取得する。

パラメータ:
controlBreakkey - コントロールブレイクキー
戻り値:
コントロールブレイクハンドラ

showBreakList

private java.lang.String showBreakList(java.util.List<java.lang.String> keyList)
(デバッグ用)ブレイクキーの項目内容を表示。

パラメータ:
keyList - ブレイクキー
戻り値:
String ブレイクキーの項目内容