クラス 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()
      デフォルトコンストラクター
    • フィールドの詳細

      • 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 を含む場合は、1行分のデータとして扱う為、 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 を含む場合は、1行分のデータとして扱う為、 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行 です。 設定は、"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 は、フォーマットで、サイズは4。 ABC , DEF , GHI に対応するカラム番号がロケーションで、サイズは3。 このメソッドで返すのは、ロケーション番号(3)の方です。
        戻り値:
        ロケーション番号のサイズ
        変更履歴:
        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" で、クラス属性を設定しません。これは、CSSファイルに書かれている属性を 使用しないことを意味します。 初期値は、"false" です。
        パラメータ:
        flag - クラス名使用の有無(true:使用しない/false:使用する。)
      • isNoClass

        public boolean isNoClass()
        カラムのクラス名(X,S9 など)のセットを行うかどうか取得します。 "true" で、クラス属性を設定しません。これは、CSSファイルに書かれている属性を 使用しないことを意味します。 初期値は、"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フォーマット文字列の取り込み