パッケージ org.opengion.fukurou.util

## クラス TagBuffer

- java.lang.Object
- - org.opengion.fukurou.util.TagBuffer

-     public final class TagBuffer
      extends Object

  TagBuffer.java は、共通的に使用される 簡易タグ作成クラスです。 ここでは、４つの形式(TAG , CSS , JSON , ARRAY )をサポートします。 TAG形式: BODYなし <tag key1="val1" key2="val2" ･･･/> BODYあり <tag key1="val1" key2="val2" ･･･>body</tag> CSS形式: { key1:val1; key2:val2; ･･･ } JSON形式: 文字 { "key1":"val1", "key2":"val2", ･･･ } 数値 { "key1":num1 , "key2":num2 , ･･･ } ARRAY形式: 文字 [ "val1", "val2", ･･･ ] 数値 [ num1 , num2 , ･･･ ] これらの形式は、#startTag( String ) , #startCss( String ) , #startJson() , #startArray() メソッドで始まり、#make() で、完了します。 完了とは、内部の StringBuilder に書き込まれることを意味しますので、再び、 startXXX()メソッドから始めることが可能です。 つまり、一つのインスタンスに、TAGやCSSをまとめて追記していくことが出来ます。 最後に、#toString() メソッドで、内部の StringBuilder を文字列として返します。 TagBuffer クラスの中身を全面的に見直しています。また、過去のTagBufferと互換性を取るための メソッドも残していますが、順次、削除していく予定です。 もっと高度な機能が必要であれば、`Attributes` をご参照ください。
  変更履歴:
    7.0.1.0 (2018/10/15) 新規作成
  機能分類
    ユーティリティ
  バージョン
    7.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK8.0,

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

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `TagBuffer()` | デフォルトコンストラクター
    `TagBuffer​(String name)` | タグ名を指定した、タグ構築用のコンストラクター これは、TagBuffer クラスとの互換性の為に用意されたコンストラクターです。

  - ### メソッドの概要

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `TagBuffer` | `add​(String val)` | データの登録エリアのバッファに直接値を追加します。
    `TagBuffer` | `add​(String[] keys, String[] vals)` | キー配列と値配列のセットを、追加します。
    `TagBuffer` | `add​(String key, String val)` | キーと値のセットを、追加します。
    `TagBuffer` | `add​(String key, String val, boolean isUse)` | キーと値のセットを、追加します（データ形式 ARRAY以外有効）。
    `TagBuffer` | `addBody​(String... vals)` | データの BODY部のバッファに直接値を追加します（データ形式 TAGのみ有効）。
    `TagBuffer` | `addBody​(String val, boolean isUse)` | データの BODY部のバッファに直接値を追加します（データ形式 TAGのみ有効）。
    `TagBuffer` | `addBuffer​(String... vals)` | データ本体のバッファに直接値を追加します。
    `TagBuffer` | `addBuffer​(String val, boolean isUse)` | データ本体のバッファに直接値を追加します。
    `TagBuffer` | `addNum​(String... vals)` | データの登録エリアに、数値型として値を追加します（データ形式 ARRAYのみ有効）。
    `TagBuffer` | `addNum​(String val, boolean isUse)` | データの登録エリアに、数値型として値を追加します（データ形式 ARRAYのみ有効）。
    `TagBuffer` | `addOptions​(String... vals)` | データの登録エリアのバッファに直接値を追加します。
    `TagBuffer` | `addOptions​(String val, boolean isUse)` | データの登録エリアのバッファに直接値を追加します。
    `TagBuffer` | `addStr​(String... vals)` | データの登録エリアに、文字型として値を追加します（データ形式 ARRAYのみ有効）。
    `TagBuffer` | `addStr​(String val, boolean isUse)` | データの登録エリアに、文字型として値を追加します（データ形式 ARRAYのみ有効）。
    `TagBuffer` | `clear()` | 内部データのバッファをすべてクリアします。
    `TagBuffer` | `make()` | 整形されたデータ文字列を 作成します。
    `String` | `makeTag()` | 内部データの文字列を返します。
    `String` | `makeTag​(int rowNo, String val)` | 行番号付きのタグの 整形された文字列を 作成します。
    `TagBuffer` | `startArray()` | ARRAY形式のデータ作成を宣言します。
    `TagBuffer` | `startCss​(String name)` | CSS形式のデータ作成を宣言します。
    `TagBuffer` | `startJson()` | JSON形式のデータ作成を宣言します。
    `TagBuffer` | `startTag​(String name)` | TAG形式のデータ作成を宣言します。
    `String` | `toAfter()` | TAG形式のデータの、BODY＋終了タグの文字列を作成して返します。
    `String` | `toBefore()` | TAG形式のデータの、要素部分(BODYの直前まで)の文字列を作成して返します。
    `String` | `toString()` | 内部データの文字列を返します。

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

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

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

    - #### TagBuffer

          public TagBuffer()

      デフォルトコンストラクター

    - #### TagBuffer

          public TagBuffer​(String name)

      タグ名を指定した、タグ構築用のコンストラクター これは、TagBuffer クラスとの互換性の為に用意されたコンストラクターです。
      パラメータ:
        `name` - タグの名前

  - ### メソッドの詳細

    - #### startTag

          public TagBuffer startTag​(String name)

      TAG形式のデータ作成を宣言します。 TAG形式: BODYなし <tag key1="val1" key2="val2" ･･･/> BODYあり <tag key1="val1" key2="val2" ･･･>body</tag>
      パラメータ:
        `name` - タグの名前
      戻り値:
        自分自身
      このメソッドは、nullを返しません

    - #### startCss

          public TagBuffer startCss​(String name)

      CSS形式のデータ作成を宣言します。 CSS形式: { key1:val1; key2:val2; ･･･ }
      パラメータ:
        `name` - CSSのセレクター
      戻り値:
        自分自身
      このメソッドは、nullを返しません

    - #### startJson

          public TagBuffer startJson()

      JSON形式のデータ作成を宣言します。 JSON形式: 文字 { "key1":"val1", "key2":"val2", ･･･ } 数値 { "key1":num1 , "key2":num2 , ･･･ }
      戻り値:
        自分自身
      このメソッドは、nullを返しません

    - #### startArray

          public TagBuffer startArray()

      ARRAY形式のデータ作成を宣言します。 ARRAY形式: 文字 [ "val1", "val2", ･･･ ] 数値 [ num1 , num2 , ･･･ ]
      戻り値:
        自分自身
      このメソッドは、nullを返しません

    - #### addBuffer

          public TagBuffer addBuffer​(String... vals)

      データ本体のバッファに直接値を追加します。 指定の可変長文字列は、何の加工も無く、' '(スペース)で区切られて、直接追加されます。 データ形式以外の文字列を前後、間に追記したい場合に、都度呼びます。 引数が null や、空文字列の場合は、何もしません。
      パラメータ:
        `vals` - データ本体のバッファに直接追加する可変長文字列
      戻り値:
        自分自身
      関連項目:
        `addBuffer( String , boolean )`
      このメソッドは、nullを返しません

    - #### addBuffer

          public TagBuffer addBuffer​(String val,
                                     boolean isUse)

      データ本体のバッファに直接値を追加します。 指定の文字列は、何の加工も無く、' '(スペース)で区切られて、直接追加されます。 データ形式以外の文字列を前後、間に追記したい場合に、都度呼びます。 引数が null や、空文字列の場合は、何もしません。
      パラメータ:
        `val` - データ本体のバッファに直接追加する文字列
        `isUse` - 追加処理を行うかどうかの判定(true:処理する/false:処理しない)
      戻り値:
        自分自身
      関連項目:
        `addBuffer( String... )`
      このメソッドは、nullを返しません

    - #### add

          public TagBuffer add​(String val)

      データの登録エリアのバッファに直接値を追加します。 これは、TagBuffer クラスとの互換性の為に用意されたメソッドです。 近い将来、削除します。
      パラメータ:
        `val` - データの登録エリアのバッファに直接追加する文字列
      戻り値:
        自分自身
      関連項目:
        `addBody( String... )`
      このメソッドは、nullを返しません

    - #### addOptions

          public TagBuffer addOptions​(String... vals)

      データの登録エリアのバッファに直接値を追加します。 指定の可変長文字列は、何の加工も無く、' '(スペース)で区切られて、直接追加されます。 これは、データ生成中のバッファに対して、追加を行います。 例えば、外部で、タグやCSSのデータ形式を作成済みで、その文字列を追記するなどです。 引数が null や、空文字列の場合は、何もしません。
      パラメータ:
        `vals` - データの登録エリアのバッファに直接追加する可変長文字列
      戻り値:
        自分自身
      関連項目:
        `addOptions( String... )`
      このメソッドは、nullを返しません

    - #### addOptions

          public TagBuffer addOptions​(String val,
                                      boolean isUse)

      データの登録エリアのバッファに直接値を追加します。 指定の文字列は、何の加工も無く、' '(スペース)で区切られて、直接追加されます。 これは、データ生成中のバッファに対して、追加を行います。 例えば、外部で、タグやCSSのデータ形式を作成済みで、その文字列を追記するなどです。 引数が null や、空文字列の場合は、何もしません。
      パラメータ:
        `val` - データの登録エリアのバッファに直接追加する文字列
        `isUse` - 追加処理を行うかどうかの判定(true:処理する/false:処理しない)
      戻り値:
        自分自身
      関連項目:
        `addOptions( String... )`
      このメソッドは、nullを返しません

    - #### addBody

          public TagBuffer addBody​(String... vals)

      データの BODY部のバッファに直接値を追加します（データ形式 TAGのみ有効）。 指定の可変長文字列は、何の加工も無く、' '(スペース)で区切られて、直接追加されます。 これは、データの BODY部のバッファに対して、追加を行います。 BODY部は、タグのbody として使用されているデータで、BODY有り無しの判定は、 このデータが登録されたかどうかで判定しています。 引数が null の場合は、何もしません。
      パラメータ:
        `vals` - データのBODY部のバッファに直接追加する可変長文字列
      戻り値:
        自分自身
      関連項目:
        `addOptions( String... )`
      このメソッドは、nullを返しません

    - #### addBody

          public TagBuffer addBody​(String val,
                                   boolean isUse)

      データの BODY部のバッファに直接値を追加します（データ形式 TAGのみ有効）。 指定の文字列は、何の加工も無く、' '(スペース)で区切られて、直接追加されます。 これは、データの BODY部のバッファに対して、追加を行います。 BODY部は、タグのbody として使用されているデータで、BODY有り無しの判定は、 このデータが登録されたかどうかで判定しています。 引数が null や、空文字列の場合は、何もしません。
      パラメータ:
        `val` - データのBODY部のバッファに直接追加する文字列
        `isUse` - 追加処理を行うかどうかの判定(true:処理する/false:処理しない)
      戻り値:
        自分自身
      関連項目:
        `addOptions( String... )`
      このメソッドは、nullを返しません

    - #### addNum

          public TagBuffer addNum​(String... vals)

      データの登録エリアに、数値型として値を追加します（データ形式 ARRAYのみ有効）。 データが、数値型の場合、ダブルコーテーションは付けません。 指定の可変長文字列は、何の加工も無く、endStr(終端連結時文字)で区切られて、追加されます。 ARRAY形式のみ有効なので、endStrは、',' になります。 データが、null の場合、endStr(終端連結時文字)のみが、追加されますので、 データの個数は、変わりません。 最後に必ず、endStr(終端連結時文字)が付きます。
      パラメータ:
        `vals` - データの登録エリアに、数値型として追加する可変長文字列
      戻り値:
        自分自身
      関連項目:
        `addNum( String,boolean )`
      このメソッドは、nullを返しません

    - #### addNum

          public TagBuffer addNum​(String val,
                                  boolean isUse)

      データの登録エリアに、数値型として値を追加します（データ形式 ARRAYのみ有効）。 データが、数値型の場合、ダブルコーテーションは付けません。 指定の文字列は、何の加工も無く、endStr(終端連結時文字)で区切られて、追加されます。 ARRAY形式のみ有効なので、endStrは、',' になります。 データが、null の場合、endStr(終端連結時文字)のみが、追加されます。 最後に必ず、endStr(終端連結時文字)が付きます。
      パラメータ:
        `val` - データの登録エリアに、数値型として追加する文字列
        `isUse` - 追加処理を行うかどうかの判定(true:処理する/false:処理しない)
      戻り値:
        自分自身
      関連項目:
        `addNum( String... )`
      このメソッドは、nullを返しません

    - #### addStr

          public TagBuffer addStr​(String... vals)

      データの登録エリアに、文字型として値を追加します（データ形式 ARRAYのみ有効）。 データが、文字型の場合、ダブルコーテーションを付けて登録します。 指定の可変長文字列は、何の加工も無く、endStr(終端連結時文字)で区切られて、追加されます。 ARRAY形式のみ有効なので、endStrは、',' になります。 データが、null の場合、""（空文字列）と、endStr(終端連結時文字)が、追加されますので、 データの個数は、変わりません。 最後に必ず、endStr(終端連結時文字)が付きます。
      パラメータ:
        `vals` - データの登録エリアに、文字型として追加する可変長文字列
      戻り値:
        自分自身
      関連項目:
        `addStr( String,boolean )`
      このメソッドは、nullを返しません

    - #### addStr

          public TagBuffer addStr​(String val,
                                  boolean isUse)

      データの登録エリアに、文字型として値を追加します（データ形式 ARRAYのみ有効）。 データが、文字型の場合、ダブルコーテーションを付けて登録します。 指定の文字列は、何の加工も無く、endStr(終端連結時文字)で区切られて、追加されます。 ARRAY形式のみ有効なので、endStrは、',' になります。 データが、null の場合、""（空文字列）と、endStr(終端連結時文字)が、追加されます。 最後に必ず、endStr(終端連結時文字)が付きます。
      パラメータ:
        `val` - データの登録エリアに、文字型として追加する文字列
        `isUse` - 追加処理を行うかどうかの判定(true:処理する/false:処理しない)
      戻り値:
        自分自身
      関連項目:
        `addStr( String... )`
      このメソッドは、nullを返しません

    - #### add

          public TagBuffer add​(String key,
                               String val)

      キーと値のセットを、追加します。 key が nullか、ゼロ文字列の場合は、なにもしません。 val が null の場合は、なにもしません。 val が、ゼロ文字列の場合は、追加します val に、ダブルコーテーション(")が含まれている場合は、属性値をシングルコーテーション でくくります。 両方含まれている場合は、シングルコーテーションをエスケープ文字(&#39;)に変換します。
      パラメータ:
        `key` - 属性キー(nullか、ゼロ文字列の場合は、なにもしません)
        `val` - 属性値 (null の場合は、なにもしない)
      戻り値:
        自分自身
      関連項目:
        `add( String , String , boolean )`
      このメソッドは、nullを返しません

    - #### add

          public TagBuffer add​(String[] keys,
                               String[] vals)

      キー配列と値配列のセットを、追加します。 これは、配列の数だけ、#add( boolean , String , String ) を呼び出して処理を行います。 個々の配列内のkey,valは、先のメソッドの規約に従います。 キー配列と値配列のサイズが異なる場合や、配列が null の場合は、何もしません。 （ｴﾗｰではなく何もしないのでご注意ください。）
      パラメータ:
        `keys` - 属性キー配列
        `vals` - 属性値配列
      戻り値:
        自分自身
      関連項目:
        `add( String , String , boolean )`
      このメソッドは、nullを返しません

    - #### add

          public TagBuffer add​(String key,
                               String val,
                               boolean isUse)

      キーと値のセットを、追加します（データ形式 ARRAY以外有効）。 key が nullか、ゼロ文字列の場合は、なにもしません。 val が null の場合は、なにもしません。 val が、ゼロ文字列の場合は、追加します isUse が、false の場合は、なにもしません。 val に、ダブルコーテーション(")が含まれている場合は、属性値をシングルコーテーション でくくります。 両方含まれている場合は、シングルコーテーションをエスケープ文字(&#39;)に変換します。 isUse に、false を指定すると、属性は追加しません。これは、if( isUse ) { tagBuf.add( key,val ); } の様な判定処理を、tagBuf.add( key,val,isUse ); とすることで、StringBuilderの様に、連結して使用できます。 値 に、ダブルコーテーション(")が含まれている場合は、属性値をシングルコーテーション でくくります。 両方含まれている場合は、シングルコーテーションをエスケープ文字に変換します。
      パラメータ:
        `key` - 属性キー(nullか、ゼロ文字列の場合は、なにもしません)
        `val` - 属性値 (null の場合は、なにもしない)
        `isUse` - 属性を追加かどうかを決めるフラグ(true:追加する/false:何もしない)
      戻り値:
        自分自身
      関連項目:
        `add( String , String )`
      このメソッドは、nullを返しません

    - #### make

          public TagBuffer make()

      整形されたデータ文字列を 作成します。 このメソッドは、startXXX で開始さえたデータ形式に応じて、データ本体のバッファに追記します。 一連のデータ作成処理は、この、#make() メソッドで終了します。 その後、startXXX を呼び出すことで、新しいデータ形式の作成を開始できます。
      戻り値:
        自分自身
      このメソッドは、nullを返しません

    - #### toBefore

          public String toBefore()

      TAG形式のデータの、要素部分(BODYの直前まで)の文字列を作成して返します。 これは、TAG形式で、BODY部分が、別途処理が必要な場合、要素部分まで作成したい場合に使用します。 また、TAG形式以外の場合は、データの登録エリアのバッファをそのまま文字列にして返します。 この処理を実行すると、内部のすべてのバッファがクリアされます。 唯一、nameや、区切り文字情報は残っていますので、続きから、BODY の登録や、次のタグの登録が可能です。 最後は、#toAfter() メソッドを実行すれば、タグとしての形式を保つことが可能です。
      戻り値:
        要素部分(BODYの直前まで)の文字列
      関連項目:
        `toAfter()`
      このメソッドは、nullを返しません

    - #### toAfter

          public String toAfter()

      TAG形式のデータの、BODY＋終了タグの文字列を作成して返します。 通常は、#toBefore() を呼んだ後に、最後に実行するメソッドです。 この処理を実行すると、内部のすべてのバッファがクリアされます。
      戻り値:
        要素部分(BODYの直前まで)の文字列
      関連項目:
        `toBefore()`
      このメソッドは、nullを返しません

    - #### clear

          public TagBuffer clear()

      内部データのバッファをすべてクリアします。 内部データには、データ登録バッファ、データBODY部バッファ、データ本体バッファと ３種類のバッファを持っています。 この、３種類のバッファすべてをクリアします。
      戻り値:
        自分自身
      このメソッドは、nullを返しません

    - #### toString

          public String toString()

      内部データの文字列を返します。 データ本体のバッファを文字列に変換して返します。 これは、#make() か、#tagBefore() を実行後に行います。そうしないと、 データが設定されていません。 この処理を行っても、データはクリアされないため、再び処理を行うことが可能です。 中間のデータを確認する場合や、最後にデータを取り出す場合に利用します。
      オーバーライド:
        `toString` クラス内 `Object`
      戻り値:
        データ本体の文字列

    - #### makeTag

          public String makeTag()

      内部データの文字列を返します。 return tagBuf.make().toString(); と同じ結果を返します。 これは、TagBuffer クラスとの互換性の為に用意されたメソッドです。 内部にキャッシュとして持つため、最初に一度実行すると、以降、同じ値しか返されません。
      戻り値:
        データ本体の文字列

    - #### makeTag

          public String makeTag​(int rowNo,
                                String val)

      行番号付きのタグの 整形された文字列を 作成します。 内部データから生成された文字列に含まれる、[I] に、行番号を、 [V] に、設定値を埋め込みます。 これは、TagBuffer クラスとの互換性の為に用意されたメソッドです。 内部にキャッシュとして持つため、最初に一度実行すると、以降、同じ値しか返されません。 逆に、何度実行しても、内部変数は書き換えられませんので、 行番号と、設定値を替えて、連続で呼ぶことが可能です。
      パラメータ:
        `rowNo` - 行番号([I] 文字列を変換します)
        `val` - 設定値([V] 文字列を変換します)
      戻り値:
        行番号と設定値が置き換えられた文字列