001package org.opengion.hayabusa.io;
002
003import org.opengion.hayabusa.common.HybsSystem;
004
005/**
006 * JsChartData は、JsChartData の個別属性を管理しているデータ管理クラスです。
007 * 
008 * @version     5.9.17.2                2017/02/08
009 * @author      T.OTA
010 * @sinse       JDK7.0
011 *
012 */
013public class JsChartData {
014        private String  chartColumn                     = null; // チャートカラム
015        private String  label                           = null; // ラベル
016        private String  fill                            = null; // フィル
017        private String  tension                         = null; // 伸張
018        private String  borderColor                     = null; // 線の色
019        private String  borderWidth                     = null; // 線の幅
020        private String  backgroundColor         = null; // 背景色
021        private String  optionAttributes        = null; // オプション
022
023        /**
024         * チャートカラムを設定します。
025         * 
026         * @param chartColumn チャートカラム
027         */
028        public void setChartColumn( String chartColumn ) {
029                this.chartColumn = chartColumn;
030        }
031
032        /**
033         * JsChartData オブジェクトを作成する時のチャートカラムを取得します。
034         * 
035         * @return チャートカラム
036         */
037        public String getChartColumn() {
038                return chartColumn;
039        }
040
041        /**
042         * ラベルを設定します。
043         * 
044         * @param label ラベル
045         */
046        public void setLabel( String label ) {
047                this.label = label;
048        }
049
050        /**
051         * ラベルを取得します。
052         * 
053         * @return ラベル
054         */
055        public String getLabel() {
056                return label;
057        }
058
059        /**
060         * フィル を設定します。
061         * @param fill
062         */
063        public void setFill( String fill ) {
064                this.fill = fill;
065        }
066
067        /**
068         * 線の伸張 を設定します。
069         * 
070         * @param tension
071         */
072        public void setTension( String tension ) {
073                this.tension = tension;
074        }
075
076        /**
077         * 線の色 を設定します。
078         * 
079         * @param borderColor
080         */
081        public void setBorderColor( String borderColor ) {
082                this.borderColor = borderColor;
083        }
084
085        /**
086         * 線の幅 を設定します。
087         * 
088         * @param borderWidth
089         */
090        public void setBorderWidth( String borderWidth ) {
091                this.borderWidth = borderWidth;
092        }
093
094        /**
095         * 背景色 を設定します。
096         * 
097         * @param backgroundColor
098         */
099        public void setBackgroundColor( String backgroundColor ) {
100                this.backgroundColor = backgroundColor;
101        }
102
103        /**
104         * オプション情報 を設定します。
105         * 
106         * @param optionAttributes オプション情報
107         */
108        public void setOptionAttributes( String optionAttributes ) {
109                this.optionAttributes = optionAttributes;
110        }
111
112        /**
113         * JsChartData オブジェクトを作成する時のオプション情報を取得します。
114         * 
115         * @return オプション情報
116         */
117        public String getOptionAttributes() {
118                return optionAttributes;
119        }
120
121        /**
122         * JsChartData オブジェクトを作成するときのパラメータ情報を取得します。
123         * chartColumnとoptionAttributesを使用して、
124         * パラメータ情報を作成します。 
125         * 
126         * @return パラメータ文字列
127         */
128        public String getParameter() {
129                StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_SMALL );
130                rtn.append( "{" );
131                if( label != null && label.length() > 0 ) {
132                        rtn.append( "label:'" ).append( label ).append( "'," );
133                }
134                rtn.append( "data:" ).append( chartColumn );
135                setProp( rtn, ",fill:", fill );
136                setProp( rtn, ",tension:", tension );
137                setProp( rtn, ",borderColor:", setParaOrArray( borderColor ) );
138                setProp( rtn, ",borderWidth:", borderWidth );
139                setProp( rtn, ",backgroundColor:", setParaOrArray( backgroundColor ) );
140                setProp( rtn, ",", optionAttributes );
141                rtn.append( "}" );
142
143                return rtn.toString();
144        }
145
146        /**
147         * 配列が指定される事がある場合の、値設定
148         * 
149         * @param str
150         * @return パラメータ文字
151         */
152        private String setParaOrArray( String str ) {
153                StringBuilder sb = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
154
155                // 引数が配列形式の記載であるかを判定。(頭文字が「[」であるかどうか)
156                if( str != null && str.length() > 0 && !"[".equals( str.substring( 0, 1 ) )) {
157                        // 配列でない場合は、シングルクォテーションを付与
158                        sb.append( "'" ).append( str ).append( "'" );
159                }else{
160                        // 配列の場合はそのまま
161                        sb.append( str );
162                }
163
164                return sb.toString();
165        }
166
167        /**
168         * プロパティ設定用メソッド
169         * 
170         * setに値が存在する場合,
171         * sbにstr + setの形で値を追加する。
172         * 
173         * @param sb
174         * @param str
175         * @param set
176         */
177        private void setProp( StringBuilder sb, String str, String set ) {
178                if( set != null && set.length() > 0 ) {
179                        sb.append( str ).append( set );
180                }
181        }
182}