パッケージ org.opengion.hayabusa.html

## クラス TableFormatter

- java.lang.Object
- - org.opengion.hayabusa.html.TableFormatter

-     public class TableFormatter
      extends Object

  [PN],[OYA] などの [] で指定されたカラムで表されたフォーマットデータに対して、 DBTableModelオブジェクトを適用して 各カラムに実データを割り当てるオブジェクトです。 特に、[XXXX]に対して、[#XXXX]、[$XXXX]、[$XXXX]などの特殊記号が使用できます。 特殊記号の解釈は、HTMLFormatTextField系とHTMLFormatTable系で異なりますので ご注意ください。
  変更履歴:
    3.5.4.0 (2003/11/25) 新規追加
  機能分類
    画面表示
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドの概要

    フィールド
    修飾子とタイプ | フィールド | 説明
    --- | --- | ---
    `static String` | `HYBS_ITD_MARKER` | フォーマットタイプの指定の特殊なマーク "h_itd_marker"

  - ### コンストラクタの概要

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `TableFormatter()` | デフォルトコンストラクター

  - ### メソッドの概要

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `String` | `getFormat()` | フォーマットを取得します。
    `String` | `getFormat​(int no)` | フォーマット文字列を返します。
    `FormatterType` | `getFormatType()` | このフォーマットのタイプを返します。
    `String` | `getItdBody()` | itdフォーマット文字列を取得します。
    `int` | `getLocation​(int no)` | カラムのロケーション番号を返します。
    `int` | `getLocationSize()` | ロケーション番号のサイズを返します。
    `IntStream` | `getLocationStream()` | カラムのロケーション番号をIntStreamで返します。
    `String` | `getRowspan()` | 設定された rowspan を返します。
    `String` | `getSystemFormat​(int row, int loc)` | システムフォーマット文字列を返します。
    `String` | `getTrTag()` | 設定された フォーマットの trタグを返します。
    `char` | `getType​(int no)` | タイプ文字列を返します。
    `boolean` | `isNoClass()` | カラムのクラス名(X,S9 など)のセットを行うかどうか取得します。
    `boolean` | `isUse​(int row, DBTableModel table)` | このフォーマットを使用するかどうかの問い合わせを返します。
    `void` | `makeFormat​(DBTableModel table)` | DBTableModelを利用して、フォーマットデータを初期化します。
    `void` | `setFormat​(String fmt)` | フォーマットをセットします。
    `void` | `setFormat​(String fmt, boolean flag)` | フォーマットをセットします。
    `void` | `setFormatType​(FormatterType ftype)` | テーブルフォーマットのタイプを指定します。
    `void` | `setItdBody​(String itd)` | itdフォーマット文字列を設定します。
    `void` | `setKeyBreakClm​(String kclm)` | ここで指定したカラムの値が、キーブレイクした場合、このタグを使用します。
    `void` | `setNoClass​(String flag)` | カラムのクラス名(X,S9 など)のセットを行うかどうか指定します。
    `protected void` | `setNoDisplay​(int no)` | 指定のロケーション番号の値をクリアします。
    `void` | `setRowspan​(String rowspan)` | テーブルの rowspan 属性をセットします。
    `void` | `setUsableKey​(String key)` | フォーマットの使用可否を判断するキーとなるカラム名を指定します。
    `void` | `setUsableList​(String list)` | フォーマットの使用可否を判断する文字列リストを指定します。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### フィールドの詳細

    - #### HYBS_ITD_MARKER

          public static final String HYBS_ITD_MARKER

      フォーマットタイプの指定の特殊なマーク "h_itd_marker"
      関連項目:
        定数フィールド値

  - ### コンストラクタの詳細

    - #### TableFormatter

          public TableFormatter()

      デフォルトコンストラクター
      変更履歴:
        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### setFormat

          public void setFormat​(String fmt,
                                boolean flag)

      フォーマットをセットします。 フォーマットに、<table>を含む場合、TextField扱いなので、フォーマット分割 しません。table を含まず、tr を含む場合は、１行分のデータとして扱う為、 trTag を求めます。 trTag と format との間に、行ヘッダーが入ります。 Tomcat6では、JSPのパース時に、tabやspaceはそのままパースされるため、</td>前 のスペース削除処理も行います。
      パラメータ:
        `fmt` - [カラム名] 形式のフォーマットデータ
        `flag` - falseにすると先頭のtrタグを取る処理を行いません(5.5.0.3)
      変更履歴:
        4.3.2.0 (2008/09/10) </td>前のスペースを取り消します。, 5.5.0.3 (2012/03/13) <tr>を取らないフラグ追加

    - #### setFormat

          public void setFormat​(String fmt)

      フォーマットをセットします。 フォーマットに、<table>を含む場合、TextField扱いなので、フォーマット分割 しません。table を含まず、tr を含む場合は、１行分のデータとして扱う為、 trTag を求めます。 trTag と format との間に、行ヘッダーが入ります。 Tomcat6では、JSPのパース時に、tabやspaceはそのままパースされるため、</td>前 のスペース削除処理も行います。
      パラメータ:
        `fmt` - [カラム名] 形式のフォーマットデータ
      変更履歴:
        5.5.0.3 (2012/03/13) 引数追加につき。

    - #### getFormat

          public String getFormat()

      フォーマットを取得します。
      戻り値:
        フォーマットデータ
      変更履歴:
        3.5.5.8 (2004/05/20) 新規追加, 5.1.7.0 (2010/06/01) サニタイズ戻し処理("\\]\\"から"["に戻し)を追加

    - #### makeFormat

          public void makeFormat​(DBTableModel table)

      DBTableModelを利用して、フォーマットデータを初期化します。
      パラメータ:
        `table` - DBTableModelオブジェクト
      変更履歴:
        3.5.5.0 (2004/03/12) [KEY.カラム名] 機能追加, 3.5.5.2 (2004/04/02) [I] で、行番号を作成します。, 3.5.6.0 (2004/06/18) '!' 値のみ 追加 既存の '$' は、レンデラー, 3.6.0.0 (2004/09/17) [ROW.ID] で、行毎のチェックボックスのIDを返します。, 5.1.7.0 (2010/06/01) サニタイズ戻し処理("\\]\\"から"["に戻し)を追加, 5.7.6.3 (2014/05/23) キーブレイクをチェックする keyBreakClm 属性追加, 6.4.3.4 (2016/03/11) Formatterに新しいコンストラクターを追加する。

    - #### setFormatType

          public void setFormatType​(FormatterType ftype)

      テーブルフォーマットのタイプを指定します。 enum FormatterType で、指定します。
      パラメータ:
        `ftype` - フォーマットのタイプ
      変更履歴:
        4.0.0.0 (2007/05/02) enum 定義に変更

    - #### getFormatType

          public FormatterType getFormatType()

      このフォーマットのタイプを返します。 このフォーマットのタイプを返します。
      戻り値:
        このフォーマットのタイプを返します。
      変更履歴:
        4.0.0.0 (2007/05/02) enum 定義に変更

    - #### setRowspan

          public void setRowspan​(String rowspan)

      テーブルの rowspan 属性をセットします。 rowspan は、ヘッダー部のフォーマットの行数です。初期値は ２行 です。 設定は、"2" などの、数字部のみをセットします。
      パラメータ:
        `rowspan` - 属性

    - #### getRowspan

          public String getRowspan()

      設定された rowspan を返します。 これは、フォーマットの段組の数を取り出します。 文字列としては、rowspan="2" という形で取り出します。
      戻り値:
        フォーマット文字列

    - #### getLocationSize

          public int getLocationSize()

      ロケーション番号のサイズを返します。 フォーム位置番号は、0 から getLocationSize()-1 までの数字を指定します。 ロケーションサイズは、aaa[ABC]bbb[DEF]ccc[GHI]ddd となっている場合、 aaa , bbb , ccc , ddd は、フォーマットで、サイズは４。 ABC , DEF , GHI に対応するカラム番号がロケーションで、サイズは３。 このメソッドで返すのは、ロケーション番号(３)の方です。
      戻り値:
        ロケーション番号のサイズ
      変更履歴:
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)

    - #### getLocation

          public int getLocation​(int no)

      カラムのロケーション番号を返します。 引数は、0 から、getLocationSize()-1 までの数で指定します。 指定の位置の、フォーマットのカラム名に対応するロケーション番号 を返します。
      パラメータ:
        `no` - フォーム位置番号
      戻り値:
        ロケーション番号
      変更履歴:
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)

    - #### getLocationStream

          public IntStream getLocationStream()

      カラムのロケーション番号をIntStreamで返します。 指定の位置の、フォーマットのカラム名に対応するロケーション番号のIntStreamです。
      戻り値:
        内部のLocation配列を、IntStreamで返します。
      変更履歴:
        6.4.3.4 (2016/03/11) 内部のLocation配列を、IntStreamで返します。

    - #### setNoDisplay

          protected void setNoDisplay​(int no)

      指定のロケーション番号の値をクリアします。 ただし、直前のフォーマットに、td タグが存在する場合は、 style="display:none;" を設定することで、td タグそのものが 無くなります。 その場合、段組みなどのレイアウトを行っていると、フォーマットが 崩れますので、十分ご確認ください。 また、同一 td 内に複数のカラムを指定した場合は、tdタグ内のすべての カラムが消えます。 td タグが存在しない場合は、非表示というより、データを空に するだけになります。
      パラメータ:
        `no` - フォーム位置番号
      変更履歴:
        6.2.0.0 (2015/02/27) フォーマット系の noDisplay 対応, 6.2.0.1 (2015/03/06) 非表示のマーカーに、Formatter#NO_DISPLAY を使用する。, 6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)

    - #### getFormat

          public String getFormat​(int no)

      フォーマット文字列を返します。 引数は、0 から、getLocationSize() までの数で指定します。 指定のフォーマットが、aaa[ABC]bbb[DEF]ccc[GHI]ddd となっている場合、 aaa , bbb , ccc , ddd を引数 0 , 1 , 2 , 3 で返します。
      パラメータ:
        `no` - フォーム位置番号
      戻り値:
        フォーマット文字列
      変更履歴:
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)

    - #### getSystemFormat

          public String getSystemFormat​(int row,
                                        int loc)

      システムフォーマット文字列を返します。 システムフォーマット文字列は、[KEY.カラム名] などの特殊記号で指定された カラム名の事で、location には、マイナスの値が設定されます。 マイナスの値に応じて、処理を変えることが出来ます。 [KEY.カラム名] : 行番号付きカラム名 [I] : 行番号 [J] : 登録数 7.3.1.3 (2021/03/09) ※ ただし、ここでは登録件数が判らないため、行番号を返しておきます。 [ROW.ID] : 行毎のチェックボックスのID [ROW.JSON] : 行毎の全データのJavaScriptオブジェクト形式
      パラメータ:
        `row` - 行番号
        `loc` - 位置番号
      戻り値:
        フォーマット文字列
      変更履歴:
        3.5.5.0 (2004/03/12) [KEY.カラム名] 機能追加, 3.5.5.2 (2004/04/02) [I] で、行番号を作成します。, 3.6.0.0 (2004/09/17) [ROW.ID] で、行毎のチェックボックスのIDを返します。, 4.0.0.0 (2007/05/02) Formatter を使用するように変更, 6.2.0.1 (2015/03/06) 非表示のマーカーに、Formatter#NO_DISPLAY を使用する。, 6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs), 7.3.1.3 (2021/03/09) [J] で、登録件数(1～) を表現する。
      このメソッドは、nullを返しません

    - #### getType

          public char getType​(int no)

      タイプ文字列を返します。 タイプとは、[XXX] の記述で、[#XXX] は、XXXカラムのラベルを、[$XXX]は、XXXカラムの レンデラーを、[!XXX} は、値のみ取り出す指定を行います。 主に、TextField系のフォーマットとTable系では、意味合いが異なりますので、 ご注意ください。
      パラメータ:
        `no` - フォーム位置番号
      戻り値:
        タイプ文字列 '#':ラベルのみ '$':レンデラー '!':値のみ その他:通常
      変更履歴:
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)

    - #### getTrTag

          public String getTrTag()

      設定された フォーマットの trタグを返します。 これは、trタグにclass属性他の設定がされていた場合に、変換後の 文字列にも反映させる為に必要です。
      戻り値:
        フォーマットの trタグ
      変更履歴:
        5.1.7.0 (2010/06/01) サニタイズ戻し処理("\\]\\"から"["に戻し)を追加
      このメソッドは、nullを返しません

    - #### setNoClass

          public void setNoClass​(String flag)

      カラムのクラス名(X,S9 など)のセットを行うかどうか指定します。 "true" で、クラス属性を設定しません。これは、ＣＳＳファイルに書かれている属性を 使用しないことを意味します。 初期値は、"false" です。
      パラメータ:
        `flag` - クラス名使用の有無(true:使用しない/false:使用する。)

    - #### isNoClass

          public boolean isNoClass()

      カラムのクラス名(X,S9 など)のセットを行うかどうか取得します。 "true" で、クラス属性を設定しません。これは、ＣＳＳファイルに書かれている属性を 使用しないことを意味します。 初期値は、"false" です。
      戻り値:
        クラス名使用の有無(true:使用しない/false:使用する。)

    - #### setUsableKey

          public void setUsableKey​(String key)

      フォーマットの使用可否を判断するキーとなるカラム名を指定します。 キーが、usableList に含まれる場合は、このフォームを使用できます。 キー(カラム名)が指定されない場合は、常に使用されます。 ※ 現時点では、BODYタイプのみ使用しています。
      パラメータ:
        `key` - フォーマットの使用可否を判断するカラム名

    - #### setUsableList

          public void setUsableList​(String list)

      フォーマットの使用可否を判断する文字列リストを指定します。 キーが、この文字列リスト中に存在する場合は、このフォームを使用できます。 この文字列リストは、固定な文字列です。{@XXXX}は使用できますが、[XXXX]は 使用できません。 初期値は、"1" です。 ※ 現時点では、BODYタイプのみ使用しています。
      パラメータ:
        `list` - フォーマットの使用可否を判断する文字列リスト
      関連項目:
        `isUse( int,DBTableModel )`

    - #### setKeyBreakClm

          public void setKeyBreakClm​(String kclm)

      ここで指定したカラムの値が、キーブレイクした場合、このタグを使用します。 キーブレイクで 使用可否を指定する為の機能です。 この設定値は、usableKey,usableList とは、独立しているため、それぞれで 有効になれば、使用されると判断されます。 キーブレイク判定では、最初の1件目は、必ず使用されると判断されます。
      パラメータ:
        `kclm` - キーブレイクをチェックするカラムID
      変更履歴:
        5.7.6.3 (2014/05/23) 新規追加

    - #### isUse

          public boolean isUse​(int row,
                               DBTableModel table)

      このフォーマットを使用するかどうかの問い合わせを返します。 "true" で、使用します。setUsableKey( String ) で、指定された カラム名の値が、setUsableList( String ) で指定された文字列に含まれていれば、 使用します。カラム名がセットされない場合は、デフォルト値("true")が使用されます。 ※ 現時点では、BODYタイプのみ使用しています。 カラムのデータに、不正なスペースが入る場合を想定して、trim() しています。 よって、usableList の値にスペースは使用できません。 5.7.6.3 (2014/05/23) 以降は、keyBreakClm によるキーブレイクチェックも追加されました。 従来の usableKey,usableList とは、独立しているため、それぞれで有効になれば、 使用されると判断されます。
      パラメータ:
        `row` - 行番号
        `table` - DBTableModelオブジェクト
      戻り値:
        このフォームを使用するかどうか(true:使用する/false:使用しない)
      関連項目:
        `setUsableKey( String )`, `setUsableList( String )`
      変更履歴:
        3.5.6.2 (2004/07/05) 判定評価用カラムの値を trim() します。, 5.7.6.3 (2014/05/23) キーブレイクをチェックする keyBreakClm 属性追加

    - #### setItdBody

          public void setItdBody​(String itd)

      itdフォーマット文字列を設定します。 itd ボディ部の文字列を指定します。 itd ボディは、繰り返し処理を行います。これを、上位のボディ文字列の中の HYBS_ITD_MARKER 文字列 と置き換えます。
      パラメータ:
        `itd` - itdフォーマットの文字列
      変更履歴:
        3.5.6.0 (2004/06/18) itdフォーマット文字列の取り込み

    - #### getItdBody

          public String getItdBody()

      itdフォーマット文字列を取得します。 itd ボディ部の文字列を取得します。 itd ボディは、繰り返し処理を行います。これを、上位のボディ文字列の中の HYBS_ITD_MARKER 文字列 と置き換えます。
      戻り値:
        itdフォーマットの文字列
      変更履歴:
        3.5.6.0 (2004/06/18) itdフォーマット文字列の取り込み