    001/*
    002 * Copyright (c) 2009 The openGion Project.
    003 *
    004 * Licensed under the Apache License, Version 2.0 (the "License");
    005 * you may not use this file except in compliance with the License.
    006 * You may obtain a copy of the License at
    007 *
    008 *     http://www.apache.org/licenses/LICENSE-2.0
    009 *
    010 * Unless required by applicable law or agreed to in writing, software
    011 * distributed under the License is distributed on an "AS IS" BASIS,
    012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    013 * either express or implied. See the License for the specific language
    014 * governing permissions and limitations under the License.
    015 */
    016package org.opengion.hayabusa.taglib;
    017
    018import org.opengion.fukurou.util.TagBuffer;
    019import org.opengion.fukurou.util.ToString;                                              // 6.1.1.0 (2015/01/17)
    020
    021import static org.opengion.fukurou.util.StringUtil.nval ;               // 6.1.0.0 (2014/12/26)
    022
    023/**
    024 * ガントチャートの繰り返しタグのフォーマットに使用します。
    025 *
    026 * iGanttBar タグは、TDタグの繰返し部に記述することで、個々のガントのタスクを作成します。
    027 * これを使用する場合は、iGant タグを全体に一つ指定する必要があります。
    028 *
    029 * @og.formSample
    030 * ●形式：&lt;og:iGanttBar  ... /&gt;
    031 * ●body：なし
    032 * ●前提：headタグで、adjustEvent="Gantt" を指定してください。
    033 *
    034 * ●Tag定義：
    035 *   &lt;og:iGanttBar
    036 *       type       ○ 【TAG】ガント要素のタイプ（0:マイルストーン 1:バー ）(必須)
    037 *       color         【TAG】バーの色（マイルストーンの場合は不要）
    038 *       colorNo       【TAG】バーの色番号で指定します
    039 *       src           【TAG】マイルストーンのアイコン画像(URIより設定)
    040 *       start         【TAG】開始日(YYYYMMDD)、または開始時間(YYYYMMDDHH24MM)
    041 *       end           【TAG】終了日(YYYYMMDD)、または終了時間(YYYYMMDDHH24MM)
    042 *       text          【TAG】ガント要素の注釈メッセージ。
    043 *       href          【TAG】入力した場合はガントにリンクを付加します。
    044 *       target        【TAG】hrefを指定した場合に付加されるリンクのターゲット
    045 *       barLink       【TAG】hrefで付加されるリンクの範囲にバー本体を含めるかどうか[true/false]を指定します(初期値:false)
    046 *       startInput    【廃止】(startDateInputと同じ)ガント要素の開始日に紐付く入力欄（開始日または終了日に紐付く入力欄が設定しなければガント要素は動かせない）
    047 *       endInput      【廃止】(endDateInputと同じ)ガント要素の終了日に紐付く入力欄（開始日または終了日に紐付く入力欄が設定しなければガント要素は動かせない）
    048 *       chbox         【廃止】6.9.9.2 (2018/09/18) 行選択のチェックボックス 設定値：[ROW.ID]
    049 *       startDateInput【TAG】6.9.9.0 (2018/08/20) 開始日付の入力欄のｶﾗﾑ名を指定します。
    050 *       startTimeInput【TAG】6.9.9.0 (2018/08/20) 開始時刻の入力欄のｶﾗﾑ名を指定します。
    051 *       endDateInput  【TAG】6.9.9.0 (2018/08/20) 終了日付の入力欄のｶﾗﾑ名を指定します。
    052 *       endTimeInput  【TAG】6.9.9.0 (2018/08/20) 終了時刻の入力欄のｶﾗﾑ名を指定します。
    053 *       moveStep      【TAG】6.9.9.2 (2018/09/18) ガントバーの移動歩幅単位（moveStep 1:日、2:時間、3:分）
    054 *       fixed         【TAG】6.9.9.2 (2018/09/18) 固定2分割するｶﾗﾑを指定します。
    055 *       mStone        【TAG】6.9.9.2 (2018/09/18) マイルストーンｶﾗﾑを指定します。
    056 *       balloon       【TAG】6.9.9.2 (2018/09/18) バルーンとして表示するカラムを指定します。
    057 *       keyInfo       【TAG】6.9.9.2 (2018/09/18) キー情報のカラムを、指定します。
    058 *       writable      【TAG】6.9.9.2 (2018/09/18) writable属性のカラムを指定します。
    059 *       report        【TAG】6.9.9.2 (2018/09/18) レポートカラムを指定します。
    060 *       zindex        【TAG】6.9.9.2 (2018/09/18) 表示の重なり順のカラムを指定します。
    061 *       id            【TAG】要素を一意に指定する値を指定します。(ガント要素を動かす際に指定)
    062 *       cost          【TAG】開始日、終了日を利用して積上げられる工数を指定します。
    063 *       capacity      【TAG】積上げの最大値（キャパシティ）を指定します。
    064 *       debug         【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
    065 *   /&gt;
    066 *
    067 * ●使用例
    068 *   (通常ガント)
    069 *  &lt;og:view
    070 *      viewFormType = "HTMLCustomTable"
    071 *      command      = "{&#064;command}"
    072 *      writable     = "false"
    073 *      useScrollBar = "false"
    074 *  &gt;
    075 *    &lt;og:thead rowspan="2"&gt;
    076 *      &lt;tr&gt;
    077 *          &lt;td&gt;[NOORDER]&lt;/td&gt;
    078 *          &lt;td rowspan="2" class="gantt zoom{&#064;VZOOM}" style="line-height:normal;text-align:left;background-image: url('../image/ganttBG{&#064;VZOOM}.gif');" &gt;
    079 *              &lt;div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" &gt;
    080 *                  &lt;og:ganttHeader
    081 *                      startDate       = "{&#064;startDate}"
    082 *                      endDate         = "{&#064;endDate}"
    083 *                      zoom            = "{&#064;VZOOM}"
    084 *                      daySpan         = "{&#064;daySpan}"
    085 *                  /&gt;
    086 *              &lt;/div&gt;
    087 *          &lt;/td&gt;
    088 *      &lt;/tr&gt;
    089 *    &lt;/og:thead&gt;
    090 *    &lt;og:tbody rowspan="2"&gt;
    091 *      &lt;tr&gt;
    092 *          &lt;td&gt;[NOORDER]&lt;/td&gt;
    093 *          &lt;td rowspan="2" class="gantt zoom{&#064;VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{&#064;VZOOM}.gif');" &gt;
    094 *              &lt;og:iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]" text="[PN]" /&gt;
    095 *              &lt;og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]"      text="開始" /&gt;
    096 *              &lt;og:iGanttBar type="0" src="../image/dia_red.gif"  end="[DYNOKI]"         text="終了" /&gt;
    097 *          &lt;/td&gt;
    098 *      &lt;/tr&gt;
    099 *    &lt;/og:tbody&gt;
    100 *  &lt;/og:view&gt;
    101 *
    102 *   &lt;og:iGantt
    103 *       margeRows      = "true"
    104 *       fixedCols      = "1"
    105 *   /&gt;
    106 *
    107 *   (積み上げガント)
    108 *  &lt;og:view
    109 *      viewFormType = "HTMLStackedGanttTable"
    110 *      command      = "{&#064;command}"
    111 *      writable     = "false"
    112 *      useScrollBar = "false"
    113 *      useParam     = "true"
    114 *      numberType   = "none"
    115 *  &gt;
    116 *  &lt;og:stackParam
    117 *      stackColumns = "NOORDER"
    118 *  /&gt;
    119 *
    120 *    &lt;og:thead rowspan="2"&gt;
    121 *      &lt;tr&gt;
    122 *          &lt;td&gt;[NOORDER]&lt;/td&gt;
    123 *          &lt;td&gt;[PN]&lt;/td&gt;
    124 *          &lt;td rowspan="2" class="gantt zoom{&#064;SZOOM}" style="text-align:left;background-image: url('../image/ganttBG{&#064;SZOOM}.gif');" &gt;
    125 *              &lt;div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" &gt;
    126 *                  &lt;og:ganttHeader
    127 *                      startDate   = "{&#064;startDate}"
    128 *                      endDate     = "{&#064;endDate}"
    129 *                      zoom        = "{&#064;SZOOM}"
    130 *                      calDB       = "GE13"
    131 *                      arg1        = "A"
    132 *                  /&gt;
    133 *              &lt;/div&gt;
    134 *          &lt;/td&gt;
    135 *      &lt;/tr&gt;
    136 *    &lt;/og:thead&gt;
    137 *    &lt;og:tbody rowspan="2"&gt;
    138 *      &lt;tr&gt;
    139 *          &lt;td&gt;[NOORDER]&lt;/td&gt;
    140 *          &lt;td&gt;[PN]&lt;/td&gt;
    141 *          &lt;td rowspan="2" class="gantt zoom{&#064;VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{&#064;VZOOM}.gif');" &gt;
    142 *              &lt;iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]"  text="[COSTCLM]"
    143 *                    cost="[COSTCLM]" capacity="[CAPACITY]" /&gt;
    144 *              &lt;og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]"      text="開始" /&gt;
    145 *          &lt;/td&gt;
    146 *      &lt;/tr&gt;
    147 *    &lt;/og:tbody&gt;
    148 *  &lt;/og:view&gt;
    149 *
    150 *   &lt;og:iGantt
    151 *       margeRows      = "true"
    152 *       fixedCols      = "1"
    153 *       verticalShift  = "false"
    154 *       viewGantt      = "{&#064;viewGantt}"
    155 *       stackHoliday   = "{&#064;stackHoliday}"
    156 *       useBgColor     = "true"
    157 *       viewMode       = "2"
    158 *   /&gt;
    159 *
    160 * @og.rev 5.6.3.2 (2013/04/12) 新規作成
    161 * @og.group 画面部品
    162 *
    163 * @version  5.0
    164 * @author       Kazuhiko Hasegawa
    165 * @since    JDK6.0,
    166 */
    167public class ViewIGanttBarTag extends CommonTagSupport {
    168        /** このプログラムのVERSION文字列を設定します。   {@value} */
    169        private static final String VERSION = "6.9.9.2 (2018/09/18)" ;
    170        private static final long serialVersionUID = 699220180918L ;
    171
    172        private transient TagBuffer tag = new TagBuffer( "iGanttBar" ).addBody( "<!-- -->" );           // 6.1.1.0 (2015/01/17) TagBufferの連結記述
    173
    174        /**
    175         * デフォルトコンストラクター
    176         *
    177         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    178         */
    179        public ViewIGanttBarTag() { super(); }          // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。
    180
    181        /**
    182         * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    183         *
    184         * @og.rev 6.0.2.5 (2014/10/31) HTML5対応。javaScriptで、BODYがないと入れ子になってしまう。
    185         *
    186         * @return      後続処理の指示
    187         */
    188        @Override
    189        public int doEndTag() {
    190                debugPrint();           // 4.0.0 (2005/02/28)
    191
    192                // 6.1.1.0 (2015/01/17) TagBufferの連結記述
    193                jspPrint( tag.makeTag() );
    194
    195                return EVAL_PAGE ;              // ページの残りを評価する。
    196        }
    197
    198        /**
    199         * タグリブオブジェクトをリリースします。
    200         * キャッシュされて再利用されるので、フィールドの初期設定を行います。
    201         *
    202         */
    203        @Override
    204        protected void release2() {
    205                super.release2();
    206                tag = new TagBuffer( "iGanttBar" ).addBody( "<!-- -->" );               // 6.1.1.0 (2015/01/17) TagBufferの連結記述
    207        }
    208
    209        /**
    210         * 【TAG】ガント要素のタイプ[0:ﾏｲﾙｽﾄｰﾝ/1:ﾊﾞｰ]を指定します。
    211         *
    212         * @og.tag
    213         * 0:マイルストーン を指定すると、その日（時間）に、マーカーがされます。
    214         * ガントのような期間ではなく、そのポイントを表すのに使用します。
    215         * 例えば、受注日、納期 などの設定値です。
    216         * start か end どちらかの指定で構いません。
    217         * start を使用した場合は、指定日（時間）の前方に、endを使用した場合は、
    218         * 指定日（時間）の後方にマーカーが置かれます。
    219         *
    220         * @param   type ガント要素のタイプ [0:ﾏｲﾙｽﾄｰﾝ/1:ﾊﾞｰ]
    221         */
    222        public void setType( final String type ) {
    223                tag.add( "type",nval( getRequestParameter( type ),null ) );
    224        }
    225
    226        /**
    227         * 【TAG】ガント要素（バー）の色コードを設定します。
    228         *
    229         * @og.tag
    230         * color は、ガント要素の色コードを設定します。
    231         * type="0:マイルストーン" の場合は不要です。
    232         * このコードは、予め決められた色画像を呼び出しますので、任意の色が使えるという事ではありません。
    233         * 色指定は、横棒の場合は、image/W_色コード.png の画像を使います。
    234         * 色コード と 色番号が同時に指定された場合は、色コード が優先されます。
    235         *
    236         * type=2:差分枠 は、value ＞ baseVal の場合は、超過を、value ＜ baseValの場合は、不足を表します。
    237         * <table border="1" frame="box" rules="all">
    238         *   <caption>色番号 対応表</caption>
    239     *   <tr><th>色番号</th><th>設定値    </th><th>棒色   </th><th>　</th><th>横棒サンプル</th></tr>
    240     *   <tr><td> 0    </td><td>blue      </td><td>青     </td><td> </td><td style="background-image:url(../image/W_blue.png);">   　</td></tr>
    241     *   <tr><td> 1    </td><td>black     </td><td>黒     </td><td> </td><td style="background-image:url(../image/W_black.png);">  　</td></tr>
    242     *   <tr><td> 2    </td><td>brown     </td><td>茶     </td><td> </td><td style="background-image:url(../image/W_brown.png);">  　</td></tr>
    243     *   <tr><td> 3    </td><td>green     </td><td>緑     </td><td> </td><td style="background-image:url(../image/W_green.png);">  　</td></tr>
    244     *   <tr><td> 4    </td><td>lightblue </td><td>薄青   </td><td> </td><td style="background-image:url(../image/W_lightblue.png);"> 　</td></tr>
    245     *   <tr><td> 5    </td><td>lightgreen</td><td>薄緑   </td><td> </td><td style="background-image:url(../image/W_lightgreen.png);"> 　</td></tr>
    246     *   <tr><td> 6    </td><td>orange    </td><td>オレンジ</td><td> </td><td style="background-image:url(../image/W_orange.png);"> 　</td></tr>
    247     *   <tr><td> 7    </td><td>pink      </td><td>ピンク </td><td> </td><td style="background-image:url(../image/W_pink.png);">  　</td></tr>
    248     *   <tr><td> 8    </td><td>purple    </td><td>紫     </td><td> </td><td style="background-image:url(../image/W_purple.png);">  　</td></tr>
    249     *   <tr><td> 9    </td><td>red       </td><td>赤     </td><td> </td><td style="background-image:url(../image/W_red.png);">       　</td></tr>
    250     *   <tr><td> 10   </td><td>yellow    </td><td>黄     </td><td> </td><td style="background-image:url(../image/W_yellow.png);"> 　</td></tr>
    251     *   <tr><td> 11   </td><td>navy      </td><td>濃紺   </td><td> </td><td style="background-image:url(../image/W_navy.png);">  　</td></tr>
    252     *   <tr><td> 12   </td><td>teal      </td><td>青緑   </td><td> </td><td style="background-image:url(../image/W_teal.png);">  　</td></tr>
    253     *   <tr><td> 13   </td><td>gray      </td><td>灰     </td><td> </td><td style="background-image:url(../image/W_gray.png);">    　</td></tr>
    254     *   <tr><td> 14   </td><td>indigo    </td><td>藍     </td><td> </td><td style="background-image:url(../image/W_indigo.png);"> 　</td></tr>
    255     *   <tr><td> 15   </td><td>slategray </td><td>鉄色   </td><td> </td><td style="background-image:url(../image/W_slategray.png);"> 　</td></tr>
    256     *   <tr><td> 16   </td><td>chocorlate</td><td>チョコレート</td><td> </td><td style="background-image:url(../image/W_chocorlate.png);"> 　</td></tr>
    257     *   <tr><td> 17   </td><td>darkgreen </td><td>深緑   </td><td> </td><td style="background-image:url(../image/W_darkgreen.png);"> 　</td></tr>
    258     *   <tr><td> 18   </td><td>violet    </td><td>すみれ </td><td> </td><td style="background-image:url(../image/W_violet.png);"> 　</td></tr>
    259     *   <tr><td> 19   </td><td>darkslategray</td><td>深鉄色</td><td> </td><td style="background-image:url(../image/W_darkslategray.png);"> 　</td></tr>
    260     *   <tr><td> 20   </td><td>lime      </td><td>緑     </td><td> </td><td style="background-image:url(../image/W_lime.png);">    　</td></tr>
    261     *   <tr><td> 21   </td><td>aqua      </td><td>水色   </td><td> </td><td style="background-image:url(../image/W_aqua.png);">  　</td></tr>
    262     *   <tr><td> 22   </td><td>maroon    </td><td>ひわだいろ</td><td> </td><td style="background-image:url(../image/W_maroon.png);"> 　</td></tr>
    263     *   <tr><td> 23   </td><td>olive     </td><td>オリーブ</td><td> </td><td style="background-image:url(../image/W_olive.png);">  　</td></tr>
    264     *   <tr><td> 24   </td><td>silver    </td><td>銀     </td><td> </td><td style="background-image:url(../image/W_silver.png);"> 　</td></tr>
    265     *   <tr><td> 25   </td><td>fuchsia   </td><td>赤紫   </td><td> </td><td style="background-image:url(../image/W_fuchsia.png);"> 　</td></tr>
    266     *   <tr><td colspan="6"> </td></tr>
    267     *   <tr><td> BK   </td><td>black2    </td><td>黒     </td><td> </td><td style="background-image:url(../image/W_black2.png);"> 　</td></tr>
    268     *   <tr><td> WT   </td><td>white2    </td><td>白     </td><td> </td><td style="background-image:url(../image/W_white2.png);"> 　</td></tr>
    269     *   <tr><td> BL   </td><td>blue2     </td><td>青     </td><td> </td><td style="background-image:url(../image/W_blue2.png);">   　</td></tr>
    270     *   <tr><td> RD   </td><td>red2      </td><td>赤     </td><td> </td><td style="background-image:url(../image/W_red2.png);">   　</td></tr>
    271     *   <tr><td> YL   </td><td>yellow2   </td><td>黄     </td><td> </td><td style="background-image:url(../image/W_yellow2.png);"> 　</td></tr>
    272         * </table>
    273         *
    274         * @param   color バー色
    275         */
    276        public void setColor( final String color ) {
    277                tag.add( "color",nval( getRequestParameter( color ),null ) );
    278        }
    279
    280        /**
    281         * 【TAG】グラフ要素の色番号を設定します。
    282         *
    283         * @og.tag
    284         * 色番号は、色コードを直接指定するのではなく、番号で指定する場合に使用します。
    285         * 棒グラフ要素（type="1"(横棒),"6"(縦棒)）の色を設定します。
    286         * "1～25 , BK,WT,BL,RD,YL" の色番号で指定します。
    287         * 色番号は、与えた数字を内部色数で割り算した余を使用しますので、連番の場合でも
    288         * 繰返し使われます。特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号で指定できます。
    289         * 色コード と 色番号が同時に指定された場合は、色コード が優先されます。
    290         *
    291         * @param   clrNo 色番号 [1～25/BK/WT/BL/RD/YL]
    292         * @see         #setColor( String )
    293         */
    294        public void setColorNo( final String clrNo ) {
    295                tag.add( "colorNo",nval( getRequestParameter( clrNo ),null ) );
    296        }
    297
    298        /**
    299         * 【TAG】マイルストーンのアイコン画像(URIより設定)を設定します。
    300         *
    301         * @og.tag
    302         * type="0:マイルストーン" の場合、表示するアイコンイメージの所在を指定します。
    303         * 例："../image/xxx.png"
    304         *
    305         * @param   src アイコン画像
    306         */
    307        public void setSrc( final String src ) {
    308                tag.add( "src",nval( getRequestParameter( src ),null ) );
    309        }
    310
    311        /**
    312         * 【TAG】開始日(YYYYMMDD)、または開始時間(YYYYMMDDHH24MM)を設定します。
    313         *
    314         * @og.tag
    315         * type="1:バー" の場合は、バー表示の場合の書き始め（開始）を指定します。
    316         * この値は、バーでは、「含む」になります。
    317         * type="0:マイルストーン" の場合は、マイルストンを左端に表示します。
    318         *
    319         * @param   start 開始日or開始時間 (YYYYMMDD or YYYYMMDDHH24MM)
    320         * @see         #setType( String )
    321         * @see         #setEnd( String )
    322         */
    323        public void setStart( final String start ) {
    324                tag.add( "start",nval( getRequestParameter( start ),null ) );
    325        }
    326
    327        /**
    328         * 【TAG】終了日(YYYYMMDD)、または終了時間(YYYYMMDDHH24MM)を設定します。
    329         *
    330         * @og.tag
    331         * type="1:バー" の場合は、バー表示の場合の書き終わり（終了）を指定します。
    332         * この値は、日付か時刻かで「含む」/「含まない」が異なります。
    333         * 日付の場合は、この値を「含む」です。例えば、4/12 を指定した場合、4/12は含みます。
    334         * 時刻の場合は、「含まない」です。4/12 070000 を指定した場合は、午前7時は含まないので、
    335         * ６時５９分５９秒までのバーが引かれます。
    336         * type="0:マイルストーン" の場合は、マイルストンを右端に表示します。
    337         *
    338         * @param   end 終了日or終了時間 (YYYYMMDD or YYYYMMDDHH24MM)
    339         * @see         #setType( String )
    340         * @see         #setStart( String )
    341         */
    342        public void setEnd( final String end ) {
    343                tag.add( "end",nval( getRequestParameter( end ),null ) );
    344        }
    345
    346        /**
    347         * 【TAG】バー上に表示するテキストを指定します。
    348         *
    349         * @og.tag
    350         * バーの上に、値などの文字を重ねて表示できます。
    351         *
    352         * @param   text 表示テキスト
    353         */
    354        public void setText( final String text ) {
    355                tag.add( "text",nval( getRequestParameter( text ),null ) );
    356        }
    357
    358        /**
    359         * 【TAG】リンク作成時の値を設定します。
    360         *
    361         * @og.tag
    362         * バーの上の文字に対して、リンクを作成できます。
    363         *
    364         * @param   href リンク
    365         * @see         #setTarget( String )
    366         */
    367        public void setHref( final String href ) {
    368                tag.add( "href",nval( getRequestParameter( href ),null ) );
    369        }
    370
    371        /**
    372         * 【TAG】リンク作成時のターゲット名を指定します。
    373         *
    374         * @og.tag
    375         * バーの上の文字に対して、リンクを作成するときの、ターゲット名を指定できます。
    376         *
    377         * @param   target ターゲット
    378         * @see         #setHref( String )
    379         */
    380        public void setTarget( final String target ) {
    381                tag.add( "target",nval( getRequestParameter( target ),null ) );
    382        }
    383
    384        /**
    385         * 【TAG】hrefで付加されるリンクの範囲にバー本体を含めるかどうか[true/false]を指定します(初期値:false)。
    386         *
    387         * @og.tag
    388         * true を指定すると、hrefで付加されるリンクの範囲にバー本体を含めます。
    389         *
    390         * @param   barLink バー可否 [true:する/false:しない]
    391         * @see         #setHref( String )
    392         */
    393        public void setBarLink( final String barLink ) {
    394                tag.add( "barLink",nval( getRequestParameter( barLink ),null ) );
    395        }
    396
    397//      /**
    398//       * 【廃止】(startDateInputと同じ)ガント要素の開始日に紐付く入力欄を指定します。
    399//       *
    400//       * @og.tag
    401//       * この入力欄がないと、ガント要素は動かせません。
    402//       *
    403//       * @og.rev 5.9.14.1 (2016/11/11) startInputではなくstartDateInut
    404//       * @og.rev 6.9.9.0 (2018/08/20) startDateInput として、用意します。
    405//       *
    406//       * @param   startInput 開始日入力欄
    407//       * @see         #setStart( String )
    408//       */
    409//      public void setStartInput( final String startInput ) {
    410//              tag.add( "startDateInput",nval( getRequestParameter( startInput ),null ) );
    411//      }
    412
    413        /**
    414         * 【TAG】ガント要素の開始日に紐付く入力欄を指定します。
    415         *
    416         * @og.tag
    417         * この入力欄がないと、ガント要素は動かせません。
    418         *
    419         * @og.rev 5.9.14.1 (2016/11/11) startInputではなくstartDateInut
    420         * @og.rev 6.9.9.0 (2018/08/20) startDateInput として、用意します。
    421         *
    422         * @param   startDateInput 開始日入力欄
    423         * @see         #setStart( String )
    424         */
    425        public void setStartDateInput( final String startDateInput ) {
    426                tag.add( "startDateInput",nval( getRequestParameter( startDateInput ),null ) );
    427        }
    428
    429        /**
    430         * 【TAG】ガント要素の開始時刻に紐付く入力欄を指定します。
    431         *
    432         * @og.tag
    433         * ガント要素の開始時刻に紐付く入力欄を指定します。
    434         *
    435         * @og.rev 6.9.9.0 (2018/08/20) startTimeInput として、用意します。
    436         *
    437         * @param   startTimeInput 開始日入力欄
    438         * @see         #setStart( String )
    439         */
    440        public void setStartTimeInput( final String startTimeInput ) {
    441                tag.add( "startTimeInput",nval( getRequestParameter( startTimeInput ),null ) );
    442        }
    443
    444//      /**
    445//       * 【廃止】(endDateInputと同じ)ガント要素の終了日に紐付く入力欄を指定します。
    446//       *
    447//       * @og.tag
    448//       * この入力欄がないと、ガント要素は動かせません。
    449//       *
    450//       * @og.rev 5.9.14.1 (2016/11/11) endInputではなくendDateInut
    451//       * @og.rev 6.9.9.0 (2018/08/20) endDateInput として、用意します。
    452//       *
    453//       * @param   endInput 終了日入力欄
    454//       * @see         #setEnd( String )
    455//       */
    456//      public void setEndInput( final String endInput ) {
    457//              tag.add( "endDateInput",nval( getRequestParameter( endInput ),null ) );
    458//      }
    459
    460        /**
    461         * 【TAG】ガント要素の終了日に紐付く入力欄を指定します。
    462         *
    463         * @og.tag
    464         * この入力欄がないと、ガント要素は動かせません。
    465         *
    466         * @og.rev 5.9.14.1 (2016/11/11) endInputではなくendDateInut
    467         * @og.rev 6.9.9.0 (2018/08/20) endDateInput として、用意します。
    468         *
    469         * @param   endDateInput 終了日入力欄
    470         * @see         #setEnd( String )
    471         */
    472        public void setEndDateInput( final String endDateInput ) {
    473                tag.add( "endDateInput",nval( getRequestParameter( endDateInput ),null ) );
    474        }
    475
    476        /**
    477         * 【TAG】ガント要素の終了時刻に紐付く入力欄を指定します。
    478         *
    479         * @og.tag
    480         * ガント要素の終了時刻に紐付く入力欄を指定します。
    481         *
    482         * @og.rev 6.9.9.0 (2018/08/20) endTimeInput として、用意します。
    483         *
    484         * @param   endTimeInput 終了日入力欄
    485         * @see         #setEnd( String )
    486         */
    487        public void setEndTimeInput( final String endTimeInput ) {
    488                tag.add( "endTimeInput",nval( getRequestParameter( endTimeInput ),null ) );
    489        }
    490
    491        /**
    492         * 【TAG】ガントバーの移動歩幅単位（1:日、2:時間、3:分）を指定します。
    493         *
    494         * @og.tag
    495         * ガントバーの移動歩幅単位（1:日、2:時間、3:分）を指定します。
    496         *
    497         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
    498         *
    499         * @param   moveStep ガントバーの移動歩幅単位（moveStep 1:日、2:時間、3:分）
    500         */
    501        public void setMoveStep( final String moveStep ) {
    502                tag.add( "moveStep",nval( getRequestParameter( moveStep ),null ) );
    503        }
    504
    505        /**
    506         * 【TAG】固定2分割するｶﾗﾑを指定します。
    507         *
    508         * @og.tag
    509         * 固定2分割するｶﾗﾑを指定します。
    510         *
    511         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
    512         *
    513         * @param   fixed 固定2分割するｶﾗﾑ
    514         */
    515        public void setFixed( final String fixed ) {
    516                tag.add( "fixed",nval( getRequestParameter( fixed ),null ) );
    517        }
    518
    519        /**
    520         * 【TAG】マイルストーンｶﾗﾑを指定します。
    521         *
    522         * @og.tag
    523         * マイルストーンｶﾗﾑを指定します。
    524         *
    525         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
    526         *
    527         * @param   mStone 固定2分割するｶﾗﾑ
    528         */
    529        public void setMStone( final String mStone ) {
    530                tag.add( "mStone",nval( getRequestParameter( mStone ),null ) );
    531        }
    532
    533        /**
    534         * 【TAG】バルーンとして表示するカラムを指定します。
    535         *
    536         * @og.tag
    537         * バルーンとして表示するカラムを指定します。
    538         *
    539         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
    540         *
    541         * @param   balloon バルーンとして表示するカラム
    542         */
    543        public void setBalloon( final String balloon ) {
    544                tag.add( "balloon",nval( getRequestParameter( balloon ),null ) );
    545        }
    546
    547        /**
    548         * 【TAG】キー情報のカラムを、指定します。
    549         *
    550         * @og.tag
    551         * キー情報のカラムを、指定します。
    552         *
    553         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
    554         *
    555         * @param   keyInfo キー情報のカラム
    556         */
    557        public void setKeyInfo( final String keyInfo ) {
    558                tag.add( "keyInfo",nval( getRequestParameter( keyInfo ),null ) );
    559        }
    560
    561        /**
    562         * 【TAG】writable属性のカラムを指定します。
    563         *
    564         * @og.tag
    565         * writable属性のカラムを指定します。
    566         *
    567         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
    568         *
    569         * @param   writable writable属性のカラム
    570         */
    571        public void setWritable( final String writable ) {
    572                tag.add( "writable",nval( getRequestParameter( writable ),null ) );
    573        }
    574
    575        /**
    576         * 【TAG】レポートカラムを指定します。
    577         *
    578         * @og.tag
    579         * レポートカラムを指定します。
    580         *
    581         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
    582         *
    583         * @param   report レポートカラム
    584         */
    585        public void setReport( final String report ) {
    586                tag.add( "report",nval( getRequestParameter( report ),null ) );
    587        }
    588
    589        /**
    590         * 【TAG】表示の重なり順のカラムを指定します。
    591         *
    592         * @og.tag
    593         * 表示の重なり順のカラムを指定します。
    594         *
    595         * @og.rev 6.9.9.2 (2018/09/18) 新規追加。
    596         *
    597         * @param   zindex 表示の重なり順のカラム
    598         */
    599        public void setZindex( final String zindex ) {
    600                tag.add( "zindex",nval( getRequestParameter( zindex ),null ) );
    601        }
    602
    603//      /**
    604//       * 【TAG】行選択のチェックボックスを指定します。
    605//       *
    606//       * @og.tag
    607//       * 例えば、[ROW.ID] を指定する事で、選択行を指定する事ができます。
    608//       *
    609//       * @og.rev 6.9.9.2 (2018/09/18) 廃止
    610//       *
    611//       * @param   chboxid チェックボックス指定
    612//       */
    613//      public void setChbox( final String chbox ) {
    614//              tag.add( "chbox",nval( getRequestParameter( chbox ),null ) );
    615//      }
    616
    617        /**
    618         * 【TAG】積み上げガントの工数を指定します。
    619         *
    620         * @og.tag
    621         * 積み上げガントの工数を指定します。
    622         * 開始日、終了日を利用して積上げ計算されます。
    623         *
    624         * @param   cost 積み上げガントの工数
    625         */
    626        public void setCost( final String cost ) {
    627                tag.add( "cost",nval( getRequestParameter( cost ),null ) );
    628        }
    629
    630        /**
    631         * 【TAG】積上げの最大値（キャパシティ）を指定します。
    632         *
    633         * @og.tag
    634         * 最大値を超えた場合は、マーカーされます。
    635         *
    636         * @param   capacity 積み上げガントの工数
    637         */
    638        public void setCapacity( final String capacity ) {
    639                tag.add( "capacity",nval( getRequestParameter( capacity ),null ) );
    640        }
    641
    642        /**
    643         * 【TAG】要素を一意に指定するためのidを指定します。
    644         *
    645         * @og.tag
    646         * 要素を一意に指定するためのID体系を指定します。
    647         * 例えばA__[I]のように設定します。
    648         * ガント要素は動かす際には必要です。
    649         *
    650         * @og.rev 5.9.14.1 (2016/11/11)
    651         *
    652         * @param   id 一意になる文字列
    653         */
    654        @Override
    655        public void setId( final String id ) {
    656                tag.add( "id",nval( getRequestParameter( id ),null ) );
    657        }
    658
    659        /**
    660         * タグの名称を、返します。
    661         * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。
    662         *
    663         * @return  タグの名称
    664         * @og.rtnNotNull
    665         */
    666        @Override
    667        protected String getTagName() {
    668                return "iGanttBar" ;
    669        }
    670
    671        /**
    672         * このオブジェクトの文字列表現を返します。
    673         * 基本的にデバッグ目的に使用します。
    674         *
    675         * @return このクラスの文字列表現
    676         * @og.rtnNotNull
    677         */
    678        @Override
    679        public String toString() {
    680                return ToString.title( this.getClass().getName() )
    681                                .println( "VERSION"             ,VERSION        )
    682                                .println( "tag"                 ,tag.makeTag()  )
    683                                .println( "Other..."    ,getAttributes().getAttribute() )
    684                                .fixForm().toString() ;
    685        }
    686}