    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.hayabusa.common.HybsSystemException;
    019import org.opengion.fukurou.util.StringUtil;
    020import org.opengion.fukurou.util.TagBuffer;
    021
    022/**
    023 * ガントチャートの繰り返しタグのフォーマットに使用します。
    024 *
    025 * iGanttBar タグは、TDタグの繰返し部に記述することで、個々のガントのタスクを作成します。
    026 * これを使用する場合は、iGant タグを全体に一つ指定する必要があります。
    027 *
    028 * @og.formSample
    029 * ●形式：&lt;og:iGanttBar  ... /&gt;
    030 * ●body：なし
    031 * ●前提：headタグで、adjustEvent="Gantt" を指定してください。
    032 *
    033 * ●Tag定義：
    034 *   &lt;og:iGanttBar
    035 *       type         【TAG】ガント要素のタイプ（0:マイルストーン 1:バー ）(必須)
    036 *       color        【TAG】バーの色（マイルストーンの場合は不要）
    037 *       colorNo      【TAG】バーの色番号で指定します
    038 *       src          【TAG】マイルストーンのアイコン画像(URIより設定)
    039 *       start        【TAG】開始日(YYYYMMDD)、または開始時間(YYYYMMDDHH24MM)
    040 *       end          【TAG】終了日(YYYYMMDD)、または終了時間(YYYYMMDDHH24MM)
    041 *       text         【TAG】ガント要素の注釈メッセージ。
    042 *       href         【TAG】入力した場合はガントにリンクを付加します。
    043 *       target       【TAG】hrefを指定した場合に付加されるリンクのターゲット
    044 *       barLink      【TAG】hrefで付加されるリンクの範囲にバー本体を含めるかどうか[true/false]を指定します(初期値：false)
    045 *       startInput   【保留】ガント要素の開始日に紐付く入力欄（開始日または終了日に紐付く入力欄が設定しなければガント要素は動かせない）
    046 *       endInput     【保留】ガント要素の終了日に紐付く入力欄（開始日または終了日に紐付く入力欄が設定しなければガント要素は動かせない）
    047 *       chbox        【保留】行選択のチェックボックス 設定値：[ROW.ID]
    048 *       id           【TAG】要素を一意に指定する値を指定します。(ガント要素を動かす際に指定)
    049 *       cost         【TAG】開始日、終了日を利用して積上げられる工数を指定します。
    050 *       capacity     【TAG】積上げの最大値（キャパシティ）を指定します。
    051 *       debug        【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
    052 *   /&gt;
    053 *
    054 * ●使用例
    055 *   (通常ガント)
    056 *  &lt;og:view
    057 *      viewFormType = "HTMLCustomTable"
    058 *      command      = "{&#064;command}"
    059 *      writable     = "false"
    060 *      useScrollBar = "false"
    061 *  &gt;
    062 *    &lt;og:thead rowspan="2"&gt;
    063 *      &lt;tr&gt;
    064 *          &lt;td&gt;[NOORDER]&lt;/td&gt;
    065 *          &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;
    066 *              &lt;div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" &gt;
    067 *                  &lt;og:ganttHeader
    068 *                      startDate       = "{&#064;startDate}"
    069 *                      endDate         = "{&#064;endDate}"
    070 *                      zoom            = "{&#064;VZOOM}"
    071 *                      daySpan         = "{&#064;daySpan}"
    072 *                  /&gt;
    073 *              &lt;/div&gt;
    074 *          &lt;/td&gt;
    075 *      &lt;/tr&gt;
    076 *    &lt;/og:thead&gt;
    077 *    &lt;og:tbody rowspan="2"&gt;
    078 *      &lt;tr&gt;
    079 *          &lt;td&gt;[NOORDER]&lt;/td&gt;
    080 *          &lt;td rowspan="2" class="gantt zoom{&#064;VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{&#064;VZOOM}.gif');" &gt;
    081 *              &lt;og:iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]" text="[PN]" /&gt;
    082 *              &lt;og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]"      text="開始" /&gt;
    083 *              &lt;og:iGanttBar type="0" src="../image/dia_red.gif"  end="[DYNOKI]"         text="終了" /&gt;
    084 *          &lt;/td&gt;
    085 *      &lt;/tr&gt;
    086 *    &lt;/og:tbody&gt;
    087 *  &lt;/og:view&gt;
    088 *
    089 *   &lt;og:iGantt
    090 *       margeRows      = "true"
    091 *       fixedCols      = "1"
    092 *   /&gt;
    093 *
    094 *   (積み上げガント)
    095 *  &lt;og:view
    096 *      viewFormType = "HTMLStackedGanttTable"
    097 *      command      = "{&#064;command}"
    098 *      writable     = "false"
    099 *      useScrollBar = "false"
    100 *      useParam     = "true"
    101 *      numberType   = "none"
    102 *  &gt;
    103 *  &lt;og:stackParam
    104 *      stackColumns = "NOORDER"
    105 *  /&gt;
    106 *
    107 *    &lt;og:thead rowspan="2"&gt;
    108 *      &lt;tr&gt;
    109 *          &lt;td&gt;[NOORDER]&lt;/td&gt;
    110 *          &lt;td&gt;[PN]&lt;/td&gt;
    111 *          &lt;td rowspan="2" class="gantt zoom{&#064;SZOOM}" style="text-align:left;background-image: url('../image/ganttBG{&#064;SZOOM}.gif');" &gt;
    112 *              &lt;div style="position:relative;left:0px;z-index:101; " height="100%" width="100%" &gt;
    113 *                  &lt;og:ganttHeader
    114 *                      startDate   = "{&#064;startDate}"
    115 *                      endDate     = "{&#064;endDate}"
    116 *                      zoom        = "{&#064;SZOOM}"
    117 *                      calDB       = "GE13"
    118 *                      arg1        = "A"
    119 *                  /&gt;
    120 *              &lt;/div&gt;
    121 *          &lt;/td&gt;
    122 *      &lt;/tr&gt;
    123 *    &lt;/og:thead&gt;
    124 *    &lt;og:tbody rowspan="2"&gt;
    125 *      &lt;tr&gt;
    126 *          &lt;td&gt;[NOORDER]&lt;/td&gt;
    127 *          &lt;td&gt;[PN]&lt;/td&gt;
    128 *          &lt;td rowspan="2" class="gantt zoom{&#064;VZOOM}" style="text-align:left;background-image: url('../image/ganttBG{&#064;VZOOM}.gif');" &gt;
    129 *              &lt;iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]"  text="[COSTCLM]"
    130 *                    cost="[COSTCLM]" capacity="[CAPACITY]" /&gt;
    131 *              &lt;og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]"      text="開始" /&gt;
    132 *          &lt;/td&gt;
    133 *      &lt;/tr&gt;
    134 *    &lt;/og:tbody&gt;
    135 *  &lt;/og:view&gt;
    136 *
    137 *   &lt;og:iGantt
    138 *       margeRows      = "true"
    139 *       fixedCols      = "1"
    140 *       verticalShift  = "false"
    141 *       viewGantt      = "{&#064;viewGantt}"
    142 *       stackHoliday   = "{&#064;stackHoliday}"
    143 *       useBgColor     = "true"
    144 *       viewMode       = "2"
    145 *   /&gt;
    146 *
    147 * @og.rev 5.6.3.2 (2013/04/12) 新規作成
    148 * @og.group 画面部品
    149 *
    150 * @version  5.0
    151 * @author       Kazuhiko Hasegawa
    152 * @since    JDK6.0,
    153 */
    154public class ViewIGanttBarTag extends CommonTagSupport {
    155        //* このプログラムのVERSION文字列を設定します。   {@value} */
    156        private static final String VERSION = "5.6.3.2 (2013/04/12)" ;
    157
    158        private static final long serialVersionUID = 563220130412L ;
    159
    160        private TagBuffer tag = new TagBuffer( "iGanttBar" ) ;
    161
    162        /**
    163         * Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
    164         *
    165         * @og.rev 5.8.1.0 (2014/11/07) HTML5対応。javaScriptで、BODYがないと入れ子になってしまう。
    166         * @return      後続処理の指示
    167         */
    168        @Override
    169        public int doEndTag() {
    170                debugPrint();           // 4.0.0 (2005/02/28)
    171
    172                tag.setBody( "<!-- -->" );                // 5.8.1.0 (2014/11/07) HTML5対応。
    173                jspPrint( tag.makeTag() );
    174
    175                return(EVAL_PAGE);              // ページの残りを評価する。
    176        }
    177
    178        /**
    179         * タグリブオブジェクトをリリースします。
    180         * キャッシュされて再利用されるので、フィールドの初期設定を行います。
    181         *
    182         */
    183        @Override
    184        protected void release2() {
    185                super.release2();
    186                tag = new TagBuffer( "iGanttBar" );
    187        }
    188
    189        /**
    190         * 【TAG】ガント要素のタイプ（0:マイルストーン 1:バー ）を指定します(必須)。
    191         *
    192         * @og.tag
    193         * 0:マイルストーン を指定すると、その日（時間）に、マーカーがされます。
    194         * ガントのような期間ではなく、そのポイントを表すのに使用します。
    195         * 例えば、受注日、納期 などの設定値です。
    196         * start か end どちらかの指定で構いません。
    197         * start を使用した場合は、指定日（時間）の前方に、endを使用した場合は、
    198         * 指定日（時間）の後方にマーカーが置かれます。
    199         *
    200         * @param   type ガント要素のタイプ[0:マイルストーン/1:バー]
    201         */
    202        public void setType( final String type ) {
    203                tag.add( "type",StringUtil.nval( getRequestParameter( type ),null ) );
    204        }
    205
    206        /**
    207         * 【TAG】ガント要素（バー）の色コードを設定します。
    208         *
    209         * @og.tag
    210         * color は、ガント要素の色コードを設定します。
    211         * type="0:マイルストーン" の場合は不要です。
    212         * このコードは、予め決められた色画像を呼び出しますので、任意の色が使えるという事ではありません。
    213         * 色指定は、横棒の場合は、image/W_色コード.png の画像を使います。
    214         * 色コード と 色番号が同時に指定された場合は、色コード が優先されます。
    215         *
    216         * type=2:差分枠 は、value ＞ baseVal の場合は、超過を、value ＜ baseValの場合は、不足を表します。
    217         * <table border="1" frame="box" rules="all">
    218         *   <caption>色番号 対応表</caption>
    219     *   <tr><th>色番号</th><th>設定値    </th><th>棒色   </th><th>　</th><th>横棒サンプル</th></tr>
    220     *   <tr><td> 0    </td><td>blue      </td><td>青     </td><td> </td><td style="background-image:url(../image/W_blue.png);">   　</td></tr>
    221     *   <tr><td> 1    </td><td>black     </td><td>黒     </td><td> </td><td style="background-image:url(../image/W_black.png);">  　</td></tr>
    222     *   <tr><td> 2    </td><td>brown     </td><td>茶     </td><td> </td><td style="background-image:url(../image/W_brown.png);">  　</td></tr>
    223     *   <tr><td> 3    </td><td>green     </td><td>緑     </td><td> </td><td style="background-image:url(../image/W_green.png);">  　</td></tr>
    224     *   <tr><td> 4    </td><td>lightblue </td><td>薄青   </td><td> </td><td style="background-image:url(../image/W_lightblue.png);"> 　</td></tr>
    225     *   <tr><td> 5    </td><td>lightgreen</td><td>薄緑   </td><td> </td><td style="background-image:url(../image/W_lightgreen.png);"> 　</td></tr>
    226     *   <tr><td> 6    </td><td>orange    </td><td>オレンジ</td><td> </td><td style="background-image:url(../image/W_orange.png);"> 　</td></tr>
    227     *   <tr><td> 7    </td><td>pink      </td><td>ピンク </td><td> </td><td style="background-image:url(../image/W_pink.png);">  　</td></tr>
    228     *   <tr><td> 8    </td><td>purple    </td><td>紫     </td><td> </td><td style="background-image:url(../image/W_purple.png);">  　</td></tr>
    229     *   <tr><td> 9    </td><td>red       </td><td>赤     </td><td> </td><td style="background-image:url(../image/W_red.png);">       　</td></tr>
    230     *   <tr><td> 10   </td><td>yellow    </td><td>黄     </td><td> </td><td style="background-image:url(../image/W_yellow.png);"> 　</td></tr>
    231     *   <tr><td> 11   </td><td>navy      </td><td>濃紺   </td><td> </td><td style="background-image:url(../image/W_navy.png);">  　</td></tr>
    232     *   <tr><td> 12   </td><td>teal      </td><td>青緑   </td><td> </td><td style="background-image:url(../image/W_teal.png);">  　</td></tr>
    233     *   <tr><td> 13   </td><td>gray      </td><td>灰     </td><td> </td><td style="background-image:url(../image/W_gray.png);">    　</td></tr>
    234     *   <tr><td> 14   </td><td>indigo    </td><td>藍     </td><td> </td><td style="background-image:url(../image/W_indigo.png);"> 　</td></tr>
    235     *   <tr><td> 15   </td><td>slategray </td><td>鉄色   </td><td> </td><td style="background-image:url(../image/W_slategray.png);"> 　</td></tr>
    236     *   <tr><td> 16   </td><td>chocorlate</td><td>チョコレート</td><td> </td><td style="background-image:url(../image/W_chocorlate.png);"> 　</td></tr>
    237     *   <tr><td> 17   </td><td>darkgreen </td><td>深緑   </td><td> </td><td style="background-image:url(../image/W_darkgreen.png);"> 　</td></tr>
    238     *   <tr><td> 18   </td><td>violet    </td><td>すみれ </td><td> </td><td style="background-image:url(../image/W_violet.png);"> 　</td></tr>
    239     *   <tr><td> 19   </td><td>darkslategray</td><td>深鉄色</td><td> </td><td style="background-image:url(../image/W_darkslategray.png);"> 　</td></tr>
    240     *   <tr><td> 20   </td><td>lime      </td><td>緑     </td><td> </td><td style="background-image:url(../image/W_lime.png);">    　</td></tr>
    241     *   <tr><td> 21   </td><td>aqua      </td><td>水色   </td><td> </td><td style="background-image:url(../image/W_aqua.png);">  　</td></tr>
    242     *   <tr><td> 22   </td><td>maroon    </td><td>ひわだいろ</td><td> </td><td style="background-image:url(../image/W_maroon.png);"> 　</td></tr>
    243     *   <tr><td> 23   </td><td>olive     </td><td>オリーブ</td><td> </td><td style="background-image:url(../image/W_olive.png);">  　</td></tr>
    244     *   <tr><td> 24   </td><td>silver    </td><td>銀     </td><td> </td><td style="background-image:url(../image/W_silver.png);"> 　</td></tr>
    245     *   <tr><td> 25   </td><td>fuchsia   </td><td>赤紫   </td><td> </td><td style="background-image:url(../image/W_fuchsia.png);"> 　</td></tr>
    246     *   <tr><td colspan="6"> </td></tr>
    247     *   <tr><td> BK   </td><td>black2    </td><td>黒     </td><td> </td><td style="background-image:url(../image/W_black2.png);"> 　</td></tr>
    248     *   <tr><td> WT   </td><td>white2    </td><td>白     </td><td> </td><td style="background-image:url(../image/W_white2.png);"> 　</td></tr>
    249     *   <tr><td> BL   </td><td>blue2     </td><td>青     </td><td> </td><td style="background-image:url(../image/W_blue2.png);">   　</td></tr>
    250     *   <tr><td> RD   </td><td>red2      </td><td>赤     </td><td> </td><td style="background-image:url(../image/W_red2.png);">   　</td></tr>
    251     *   <tr><td> YL   </td><td>yellow2   </td><td>黄     </td><td> </td><td style="background-image:url(../image/W_yellow2.png);"> 　</td></tr>
    252         * </table>
    253         *
    254         * @param   color グラフ要素の位置、長さ
    255         */
    256        public void setColor( final String color ) {
    257                tag.add( "color",StringUtil.nval( getRequestParameter( color ),null ) );
    258        }
    259
    260        /**
    261         * 【TAG】グラフ要素の色番号を設定します。
    262         *
    263         * @og.tag
    264         * 色番号は、色コードを直接指定するのではなく、番号で指定する場合に使用します。
    265         * 棒グラフ要素（type="1"(横棒),"6"(縦棒)）の色を設定します。
    266         * "1〜25 , BK,WT,BL,RD,YL" の色番号で指定します。
    267         * 色番号は、与えた数字を内部色数で割り算した余を使用しますので、連番の場合でも
    268         * 繰返し使われます。特殊な色として、BK,WT,BL,RD,YLは、番号ではなく記号で指定できます。
    269         * 色コード と 色番号が同時に指定された場合は、色コード が優先されます。
    270         *
    271         * @param   clrNo グラフ要素の描画開始位置
    272         * @see         #setColor( String )
    273         */
    274        public void setColorNo( final String clrNo ) {
    275                tag.add( "colorNo",StringUtil.nval( getRequestParameter( clrNo ),null ) );
    276        }
    277
    278        /**
    279         * 【TAG】マイルストーンのアイコン画像(URIより設定)を設定します。
    280         *
    281         * @og.tag
    282         * type="0:マイルストーン" の場合、表示するアイコンイメージの所在を指定します。
    283         * 例："../image/xxx.png"
    284         *
    285         * @param   src マイルストーンのアイコン画像
    286         */
    287        public void setSrc( final String src ) {
    288                tag.add( "src",StringUtil.nval( getRequestParameter( src ),null ) );
    289        }
    290
    291        /**
    292         * 【TAG】開始日(YYYYMMDD)、または開始時間(YYYYMMDDHH24MM)を設定します。
    293         *
    294         * @og.tag
    295         * type="1:バー" の場合は、バー表示の場合の書き始め（開始）を指定します。
    296         * この値は、バーでは、「含む」になります。
    297         * type="0:マイルストーン" の場合は、マイルストンを左端に表示します。
    298         *
    299         * @param   start 開始日(YYYYMMDD)、または開始時間(YYYYMMDDHH24MM)
    300         * @see         #setType( String )
    301         * @see         #setEnd( String )
    302         */
    303        public void setStart( final String start ) {
    304                tag.add( "start",StringUtil.nval( getRequestParameter( start ),null ) );
    305        }
    306
    307        /**
    308         * 【TAG】終了日(YYYYMMDD)、または終了時間(YYYYMMDDHH24MM)を設定します。
    309         *
    310         * @og.tag
    311         * type="1:バー" の場合は、バー表示の場合の書き終わり（終了）を指定します。
    312         * この値は、日付か時刻かで「含む」/「含まない」が異なります。
    313         * 日付の場合は、この値を「含む」です。例えば、4/12 を指定した場合、4/12は含みます。
    314         * 時刻の場合は、「含まない」です。4/12 070000 を指定した場合は、午前7時は含まないので、
    315         * ６時５９分５９秒までのバーが引かれます。
    316         * type="0:マイルストーン" の場合は、マイルストンを右端に表示します。
    317         *
    318         * @param   end 終了日(YYYYMMDD)、または終了時間(YYYYMMDDHH24MM)
    319         * @see         #setType( String )
    320         * @see         #setStart( String )
    321         */
    322        public void setEnd( final String end ) {
    323                tag.add( "end",StringUtil.nval( getRequestParameter( end ),null ) );
    324        }
    325
    326        /**
    327         * 【TAG】バー上に表示するテキストを指定します。
    328         *
    329         * @og.tag
    330         * バーの上に、値などの文字を重ねて表示できます。
    331         *
    332         * @param   text バー上に表示するテキスト
    333         */
    334        public void setText( final String text ) {
    335                tag.add( "text",StringUtil.nval( getRequestParameter( text ),null ) );
    336        }
    337
    338        /**
    339         * 【TAG】リンク作成時の値を設定します。
    340         *
    341         * @og.tag
    342         * バーの上の文字に対して、リンクを作成できます。
    343         *
    344         * @param   href バー上に表示するテキスト
    345         * @see         #setTarget( String )
    346         */
    347        public void setHref( final String href ) {
    348                tag.add( "href",StringUtil.nval( getRequestParameter( href ),null ) );
    349        }
    350
    351        /**
    352         * 【TAG】リンク作成時のターゲット名を指定します。
    353         *
    354         * @og.tag
    355         * バーの上の文字に対して、リンクを作成するときの、ターゲット名を指定できます。
    356         *
    357         * @param   target リンク作成時のターゲット
    358         * @see         #setHref( String )
    359         */
    360        public void setTarget( final String target ) {
    361                tag.add( "target",StringUtil.nval( getRequestParameter( target ),null ) );
    362        }
    363
    364        /**
    365         * 【TAG】hrefで付加されるリンクの範囲にバー本体を含めるかどうか[true/false]を指定します(初期値：false)。
    366         *
    367         * @og.tag
    368         * true を指定すると、hrefで付加されるリンクの範囲にバー本体を含めます。
    369         *
    370         * @param   barLink リンクの範囲にバー本体を含めるかどうか[true/false]
    371         * @see         #setHref( String )
    372         */
    373        public void setBarLink( final String barLink ) {
    374                tag.add( "barLink",StringUtil.nval( getRequestParameter( barLink ),null ) );
    375        }
    376
    377        /**
    378         * 【保留】ガント要素の開始日に紐付く入力欄を指定します。
    379         *
    380         * @og.tag
    381         * この入力欄がないと、ガント要素は動かせません。
    382         *
    383         * @og.rev 5.9.14.1 (2016/11/11) startInputではなくstartDateInut
    384         *
    385         * @param   startInput 開始日に紐付く入力欄
    386         * @see         #setStart( String )
    387         */
    388        public void setStartInput( final String startInput ) {
    389//              tag.add( "startInput",StringUtil.nval( getRequestParameter( startInput ),null ) );
    390                tag.add( "startDateInput",StringUtil.nval( getRequestParameter( startInput ),null ) );
    391        }
    392
    393        /**
    394         * 【保留】ガント要素の終了日に紐付く入力欄を指定します。
    395         *
    396         * @og.tag
    397         * この入力欄がないと、ガント要素は動かせません。
    398         *
    399         * @og.rev 5.9.14.1 (2016/11/11) endInputではなくendDateInut
    400         *
    401         * @param   endInput 終了日に紐付く入力欄
    402         * @see         #setEnd( String )
    403         */
    404        public void setEndInput( final String endInput ) {
    405//              tag.add( "endInput",StringUtil.nval( getRequestParameter( endInput ),null ) );
    406                tag.add( "endDateInput",StringUtil.nval( getRequestParameter( endInput ),null ) );
    407        }
    408
    409        /**
    410         * 【TAG】行選択のチェックボックスを指定します。
    411         *
    412         * @og.tag
    413         * 例えば、[ROW.ID] を指定する事で、選択行を指定する事ができます。
    414         *
    415         * @param   chbox 行選択のチェックボックス
    416         */
    417        public void setChbox( final String chbox ) {
    418                tag.add( "chbox",StringUtil.nval( getRequestParameter( chbox ),null ) );
    419        }
    420
    421        /**
    422         * 【TAG】積み上げガントの工数を指定します。
    423         *
    424         * @og.tag
    425         * 積み上げガントの工数を指定します。
    426         * 開始日、終了日を利用して積上げ計算されます。
    427         *
    428         * @param   cost 積み上げガントの工数
    429         */
    430        public void setCost( final String cost ) {
    431                tag.add( "cost",StringUtil.nval( getRequestParameter( cost ),null ) );
    432        }
    433
    434        /**
    435         * 【TAG】積上げの最大値（キャパシティ）を指定します。
    436         *
    437         * @og.tag
    438         * 最大値を超えた場合は、マーカーされます。
    439         *
    440         * @param   capacity 積み上げガントの工数
    441         */
    442        public void setCapacity( final String capacity ) {
    443                tag.add( "capacity",StringUtil.nval( getRequestParameter( capacity ),null ) );
    444        }
    445
    446        /**
    447         * 【TAG】要素を一意に指定するためのidを指定します。
    448         *
    449         * @og.tag
    450         * 要素を一意に指定するためのID体系を指定します。
    451         * 例えばA__[I]のように設定します。
    452         * ガント要素は動かす際には必要です。
    453         *
    454         * @og.rev 5.9.14.1 (2016/11/11)
    455         *
    456         * @param   id 一意になる文字列
    457         */
    458        public void setId( final String id ) {
    459                tag.add( "id",StringUtil.nval( getRequestParameter( id ),null ) );
    460        }
    461
    462        /**
    463         * タグの名称を、返します。
    464         * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。
    465         *
    466         * @return  タグの名称
    467         */
    468        @Override
    469        protected String getTagName() {
    470                return "iGanttBar" ;
    471        }
    472
    473        /**
    474         * このオブジェクトの文字列表現を返します。
    475         * 基本的にデバッグ目的に使用します。
    476         *
    477         * @return このクラスの文字列表現
    478         */
    479        @Override
    480        public String toString() {
    481                return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
    482                                .println( "VERSION"             ,VERSION        )
    483                                .println( "tag"                 ,tag.makeTag()  )
    484                                .println( "Other..."    ,getAttributes().getAttribute() )
    485                                .fixForm().toString() ;
    486        }
    487}