    001package org.opengion.hayabusa.taglib;
    002
    003import org.opengion.hayabusa.common.HybsSystem;
    004import org.opengion.hayabusa.common.HybsSystemException;
    005import org.opengion.hayabusa.io.JsChartData;
    006
    007/**
    008 * 設定された値をJsChartDataに設定し、
    009 * JsChartTagのJsChartDataリストに追加するタグです。
    010 *
    011 * @og.formSample
    012 * ●形式：&lt;og:jsChartData chartColumn="…" … /&gt;
    013 * ●body:なし
    014 *
    015 * ●Tag定義：
    016 * &lt;og:jsChartData
    017 *  chartColumn         ○ 【TAG】ﾁｬｰﾄのｶﾗﾑ名を指定します。(必須)
    018 *  label                  【TAG】凡例の値を指定します。
    019 *  fill                   【TAG】線下を塗りつぶすかどうか[true/false]を指定します。(初期値:false)
    020 *  tension                【TAG】線の伸張を指定します。0で直線になります。(初期値:0.4)
    021 *  borderColor            【TAG】線の色を指定します。
    022 *  borderWidth            【TAG】線の幅を指定します。
    023 *  backgroundColor        【TAG】ﾃﾞｰﾀの背景色を指定します。
    024 *  optionAttributes       【TAG】その他ｵﾌﾟｼｮﾝを指定します。
    025 *  &gt; />
    026 *
    027 * ●使用例
    028 * &lt;og:jsChart...&gt;
    029 *     &lt;og:jsChartData
    030 *         chartColumn ="CLM1"
    031 *         label       ="ラベル"
    032 *         fill        ="true"
    033 *         tension     ="0"
    034 *         borderColor ="rbga(150,150,150,0.7)"
    035 *         borderWidth ="2"
    036 *     /&gt;>
    037 * &lt/og:jsChart&gt;
    038 *
    039 *
    040 * @og.group 画面表示
    041 *
    042 * @version     5.9.17.2                2017/02/08
    043 * @author      T.OTA
    044 * @since       JDK7.0
    045 *
    046 */
    047public class JsChartDataTag extends CommonTagSupport {
    048        //* このプログラムのVERSION文字列を設定します。{@VALUE} */
    049        private static final String             VERSION                         = "5.9.17.2 (2017/02/07)";
    050        private static final long               serialVersionUID        = -2188726810088630172L;
    051        private static final String[]   TYPE_BOOLEAN            = new String[] { "true", "false" };
    052        // 変数宣言
    053        private String                                  chartColumn                     = null;
    054        private String                                  label                           = null;
    055        private String                                  fill                            = "false";
    056        private String                                  tension                         = "0.4";
    057        private String                                  borderColor                     = null;
    058        private String                                  borderWidth                     = null;
    059        private String                                  backgroundColor         = null;
    060        private String                                  optionAttributes        = null;
    061        private transient JsChartData   jsData                          = new JsChartData();
    062
    063        /**
    064         * Taglibの開始タグが見つかった時に処理する doStartTag() を オーバーライドします。
    065         *
    066         * @return 後続処理の指示
    067         */
    068        @Override
    069        public int doStartTag() {
    070                return SKIP_BODY; // Body を評価しない
    071        }
    072
    073        /**
    074         * Taglibの終了タグが見つかった時に処理する doEndTag() を オーバーライドします。
    075         *
    076         * @return 後続処理の指示
    077         */
    078        @Override
    079        public int doEndTag() {
    080                debugPrint();
    081
    082                JsChartTag jsChartTag = (JsChartTag) findAncestorWithClass( this, JsChartTag.class );
    083
    084                if( jsChartTag == null ) {
    085                        String errMsg = "jsChart タグが見つかりませんでした。";
    086                        throw new HybsSystemException( errMsg );
    087                }
    088
    089                jsData.setChartColumn( chartColumn );
    090                jsData.setLabel( label );
    091                jsData.setFill( fill );
    092                jsData.setTension( tension );
    093                jsData.setBorderColor( borderColor );
    094                jsData.setBorderWidth( borderWidth );
    095                jsData.setBackgroundColor( backgroundColor );
    096                jsData.setOptionAttributes( optionAttributes );
    097
    098                jsChartTag.addJsChartData( jsData );
    099
    100                return EVAL_PAGE;
    101        }
    102
    103        /**
    104         * タグリブオブジェクトをリリースします。
    105         * キャッシュされて再利用されるので、フィールドの初期設定を行います。
    106         *
    107         */
    108        @Override
    109        protected void release2() {
    110                super.release2();
    111                jsData = new JsChartData();
    112                chartColumn = null;
    113                label = null;
    114                fill = "false";
    115                tension = "0.4";
    116                borderColor = null;
    117                borderWidth = null;
    118                backgroundColor = null;
    119                optionAttributes = null;
    120        }
    121
    122        /**
    123         * チャートカラム を設定します。
    124         *
    125         * @param val
    126         */
    127        public void setChartColumn( String val ) {
    128                chartColumn = getRequestParameter( val );
    129        }
    130
    131        /**
    132         * ラベル を設定します。
    133         *
    134         * @param label
    135         */
    136        public void setLabel( String label ) {
    137                this.label = getRequestParameter( label );
    138        }
    139
    140        /**
    141         * フィル(線より下の塗りつぶし) を設定します。
    142         *
    143         * @param fill
    144         */
    145        public void setFill( String fill ) {
    146                this.fill = getRequestParameter( fill );
    147
    148                checkPara( this.fill, TYPE_BOOLEAN, "fill" );
    149        }
    150
    151        /**
    152         * 伸張 を設定します。
    153         * @param tension
    154         */
    155        public void setTension( String tension ) {
    156                this.tension = getRequestParameter( tension );
    157        }
    158
    159        /**
    160         * 線の色 を設定します。
    161         *
    162         * @param borderColor
    163         */
    164        public void setBorderColor( String borderColor ) {
    165                this.borderColor = getRequestParameter( borderColor );
    166        }
    167
    168        /**
    169         * 線の幅 を設定します。
    170         *
    171         * @param borderWidth
    172         */
    173        public void setBorderWidth( String borderWidth ) {
    174                this.borderWidth = getRequestParameter( borderWidth );
    175        }
    176
    177        /**
    178         * 背景色 を設定します。
    179         *
    180         * @param backgroundColor
    181         */
    182        public void setBackgroundColor( String backgroundColor ) {
    183                this.backgroundColor = getRequestParameter( backgroundColor );
    184        }
    185
    186        /**
    187         * オプション情報 を設定します。
    188         *
    189         * @param optionAttributes
    190         */
    191        public void setOptionAttributes( String optionAttributes ) {
    192                this.optionAttributes = getRequestParameter( optionAttributes );
    193        }
    194
    195        /**
    196         * ﾊﾟﾗﾒｰﾀﾁｪｯｸ用ﾒｿｯﾄﾞ
    197         *
    198         * @param trg チェック対象
    199         * @param list 設定可能なリスト
    200         * @param trgStr チェック対象の文字列(ｴﾗｰ表示用)
    201         */
    202        private void checkPara( String trg, String[] list, String trgStr ) {
    203                if( trg != null && trg.length() > 0 && !check( trg, list ) ) {
    204                        StringBuilder errMsg = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
    205                        errMsg.append( "指定の" ).append( trgStr ).append( "は指定できません。" );
    206                        errMsg.append( HybsSystem.CR );
    207                        errMsg.append( trgStr ).append( "=[" ).append( trg ).append( "]" );
    208                        errMsg.append( HybsSystem.CR );
    209                        for( int i = 0; i < list.length; i++ ) {
    210                                errMsg.append( " | " );
    211                                errMsg.append( list[i] );
    212                        }
    213                        throw new HybsSystemException( errMsg.toString() );
    214                }
    215        }
    216
    217        /**
    218         * このオブジェクトの文字列表現を返します。
    219         * 基本的にデバッグ目的に使用します。
    220         *
    221         * @return このクラスの文字列表現
    222         */
    223        public String toString() {
    224                return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
    225                        .println( "VERSIION", VERSION )
    226                        .println( "chartColumn", chartColumn )
    227                        .println( "label", label )
    228                        .println( "fill", fill )
    229                        .println( "tension", tension )
    230                        .println( "borderColor", borderColor )
    231                        .println( "borderWidth", borderWidth )
    232                        .println( "backgroundColor", backgroundColor )
    233                        .println( "optionAttributes", optionAttributes ).fixForm().toString();
    234        }
    235}