    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.html.ViewStackTableParam;
    019
    020import static org.opengion.fukurou.util.StringUtil.nval ;
    021
    022import java.io.ObjectOutputStream;
    023import java.io.ObjectInputStream;
    024import java.io.IOException;
    025
    026/**
    027 * viewタグの viewFormType が HTMLGanttTable の場合にパラメータを設定します。
    028 *
    029 * ガントチャートを表示する、ViewForm_HTMLGanttTable クラスに対して、各種パラメータを
    030 * 設定します。
    031 * パラメータが設定されていない場合は、ViewStackTableParam の初期値が
    032 * 使用されます。
    033 * (パラメータを使用するには、viewタグのuseParam 属性をtrueに設定する必要があります。)
    034 *
    035 * @og.formSample
    036 * ●形式：&lt;og:stackParam stackColumns="PRJCODE,RESOURCE_ID" /&gt;
    037 * ●body：なし
    038 *
    039 * ●Tag定義：
    040 *   &lt;og:stackParam
    041 *       stackColumns       【TAG】積上単位とするカラム名(カンマ区切り)をセットします (必須)
    042 *       costColumn         【TAG】内部積上げする場合の工数カラムをセットします
    043 *       innerStack         【TAG】工数の内部積み上げをするかどうか[true/false]指定します(初期値:false)
    044 *       debug              【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
    045 *   /&gt;
    046 *
    047 * @og.rev 5.5.7.0 (2012/10/01) 新規作成
    048 * @og.group 画面表示
    049 *
    050 * @version  5.0
    051 * @author       Takahashi Masakazu
    052 * @since    JDK5.0,
    053 */
    054public class ViewStackParamTag extends ViewParamTag {
    055        //* このプログラムのVERSION文字列を設定します。   {@value} */
    056        private static final String VERSION = "5.6.1.2 (2013/02/22)" ;
    057
    058        private static final long serialVersionUID = 561220130222L ;
    059
    060        /**
    061         * 【TAG】積上単位とするカラム名(カンマ区切り)をセットします
    062         *
    063         * @og.tag
    064         * 工数積上げのキーとなるカラム名を指定します。
    065         *
    066         * 複数ある場合は、カンマ区切りで指定できます。
    067         * テーブルモデルは積上単位＋タスク単位でOrderByがかかっている必要があります。
    068         *
    069         * @param       stackColumns タスク（ガント）のカラム名(カンマ区切り)
    070         */
    071        public void setStackColumns( final String stackColumns ) {
    072                putParam( ViewStackTableParam.STACK_COLUMNS_KEY ,
    073                                  nval( getRequestParameter( stackColumns ),null ) );
    074        }
    075
    076        /**
    077         * 【TAG】工数関係のカラム（工数,開始日,終了日）を指定します。
    078         *
    079         * @og.tag
    080         * 工数関係のカラム名を指定します。
    081         * 工数(x.y)、開始日(yyyyMMdd)、終了日(yyyyMMdd)
    082         * の３つのカラムをカンマ区切りで設定して下さい。
    083         * エンジン内部で工数積上げを行う場合は必須です。
    084         *
    085         * テーブルモデルは積上単位＋タスク単位でOrderByがかかっている必要があります。
    086         *
    087         * @og.rev 5.5.8.3 (2012/11/17)
    088         *
    089         * @param       costColumns 工数のカラム名
    090         */
    091        public void setCostColumns( final String costColumns ) {
    092                putParam( ViewStackTableParam.COST_COLUMNS_KEY ,
    093                                  nval( getRequestParameter( costColumns ),null ) );
    094        }
    095
    096        /**
    097         * 【TAG】エンジン内部で積上げするかどうかを指定します。
    098         *
    099         * @og.tag
    100         * エンジン内部で積上げを行うかどうかを指定します。
    101         * 内部で積上げを行った場合は、HTMLStackGanttTableではガント行の出力を行いません。
    102         * 初期値はfalse（積上げしない）です。
    103         *
    104         * @og.rev 5.5.8.3 (2012/11/17)
    105         *
    106         * @param       flg 内部積上げをするかどうか[true/false]
    107         */
    108        public void setInnerStack( final String flg ) {
    109                putParam( ViewStackTableParam.INNER_STACK_KEY ,
    110                                  nval( getRequestParameter( flg ),ViewStackTableParam.INNER_STACK_VALUE ) );
    111        }
    112
    113        /**
    114         * 【TAG】エンジン内部で積上げする場合に休日も積上げるかどうかを指定します。
    115         *
    116         * @og.tag
    117         * エンジン内部で積上げを行う場合に休日も積上げるかどうかを指定します。
    118         * zoomがDAYの場合のみ有効です。
    119         * 初期値はtrue（積上げする）です。
    120         *
    121         * @og.rev 5.5.8.3 (2012/11/17)
    122         *
    123         * @param       flg 休日積上げをするかどうか[true/false]
    124         */
    125        public void setStackHoliday( final String flg ) {
    126                putParam( ViewStackTableParam.STACK_HOLIDAY_KEY ,
    127                                  nval( getRequestParameter( flg ),ViewStackTableParam.STACK_HOLIDAY_VALUE ) );
    128        }
    129
    130        /**
    131         * 【TAG】その行の能力値カラムを指定します。
    132         *
    133         * @og.tag
    134         * 内部積上げをする際、各行の能力のカラム名を指定します。
    135         * カラムを指定しない場合は1となります。
    136         *
    137         * @og.rev 5.6.1.2 (2013/02/22)
    138         *
    139         * @param       capColumn 能力値のカラム名
    140         */
    141        public void setCapacityColumn( final String capColumn ) {
    142                putParam( ViewStackTableParam.CAP_COLUMN_KEY ,
    143                                  nval( getRequestParameter( capColumn ),ViewStackTableParam.CAP_COLUMN_VALUE  ) );
    144        }
    145
    146        /**
    147         * タグの名称を、返します。
    148         * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。
    149         *
    150         *
    151         * @return  タグの名称
    152         */
    153        @Override
    154        protected String getTagName() {
    155//              return "ganttParam" ;
    156                return "stackParam" ;
    157        }
    158
    159        /**
    160         * シリアライズ用のカスタムシリアライズ書き込みメソッド
    161         *
    162         * @serialData 一部のオブジェクトは、シリアライズされません。
    163         *
    164         * @param       strm    ObjectOutputStreamオブジェクト
    165         * @throws IOException  入出力エラーが発生した場合
    166         */
    167        private void writeObject( final ObjectOutputStream strm ) throws IOException {
    168                strm.defaultWriteObject();
    169        }
    170
    171        /**
    172         * シリアライズ用のカスタムシリアライズ読み込みメソッド
    173         *
    174         * ここでは、transient 宣言された内部変数の内、初期化が必要なフィールドのみ設定します。
    175         *
    176         * @serialData 一部のオブジェクトは、シリアライズされません。
    177         *
    178         * @param       strm    ObjectInputStreamオブジェクト
    179         * @see #release2()
    180         * @throws IOException  シリアライズに関する入出力エラーが発生した場合
    181         * @throws ClassNotFoundException       クラスを見つけることができなかった場合
    182         */
    183        private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
    184                strm.defaultReadObject();
    185        }
    186}