パッケージ 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) 新規作成
機能分類
  ユーティリティ
導入されたバージョン:
  JDK8.0,

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

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

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `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] 文字列を変換します)
    戻り値:
      行番号と設定値が置き換えられた文字列