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     */
016    package org.opengion.hayabusa.taglib;
017    
018    import org.opengion.fukurou.db.ConnectionFactory;
019    import org.opengion.fukurou.util.StringUtil;
020    import org.opengion.hayabusa.common.HybsSystem;
021    import org.opengion.hayabusa.common.HybsSystemException;
022    import org.opengion.hayabusa.io.ChartDataset;
023    import org.opengion.hayabusa.db.DBTableModel;
024    
025    import java.sql.SQLException;
026    import java.sql.Connection;
027    import java.io.ObjectOutputStream;
028    import java.io.ObjectInputStream;
029    import java.io.IOException;
030    
031    /**
032     * BODY部にæŒ?®šã?SQLの検索結果をグラãƒ?å†??棒ã?ç·?で表示するタグですã?
033     *
034     * グラフ化には、JFreeChart (http://www.jfree.org/jfreechart/) を使用してã�?�¾すã?
035     * chartType 属æ?には、ChartFactoryクラスで定義された変換表に基づくã?チャートã?
036     * 種類をæŒ?®šしますã?こã?キーから、レンãƒ?ƒ©ーã‚?ƒ‡ータセãƒ?ƒˆクラスを求めますã?
037     * それぞれのクラス毎に細かい設定å?がありますが、å?期レベルとしましては、主要チャートã?
038     * 主要属æ?のみサポã?トしますã?またã?æŒ?®šã? chartType では使用しなã�?±žæ?を指定したå?合でã‚?
039     * 単に無視するだけで、警告等ã?ありませんので、ご注意くã�?�•ã�??
040     *
041     * å�?±žæ?は、{@XXXX} 変数が使用できますã?
042     * これは、ServletRequest から、XXXX をキーに値を取りå?ã�?こã?変数に割り当てますã?
043     * つまりã?こã?XXXXをキーにリクエストすれã?、この変数に値をセãƒ?ƒˆすることができますã?
044     *
045     * useTableData="false"(初期値)の場合ã?、BODY部に書かれã�?SQL æ–?‚’実行してãƒ??タを取得しますã?
046     * useTableData="true" にすると、その前ã? query タグ等で作æ?した DBTableModel を利用して
047     * グラフ化しますã?そã?場合ã?、BODY部の SQL æ–??、無視されますã?
048     * 利用する DBTableModel は、tableId と scope 属æ?から取得しますã?
049     *
050     * @og.formSample
051     * ●形式ï¼?lt;og:chartDataset renderer="…" … />
052     * ●body?šあã‚?EVAL_BODY_BUFFERED:BODYを評価しã?{@XXXX} を解析しまã�?
053     *
054     * ●Tag定義??
055     *   <og:chartDataset
056     *       chartType        ○ã?TAG】ChartDataset のãƒ??タタイプをæŒ?®šしまã�?å¿??)ã€?
057     *       dbid               【TAGã€?通常は使ã�?�¾せん)Datasetオブジェクトを作æ?する時ã?DB接続IDを指定しまã�?
058     *       useTableData       【TAG】グラフ化するãƒ??タã‚?DBTableModel から作æ?するかどã�?�‹(初期値:false)
059     *       tableId            【TAGã€?通常使ã�?�¾せん)sessionからæ‰?¾—すã‚?DBTableModelオブジェクトã? ID (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl])
060     *       scope              【TAG】キャãƒ?‚·ュする場合ã?スコープ[request/page/session/applicaton]を指定しまã�?初期値:session)
061     *       baseLegend         【TAG】シリーズ単位ã?凡ä¾?の表示可否を設定しまã�?
062     *       valueLabel         【TAG】縦軸の表示名称を指定しまã�?
063     *       markValues         【TAG】ã?ーカーラインの設定å?をカンマ区åˆ?‚Š形式でè¤?•°æŒ?®šしまã�?
064     *       markColors         【TAG】ã?ーカーラインの色をカンマ区åˆ?‚Š形式でè¤?•°æŒ?®šしまã�?
065     *       markOverColors     【TAG】ã?ーカーラインのè¶?�Ž時ã?Shape色をカンマ区åˆ?‚Š形式でè¤?•°æŒ?®šしまã�?
066     *       dynamicOCNo        【TAG】動çš?�ªマã?カーラインの基準シリーズ番号を設定しまã�?初期値:null)
067     *       useMarkAnchor      【TAG】ã?ーカーライン描画時に、その設定å?を表示しまã�?
068     *       lowerBound         【TAG】チャートã?縦軸のæœ?°�å?をセãƒ?ƒˆしまã�?初期値:自動計ç®?
069     *       upperBound         【TAG】チャートã?縦軸のæœ?¤§値をセãƒ?ƒˆしまã�?初期値:自動計ç®?
070     *       tickSize           【TAG】チャートã?縦軸の目盛ã?å¹?‚’セãƒ?ƒˆしまã�?初期値:自動計ç®?
071     *       useGradient        【TAG】バーチャートã?グラãƒ??ション処ç�?‚’行うかどã�?�‹[true/false]をセãƒ?ƒˆしまã�?初期値:false)
072     *       shapesVisible      【TAG】ラインチャートã?ポイントを四角表示するかどã�?�‹を指定しまã�?初期値:true)
073     *       shapeColors        【TAG】データ毎にShapeをå?り替える時ã?色の繰返しパターンを文字å?配å?でæŒ?®šしまã�?
074     *       shapeScale         【TAG】shapeの大きさをå?çŽ?Œ‡定で変更しまã�?初期値:null)
075     *       useDottedLine      【TAG】ラインチャートã?線をドットラインにするかどã�?�‹[true/false]を指定しまã�?初期値:false 線å?)
076     *       seriesColors       【TAG】è¤?•°チャート描画時ã?チャート色の繰返しパターンをCVS形式でè¤?•°æŒ?®šしまã�?
077     *       valueLabelsVisible 【TAG】Value(縦軸)のラベルを表示するかどã�?�‹を指定しまã�?初期値:true[表示する])
078     *       valueMarksVisible  【TAG】Value(縦軸)のマã?カーを表示するかどã�?�‹を指定しまã�?初期値:true[表示する])
079     *       itemLabelVisible   【TAG】データの値(itemText)を表示するかどã�?�‹[true/false/last]を指定しまã�?初期値:false[表示しない])
080     *       useItemLabelSep    【TAG】データの値(itemText)の表示に、桁区åˆ?‚Šæ–?­—を使用するかどã�?�‹[true/false]を指定しまã�?初期値:true[使用する])
081     *       valueInset         【TAG】縦軸の表示領域INSET値(double)を指定しまã�?
082     *       barMaxWidth        【TAG】BOXチャートã?バã?å¹??æœ?¤§値(0.0??.0)を指定しまã�?
083     *       barItemMargin      【TAG】BOXチャートã?バã?アイãƒ?ƒ のマã?ジン(0.0??.0)を指定しまã�?
084     *       barWidth           【TAG】BOXチャートã?バã?å¹?double)を指定しまã�?
085     *       visibleLimit       【TAG】表示下限値(これ以下ã?ãƒ??タは未表示)の値(double)を指定しまã�?
086     *       domainMargin       【TAG】グラフã?書きå?し位置の調整比率を指定しまã�?
087     *       timeFormatType     【TAG】時刻を表すå?合ã?表現の仕方[E1/E2/E3/H1/H2/H3]を指定しまã�?初期値:null)
088     *       useVerticalLabels  【TAG】ラベルの表示向きを縦にするかどã�?�‹[false/true]を指定しまã�?初期値:false)
089     *       debug              【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
090     *   >   ... Body ...
091     *   </og:chartDataset>
092     *
093     * ●使用ä¾?
094     *      <og:chartCreate
095     *          command     = "{@command}"
096     *          title       = "{@title}"
097     *          domainLabel = "{@domainLabel}"
098     *          width       = "{@width}"
099     *          height      = "{@height}"
100     *          rectangleEdge   = "{@rectangleEdge}"
101     *          plotOrientation = "{@plotOrientation}"
102     *          chartBackColor  = "{@chartBackColor}"
103     *          plotBackColor   = "{@plotBackColor}"
104     *          domainMarker    = "{@domainMarker}"
105     *          useMarkerLabel  = "{@useMarkerLabel}" >
106     *              <og:chartDataset
107     *                  chartType   = "[Bar|LineAndShape|?¥?¥?¥]"      チャートã?種é¡?
108     *                  baseLegend  = "[true|false]"                シリーズ単位ã?凡ä¾?の表示可否
109     *                  valueLabel  = "縦軸"                        縦軸のラベル
110     *                  lowerBound  = "0"                           下限値
111     *                  upperBound  = "5000"                        上限値
112     *                  tickSize    = "1000"                        縦軸の目盛ã?å¹?
113     *                  markValues  = "2500,2800"                   縦軸設定å?(横æ£?
114     *                  markColors  = "RED,GREEN"                   縦軸設定ライン色
115     *                  markOverColors = "BLUE,YELLOW,RED"          マã?カーラインのè¶?�Ž時ã?Shape色
116     *                  dynamicOCNo   = "2"                         動的なマã?カーラインの基準シリーズ番号
117     *                  useMarkAnchor = "[true|false]"              縦軸設定å?(横æ£?を表示するかどã�?�‹
118     *                  useGradient   = "[false|true]"              バã?チャートã?グラãƒ??ション処ç�?
119     *                  shapesVisible = "[true|false]"              ラインの四角表示
120     *                  shapeColors   = "RED,GREEN,BLUE"            ãƒ??タ毎ã?Shapeの色
121     *                  shapeScale    = "0.8"                       shapeの大きさの倍率(double)
122     *                  useDottedLine = "[false|true]"              点線使用有無
123     *                  seriesColors  = "RED,GREEN,BLUE"            シリーズの色サイクルæŒ?®?
124     *                  valueLabelsVisible = "[true|false]"         縦軸のラベルの表示有無
125     *                  valueMarksVisible  = "[true|false]"         縦軸のマã?カーの表示有無
126     *                  itemLabelVisible   = "[false|true|last]"    ãƒ??タの値の表示有無
127     *                  useItemLabelSep    = "[true|false]"         ãƒ??タの桁区åˆ?‚Šæ–?­—ã?使用有無
128     *                  valueInset         = "15"                   縦軸の表示領域INSET値
129     *                  barMaxWidth        = "[0.0??.0]"           バã?å¹??æœ?¤§値(0.0??.0)
130     *                  barItemMargin      = "[0.0??.0]"           バã?アイãƒ?ƒ のマã?ジン(0.0??.0)
131     *                  barWidth           = "10"                   バã?å¹??実å¹?double)
132     *                  visibleLimit       = "0"                    表示下限値(これ以下ã?ãƒ??タは未表示))
133     *                  domainMargin       = "1.0"                  グラフã?書きå?し位置の調整比率
134     *                  useTableData       = "[false|true]"         SQLではなくã?DBTableModelからグラフを作æ?するかどã�?�‹
135     *                  timeFormatType     = "[1|2]"                時間軸の設å®?00:00表示)
136     *                  useVerticalLabels  = "[false|true]"         時間軸の設å®?ラベルの縦書ã�?
137     *                  tableId            = "AAA"                  useTableData="true"の場合ã?DBTableModelの取得å?ID
138     *                  scope              = "[session|request]"    useTableData="true"の場合ã?DBTableModelの取得å?scope
139     *              >
140     *                         {@SQL}
141     *              </og:chartDataset>
142     *      </og:chartCreate>
143     *
144     *    è¤?•°のグラフを重ã?合わせる場合ã?、chartDataset タグã‚?chartCreate のBODY部に
145     *    è¤?•°記述しますã?
146     *      <og:chartCreate
147     *          title       = "{@title}"
148     *          domainLabel = "{@domainLabel}"
149     *          width       = "{@width}"
150     *          height      = "{@height}" >
151     *          rectangleEdge   = "{@rectangleEdge}" >
152     *          plotOrientation = "{@plotOrientation}" >
153     *              <og:chartDataset
154     *                  chartType   = "{@chartType1}"
155     *                  valueLabel  = "{@valueLabel1}"
156     *                  lowerBound  = "{@lowerBound1}"
157     *                  upperBound  = "{@upperBound1}"
158     *                  markValues  = "{@markValues1}"
159     *                  markColors  = "{@markColors1}"
160     *              >
161     *                         {@SQL1}
162     *              </og:chartDataset>
163     *              <og:chartDataset
164     *                  chartType   = "{@chartType2}"
165     *                  valueLabel  = "{@valueLabel2}"
166     *                  lowerBound  = "{@lowerBound2}"
167     *                  upperBound  = "{@upperBound2}"
168     *                  markValues  = "{@markValues2}"
169     *                  markColors  = "{@markColors2}"
170     *              >
171     *                         {@SQL2}
172     *              </og:chartDataset>
173     *      </og:chartCreate>
174     *
175     *    chartType属æ? は、チャートã?種類をæŒ?®šするã?固有IDですã?
176     *    [chartType属æ?]
177     *      Area            , Bar               , Bar3D          , BoxAndWhisker    , CategoryStep  ,
178     *      Gantt           , GroupedStackedBar , IntervalBar    , LayeredBar       , Level         ,
179     *      LineAndShape    , Line3D            , MinMax         , StackedArea      , StackedBar    ,
180     *      StackedBar3D    , WaterfallBar      , CyclicXYItem   , HighLow          , StackedXYArea ,
181     *      StackedXYArea2  , StandardXYItem    , XYBubble       , XYDifference     , XYDot         ,
182     *      XYError         , XYLine3D          , XYLineAndShape , XYStepArea       , XYStep        ,
183     *      Meter           , MultiplePie       , Pie            , Pie3D            , Ring          ,
184     *      SpiderWeb       , Thermometer
185     *
186     *    markColors属æ? は、ã?ーカーラインの色を指定しまã�?
187     *    java.awt.Color クラスのstatic フィールド名のæ–?­—å?でæŒ?®šしますã?
188     *    [renderer属æ?]
189     *      BLACK   , BLUE   , CYAN , DARK_GRAY , GRAY  , GREEN , LIGHT_GRAY ,
190     *      MAGENTA , ORANGE , PINK , RED       , WHITE , YELLOW
191     *      #XXXXXX形式ã?16bitRGB表è¨?
192     *
193     * @og.group 画面表示
194     *
195     * @version  0.9.0      2007/06/19
196     * @author       Nakamura
197     * @since        JDK1.4,
198     */
199    public class ChartDatasetTag extends CommonTagSupport {
200            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
201            private static final String VERSION = "5.7.8.0 (2014/07/04)" ;
202    
203            private static final long serialVersionUID = 578020140704L ;
204    
205            private transient ChartDataset chDataset = new ChartDataset();
206    
207            // 4.0.0.0 (2007/10/10) dbid の初期値をã?"DEFAULT" から null に変更
208            private String  dbid    = null;
209            private String  sql             = null;
210    
211            // 5.3.0.0 (2010/12/01) DBTableModel を利用して、グラフを作æ?しますã?
212            private boolean useTableData    = false;                // 互換性の関係かã‚?
213            private String  tableId                 = HybsSystem.TBL_MDL_KEY;
214    
215            /**
216             * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
217             *
218             * @og.rev 5.3.0.0 (2010/12/01) useTableDataによるãƒ??タ取得方法ã?機è?追åŠ?
219             *
220             * @return      後続å?ç�??æŒ?¤º( EVAL_BODY_BUFFERED )
221             */
222            @Override
223            public int doStartTag() {
224                    // 5.3.0.0 (2010/12/01) useTableDataによるãƒ??タ取得方法ã?機è?追åŠ?
225                    if( useTableData ) {    // DBTableModel から取得するã?
226                            DBTableModel table = (DBTableModel)getObject( HybsSystem.TBL_MDL_KEY );
227                            chDataset.makeDataset( table );
228    
229                            return SKIP_BODY ;                      // Body を評価しなã�?
230                    }
231                    else {
232                            return EVAL_BODY_BUFFERED ;     // Body を評価するã€? extends BodyTagSupport æ™?
233                    }
234            }
235    
236            /**
237             * Taglibのタグ本体を処ç�?�™ã‚?doAfterBody() ã‚?オーバã?ライドしますã?
238             *
239             * @og.rev 5.3.0.0 (2010/12/01) ãƒ??タベã?ス検索処ç�?‚’、doEndTag() メソãƒ?ƒ‰から移å‹?
240             *
241             * @return      後続å?ç�??æŒ?¤º(SKIP_BODY)
242             */
243            @Override
244            public int doAfterBody() {
245                    sql = getBodyString();
246                    if( sql != null && sql.length() > 0 ) {
247                            sql = sql.trim();
248                    }
249    
250                    // 5.3.0.0 (2010/12/01) doEndTag() メソãƒ?ƒ‰から移å‹?
251                    boolean errFlag = true;
252                    Connection conn = null;
253                    try {
254                            conn = ConnectionFactory.connection( dbid,getApplicationInfo() );
255                            chDataset.makeDataset( conn,sql );
256                            errFlag = false;                // エラーではなã�?
257                    }
258                    catch( SQLException ex ) {
259                            String errMsg = "ãƒ??タセãƒ?ƒˆ作æ?時にエラーが発生しましたã€? + HybsSystem.CR
260                                                    + " SQL=" + sql + HybsSystem.CR
261                                                    + ex.getMessage();                      // 5.1.8.0 (2010/07/01) errMsg 修正
262                            throw new HybsSystemException( errMsg,ex );
263                    }
264                    finally {
265                            if( errFlag ) { ConnectionFactory.remove( conn,dbid ); }        // 削除
266                            else {                  ConnectionFactory.close( conn,dbid );  }        // 返却
267                    }
268    
269                    return SKIP_BODY ;
270            }
271    
272            /**
273             * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
274             *
275             * @og.rev 4.0.0.1 (2007/12/03) try ??catch ??finally をきちんと行うã€?
276             * @og.rev 5.2.1.0 (2010/10/01) debugPrint() メソãƒ?ƒ‰追åŠ?
277             * @og.rev 5.3.0.0 (2010/12/01) ãƒ??タベã?ス検索処ç�?‚’、doAfterBody() へ移å‹?
278             *
279             * @return      後続å?ç�??æŒ?¤º
280             */
281            @Override
282            public int doEndTag() {
283                    debugPrint();           // 5.2.1.0 (2010/10/01) debugPrint() メソãƒ?ƒ‰追åŠ?
284    
285                    // ç�?±ˆ上ã?ChartCreateTag の存在チェãƒ?‚¯がここで行われるがã?DB検索処ç�??、å?に行ってã�?‚‹ã€?
286                    // つまりã?無é§?�ªQUERYが実行される可能性がå?てきたがã?開発段階ã?みの話であるのでここに残しておくã€?
287                    ChartCreateTag chartTag = (ChartCreateTag)findAncestorWithClass( this,ChartCreateTag.class );
288    
289                    if( chartTag == null ) {
290                            String errMsg = "chartCreate タグが見つかりませんでしたã€?;
291                            throw new HybsSystemException( errMsg );
292                    }
293    
294                    chartTag.addChartDataset( chDataset );
295    
296                    return EVAL_PAGE;
297            }
298    
299            /**
300             * タグリブオブジェクトをリリースしますã?
301             * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
302             *
303             * @og.rev 4.0.0.0 (2007/10/10) dbid の初期値をã?"DEFAULT" から null に変更
304             * @og.rev 5.3.0.0 (2010/12/01) useTableData,tableId 属æ?追åŠ?
305             */
306            @Override
307            protected void release2() {
308                    super.release2();
309                    chDataset       = new ChartDataset();
310                    dbid            = null;
311                    sql                     = null;
312                    useTableData    = false;                                        // 5.3.0.0 (2010/12/01)
313                    tableId                 = HybsSystem.TBL_MDL_KEY;       // 5.3.0.0 (2010/12/01)
314            }
315    
316            /**
317             * 【TAGã€?通常は使ã�?�¾せん)Datasetオブジェクトを作æ?する時ã?DB接続IDを指定しますã?
318             *
319             * @og.tag
320             * Datasetオブジェクトを作æ?する時ã?DB接続IDを指定しますã?
321             * これは、シスãƒ?ƒ リソースで、DEFAULT_DB_URL 等でæŒ?®šしてã�?‚‹ ãƒ??タベã?ス接続å?
322             * æƒ??に、XX_DB_URL を定義することでã€?dbid="XX" とすると、この 接続å?を使用して
323             * ãƒ??タベã?スにアクセスできますã?
324             *
325             * @param       id      ãƒ??タベã?ス接続ID
326             */
327            public void setDbid( final String id ) {
328                    dbid = StringUtil.nval( getRequestParameter( id ),dbid );
329            }
330    
331            /**
332             * 【TAG】ChartDataset のãƒ??タタイプをæŒ?®šしますã?
333             *
334             * @og.tag
335             * チャートタイãƒ?は、外部からチャートをæŒ?®šするã?に便利なように、キーåŒ?
336             * されてã�?�¾すã?こã?キーに基づã�?�¦、ChartFactory クラスの
337             * チャートタイプ変換表に基づã�?�¦、レンãƒ?ƒ©ーã‚??ãƒ??タセãƒ?ƒˆを作æ?しますã?
338             * 基本çš?�«は、チャートタイãƒ?は、この、レンãƒ?ƒ©ー名称から決定してã�?�¾すã?
339             *
340             * <table border="1" frame="box" rules="all" >
341             *   <caption>å�?¨®オブジェクトã?çµ?�¿合わせä¸?¦§</caption>
342             *   <tr><th> チャートタイãƒ?         </th><th> レンãƒ?ƒ©ー(org.jfree.chart.renderer.)    </th><th> Dataset     </th></tr>
343             *   <tr><td> HybsLine                </td><td> HybsLineRenderer                         </td><td> Category    </td></tr>
344             *   <tr><td> LineAndShape            </td><td> category.LineAndShapeRenderer            </td><td> Category    </td></tr>
345             *   <tr><td> Line3D                  </td><td> category.LineRenderer3D                  </td><td> Category    </td></tr>
346             *   <tr><td> StatisticalLineAndShape </td><td> category.StatisticalLineAndShapeRenderer </td><td> Category    </td></tr>
347             *   <tr><td> HybsBar                 </td><td> HybsBarRenderer                          </td><td> Category    </td></tr>
348             *   <tr><td> Bar                     </td><td> category.BarRenderer                     </td><td> Category    </td></tr>
349             *   <tr><td> Bar3D                   </td><td> category.BarRenderer3D                   </td><td> Category    </td></tr>
350             *   <tr><td> Area                    </td><td> category.AreaRenderer                    </td><td> Category    </td></tr>
351             *   <tr><td> HybsStackedBar          </td><td> HybsStackedBarRenderer                   </td><td> Category    </td></tr>
352             *   <tr><td> StackedBar              </td><td> category.StackedBarRenderer              </td><td> Category    </td></tr>
353             *   <tr><td> StackedBar3D            </td><td> category.StackedBarRenderer3D            </td><td> Category    </td></tr>
354             *   <tr><td> StackedArea             </td><td> category.StackedAreaRenderer             </td><td> Category    </td></tr>
355             *   <tr><td> GroupedStackedBar       </td><td> category.GroupedStackedBarRenderer       </td><td> Category    </td></tr>
356             *   <tr><td> LayeredBar              </td><td> category.LayeredBarRenderer              </td><td> Category    </td></tr>
357             *   <tr><td> CategoryStep            </td><td> category.CategoryStepRenderer            </td><td> Category    </td></tr>
358             *   <tr><td> Level                   </td><td> category.LevelRenderer                   </td><td> Category    </td></tr>
359             *   <tr><td> MinMax                  </td><td> category.MinMaxCategoryRenderer          </td><td> Category    </td></tr>
360             *   <tr><td> WaterfallBar            </td><td> category.WaterfallBarRenderer            </td><td> Category    </td></tr>
361             *   <tr><td> MultiplePie             </td><td> null                                     </td><td> Category    </td></tr>
362             *   <tr><td> SpiderWeb               </td><td> null                                     </td><td> Category    </td></tr>
363             *   <tr><td> Pie                     </td><td> null                                     </td><td> Pie         </td></tr>
364             *   <tr><td> Pie3D                   </td><td> null                                     </td><td> Pie         </td></tr>
365             *   <tr><td> Ring                    </td><td> null                                     </td><td> Pie         </td></tr>
366             *   <tr><td> XYArea                  </td><td> xy.XYAreaRenderer                        </td><td> XY          </td></tr>
367             *   <tr><td> XYArea2                 </td><td> xy.XYAreaRenderer2                       </td><td> XY          </td></tr>
368             *   <tr><td> XYBlock                 </td><td> xy.XYBlockRenderer                       </td><td> XY          </td></tr>
369             *   <tr><td> CyclicXYItem            </td><td> xy.CyclicXYItemRenderer                  </td><td> XY          </td></tr>
370             *   <tr><td> HighLow                 </td><td> xy.HighLowRenderer                       </td><td> XY          </td></tr>
371             *   <tr><td> StackedXYArea           </td><td> xy.StackedXYAreaRenderer                 </td><td> XY          </td></tr>
372             *   <tr><td> StackedXYArea2          </td><td> xy.StackedXYAreaRenderer2                </td><td> XY          </td></tr>
373             *   <tr><td> StandardXYItem          </td><td> xy.StandardXYItemRenderer                </td><td> XY          </td></tr>
374             *   <tr><td> XYBubble                </td><td> xy.XYBubbleRenderer                      </td><td> XY          </td></tr>
375             *   <tr><td> XYDifference            </td><td> xy.XYDifferenceRenderer                  </td><td> XY          </td></tr>
376             *   <tr><td> XYDot                   </td><td> xy.XYDotRenderer                         </td><td> XY          </td></tr>
377             *   <tr><td> XYError                 </td><td> xy.XYErrorRenderer                       </td><td> XY          </td></tr>
378             *   <tr><td> XYLine3D                </td><td> xy.XYLine3DRenderer                      </td><td> XY          </td></tr>
379             *   <tr><td> XYLineAndShape          </td><td> xy.XYLineAndShapeRenderer                </td><td> XY          </td></tr>
380             *   <tr><td> XYStepArea              </td><td> xy.XYStepAreaRenderer                    </td><td> XY          </td></tr>
381             *   <tr><td> XYStep                  </td><td> xy.XYStepRenderer                        </td><td> XY          </td></tr>
382             *   <tr><td> PolarItem               </td><td> DefaultPolarItemRenderer                 </td><td> XY          </td></tr>
383             *   <tr><td> Meter                   </td><td> null                                     </td><td> Value       </td></tr>
384             *   <tr><td> Thermometer             </td><td> null                                     </td><td> Value       </td></tr>
385             *   <tr><td> Compass                 </td><td> null                                     </td><td> Value       </td></tr>
386             *   <tr><td> Gantt                   </td><td> category.GanttRenderer                   </td><td> TaskSeries  </td></tr>
387             *   <tr><td> XYBarV                  </td><td> xy.XYBarRenderer                         </td><td> TimeSeries  </td></tr>
388             *   <tr><td> ClusteredXYBarV         </td><td> xy.ClusteredXYBarRenderer                </td><td> TimeSeries  </td></tr>
389             *   <tr><td> YIntervalV              </td><td> xy.YIntervalRenderer                     </td><td> TimeSeries  </td></tr>
390             *   <tr><td> DeviationV              </td><td> xy.DeviationRenderer                     </td><td> TimeSeries  </td></tr>
391             *   <tr><td> TimeSeriesLineV         </td><td> xy.StandardXYItemRenderer                </td><td> TimeSeries  </td></tr>
392             *   <tr><td> TimeSeriesLineH         </td><td> xy.StandardXYItemRenderer                </td><td> TimeSeries  </td></tr>
393             *   <tr><td> TimeSeriesBarV          </td><td> xy.XYBarRenderer                         </td><td> TimeSeries  </td></tr>
394             *   <tr><td> TimeSeriesBarH          </td><td> xy.XYBarRenderer                         </td><td> TimeSeries  </td></tr>
395             *   <tr><td> StackedTimeSeriesLineV  </td><td> xy.StandardXYItemRenderer                </td><td> TimeSeries  </td></tr>
396             *   <tr><td> StackedTimeSeriesLineH  </td><td> xy.StandardXYItemRenderer                </td><td> TimeSeries  </td></tr>
397             * </table>
398             *
399             * Meter と Compass は、さらに、needleType が指定できますã?
400             * これは、Meter_PIE ã‚??Compass_Arrow などとすることで、形状を指定できますã?
401             * Meter には、CHORD,CIRCLE(初期値),PIE
402             * Compass には、Arrow,Line,Long,Pin,Plum,Pointer(初期値),Ship,Wind,Arrow,MiddlePin が指定できますã?
403             *
404             * @og.rev 5.7.8.0 (2014/07/04) needleType 対å¿?
405             *
406             * @param       chartType       チャートタイãƒ?
407             * @see         org.jfree.chart.renderer.category.CategoryItemRenderer
408             * @see         org.jfree.chart.renderer.xy.XYItemRenderer
409             */
410            public void setChartType( final String chartType ) {
411    //              chDataset.setChartType( getRequestParameter( chartType ) );
412    
413                    // 5.7.8.0 (2014/07/04) needleType 対å¿?
414                    String chType = getRequestParameter( chartType ) ;
415    
416                    int adrs = chType.indexOf( '_' );
417                    if( adrs < 0 ) {
418                            // 今まで通り chartType の設å®?
419                            chDataset.setChartType( chType );
420                    }
421                    else {
422                            chDataset.setChartType(  chType.substring(0,adrs) );
423                            chDataset.setNeedleType( chType.substring(adrs+1) );
424                    }
425            }
426    
427            /**
428             * 【TAG】グラフ化するãƒ??タã‚?DBTableModel から作æ?するかどã�?�‹(初期値:false)ã€?
429             *
430             * @og.tag
431             * useTableData="false"(初期値)の場合ã?、BODY部に書かれã�?SQL æ–?‚’実行してãƒ??タを取得しますã?
432             * useTableData="true" にすると、その前ã? query タグ等で作æ?した DBTableModel を利用して
433             * グラフ化しますã?そã?場合ã?、BODY部の SQL æ–??、無視されますã?
434             * 利用する DBTableModel は、tableId と scope 属æ?から取得しますã?
435             *
436             * @og.rev 5.3.0.0 (2010/12/01) 新規追åŠ?
437             *
438             * @param       flag    ãƒ??タをDBTableModelを利用する場合ã?true
439             */
440            public void setUseTableData( final String flag ) {
441                    useTableData = StringUtil.nval( getRequestParameter( flag ),useTableData );
442            }
443    
444            /**
445             * 【TAGã€?通常は使ã�?�¾せん)結果のDBTableModelをã?sessionに登録するときã?キーを指定しまã�?
446             *              (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
447             *
448             * @og.tag
449             * 検索結果より、DBTableModelオブジェクトを作æ?しますã?これをã?下流ã?viewタグ等に
450             * 渡すå?合にã€??常は、session を利用しますã?そã?場合ã?登録キーですã?
451             * query タグを同時に実行して、結果を求めるå?合ã?同ä¸?ƒ¡モリに配置される為ã€?
452             * こã? tableId 属æ?を利用して、メモリ空間をåˆ?�‘ますã?
453             *              (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
454             *
455             * @param       id sessionに登録する時ã? ID
456             */
457            public void setTableId( final String id ) {
458                    tableId = StringUtil.nval( getRequestParameter( id ), tableId );
459            }
460    
461            /**
462             * 【TAG】シリーズ単位ã?凡ä¾?の表示可否を設定しますã?
463             *
464             * @og.tag
465             * シリーズ単位ã?凡ä¾?の表示可否を設定しますã?
466             *
467             * @param       baseLegend      シリーズ単位ã?凡ä¾?の表示可否
468             */
469            public void setBaseLegend( final String baseLegend ) {
470                    boolean flag = StringUtil.nval( getRequestParameter( baseLegend ),true );
471                    chDataset.setBaseLegend( flag );
472            }
473    
474            /**
475             * 【TAG】縦軸の表示名称を指定しますã?
476             *
477             * @og.tag
478             * 縦軸の表示名称を指定しますã?
479             *
480             * @param       valueLabel      縦軸の表示名称
481             */
482            public void setValueLabel( final String valueLabel ) {
483                    chDataset.setValueLabel( getRequestParameter( valueLabel ) );
484            }
485    
486            /**
487             * 【TAG】ã?ーカーラインの設定å?をカンマ区åˆ?‚Š形式でè¤?•°æŒ?®šしますã?
488             *
489             * @og.tag
490             * æŒ?®šã?値にマã?カーラインを引きますã?
491             * 色は、setMarkColors( String ) でæŒ?®šしますã?
492             * markColors と、å?数をあわせて設定するå¿?¦�がありますã?
493             * どちらかがã?æŒ?®šされてã�?�ªã�??合ã?、ã?ーカー表示されませんã€?
494             * dynamicOCNo を使用する場合ã?、そのValues の並びのç®?‰€にã€?
495             * "G"  とã�?�†æ–?­—å?を設定して下さã�??
496             * 例ï¼?000,G  基準1ã?ã€?000の直線ã?基準2ã?、グラãƒ?とã�?�†意味ã€?
497             *
498             * @param       markValues      マã?カーラインの設定å?(CSV形å¼?
499             * @see         #setMarkColors( String )
500             */
501            public void setMarkValues( final String markValues ) {
502                    String vals = StringUtil.nval( getRequestParameter( markValues ),null );
503                    if( vals != null ) {
504                            chDataset.setMarkValues( StringUtil.csv2Array( vals ) );
505                    }
506            }
507    
508            /**
509             * 【TAG】ã?ーカーライン描画時に、その設定å?を表示しますã?
510             *
511             * @og.tag
512             * マã?カーラインの縦軸の設定å?(markValues)に、設定å?をラベル表示しますã?
513             * 位置は、TextAnchor.BASELINE_LEFT 固定ですã?
514             * 初期値は、表示する(true)ですã?
515             *
516             * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
517             *
518             * @param   useAnchor true:設定å?を表示するã€?
519             */
520            public void setUseMarkAnchor( final String useAnchor ) {
521                    boolean flag = StringUtil.nval( getRequestParameter( useAnchor ),true );
522                    chDataset.setUseMarkAnchor( flag );
523            }
524    
525            /**
526             * 【TAG】ã?ーカーラインの色をカンマ区åˆ?‚Š形式でè¤?•°æŒ?®šしますã?
527             *
528             * @og.tag
529             * マã?カーラインとは、縦軸設定ã?ラインの事で、縦軸の設定å?(markValues)に
530             * 横方向にラインを付与しますã?こã?ラインの色をã?カンマ区åˆ?‚Š形式で
531             * æŒ?®šしますã?
532             * markValues と、あわせて設定するå¿?¦�がありますã?
533             * 個数が異なるå?合ã?、markValues が優先されã?無æŒ?®šã?場合ã?、Color.REDで
534             * 表示されますã?
535             *
536             * æŒ?®š文字å?は、java.awt.Color クラスのstatic フィールド名でæŒ?®šしますã?
537             * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
538             * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できますã?
539             * またã?#XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
540             * <pre>
541             *      BLACK   , BLUE   , CYAN , DARK_GRAY , GRAY  , GREEN , LIGHT_GRAY ,
542             *      MAGENTA , ORANGE , PINK , RED       , WHITE , YELLOW , (PURPLE)
543             *      #XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
544             * </pre>
545             *
546             * @param       markColors      マã?カーラインの色(CSV形å¼?
547             * @see         java.awt.Color#BLACK
548             * @see         #setMarkValues( String )
549             */
550            public void setMarkColors( final String markColors ) {
551                    String clrs = StringUtil.nval( getRequestParameter( markColors ),null );
552                    if( clrs != null ) {
553                            chDataset.setMarkColors( StringUtil.csv2Array( clrs ) );
554                    }
555            }
556    
557            /**
558             * 【TAG】ã?ーカーラインのè¶?�Ž時ã?Shape色をカンマ区åˆ?‚Š形式でè¤?•°æŒ?®šしますã?
559             *
560             * @og.tag
561             * HybsLine でのみ使用可能ですã?
562             * マã?カーラインを使用する場合に、そのラインをè¶?�ˆなã�?‰²、è¶?�ˆる色を指定しますã?
563             * こã?色のæŒ?®šã?、ã?ーカーラインの色ã‚??ーカーラインの設定å?の個数?‹1に
564             * なりますã?つまりã?色?‘:設定å??‘:色?’:設定å??’:色??となりますã?
565             * 色?‘ã?、設定å??‘より小さã�??合に使用され、色?’ã?、設定å??‘より大きくã€?
566             * 設定å??’より小さã�??合ã?色?“ã?、設定å??’より大きい場合になりますã?
567             *
568             * æŒ?®š文字å?は、java.awt.Color クラスのstatic フィールド名でæŒ?®šしますã?
569             * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
570             * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できますã?
571             * またã?#XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
572             * markValues と、あわせて設定するå¿?¦�がありますã?
573             * どちらかがã?æŒ?®šされてã�?�ªã�??合ã?、ã?ーカー表示されませんã€?
574             * <pre>
575             *      BLACK   , BLUE   , CYAN , DARK_GRAY , GRAY  , GREEN , LIGHT_GRAY ,
576             *      MAGENTA , ORANGE , PINK , RED       , WHITE , YELLOW , (PURPLE)
577             *      #XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
578             * </pre>
579             *
580             * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
581             *
582             * @param       overColors      マã?カーラインのè¶?�Ž時ã?Shape色(CSV形å¼?
583             * @see         java.awt.Color#BLACK
584             */
585            public void setMarkOverColors( final String overColors ) {
586                    String clrs = StringUtil.nval( getRequestParameter( overColors ),null );
587                    if( clrs != null ) {
588                            chDataset.setMarkOverColors( StringUtil.csv2Array( clrs ) );
589                    }
590            }
591    
592            /**
593             * 【TAG】動çš?�ªマã?カーラインの基準シリーズ番号を設定しまã�?初期値:null)ã€?
594             *
595             * @og.tag
596             * 動的なマã?カーラインを使用する場合ã?、基準å?となるシリーズ番号を指定しますã?
597             *
598             * マã?カーラインのæœ?¸‹位閾値に相当しますã?これは、グラフ化されますがã€?
599             * Shape は自動的に削除されますã?
600             * こã?設定を使用する場合ã?æœ??のãƒ??タには、å¿?�šShapeが付きますã?それ以外ã?
601             * ãƒ??タに、Shape を付けるかどã�?�‹は、shapesVisible 属æ?でæŒ?®šしますã?
602             * こã?線ã?色は、markColors でæŒ?®šしたã?æœ?¸‹位ã?色になりますã?またã?
603             * markValues でæŒ?®šしたã?æœ?¸‹位ã?値は、使用されません。たã�?�—、色æŒ?®šã?
604             * 関係上ã?設定しておくå¿?¦�がありますã?
605             * またã?isValueVisible == true で、設定å?の値表示を行う場合も、最下位ã?
606             * 値は表示しなã�?‚ˆã�?�«しますã?
607             * 初期値は、使用しなã�?null)ですã?
608             *
609             * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
610             * @og.rev 4.1.1.0 (2008/02/19) setUseDynamicOC �setDynamicOCNo
611             *
612             * @param   dynamicOCNo true:動的なマã?カーラインの基準シリーズ番号
613             */
614            public void setDynamicOCNo( final String dynamicOCNo ) {
615                    int ocNo = StringUtil.nval( getRequestParameter( dynamicOCNo ),-1 );
616                    chDataset.setDynamicOCNo( ocNo );
617            }
618    
619            /**
620             * 【TAG】チャートã?縦軸のæœ?°�å?をセãƒ?ƒˆしまã�?初期値:自動計ç®?ã€?
621             *
622             * @og.tag
623             * 何もæŒ?®šしなã�??合ã?、データのæœ?°�å?から、è?動的に計算しますã?
624             *
625             * @param       lowerBound      縦軸のæœ?°�å?
626             */
627            public void setLowerBound( final String lowerBound ) {
628                    chDataset.setLowerBound( getRequestParameter( lowerBound ) );
629            }
630    
631            /**
632             * 【TAG】チャートã?縦軸のæœ?¤§値をセãƒ?ƒˆしまã�?初期値:自動計ç®?ã€?
633             *
634             * @og.tag
635             * 何もæŒ?®šしなã�??合ã?、データのæœ?¤§値から、è?動的に計算しますã?
636             *
637             * @param       upperBound      縦軸のæœ?¤§値
638             */
639            public void setUpperBound( final String upperBound ) {
640                    chDataset.setUpperBound( getRequestParameter( upperBound ) );
641            }
642    
643            /**
644             * 【TAG】チャートã?縦軸の目盛ã?å¹?‚’セãƒ?ƒˆしまã�?初期値:自動計ç®?ã€?
645             *
646             * @og.tag
647             * 何もæŒ?®šしなã�??合ã?、データのç¯?›²から、è?動的に計算しますã?
648             *
649             * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
650             *
651             * @param   size 縦軸のチック(目ç›?のå¹?
652             */
653            public void setTickSize( final String size ) {
654                    chDataset.setTickSize( getRequestParameter( size ) );
655            }
656    
657            /**
658             * 【TAG】バーチャートã?グラãƒ??ション処ç�?‚’行うかどã�?�‹[true/false]をセãƒ?ƒˆしまã�?初期値:false)ã€?
659             *
660             * @og.tag
661             * 通常のバã?チャートã?、単ä¸?‰²表示で表されますが、これにグラãƒ??ション効果を
662             * 付加するかどã�?�‹を指定しますã?
663             * 通常のバã?チャートが、少しきれã�?�«見えますã?
664             * 初期値は、false(使用しなã�?ですã?
665             *
666             * @param       useGradient     グラãƒ??ション処ç�?[true:する/false:しない]
667             */
668            public void setUseGradient( final String useGradient ) {
669                    boolean flag = StringUtil.nval( getRequestParameter( useGradient ),false );
670                    chDataset.setUseGradient( flag );
671            }
672    
673            /**
674             * 【TAG】ラインチャートã?ポイントを四角表示するかどã�?�‹を指定しまã�?初期値:true)ã€?
675             *
676             * @og.tag
677             * ラインチャートã?ã€??常、線å?で表され、各ポイントにつã�?�¦もã?線å?で接続されますã?
678             * shapesVisible ã‚?true に設定すると、各ポイントが、線上に四角く表示されã€?
679             * そã?ポイントã?位置をã?容易に判断出来るよã�?�«なりますã?
680             * 初期値は、true( LineAndShape )ですã?
681             *
682             * @param       shapesVisible   ポイントを四角表示するかどã�?�‹
683             */
684            public void setShapesVisible( final String shapesVisible ) {
685                    boolean flag = StringUtil.nval( getRequestParameter( shapesVisible ),true );
686                    chDataset.setShapesVisible( flag );
687            }
688    
689            /**
690             * 【TAG】データ毎にShapeをå?り替える時ã?色の繰返しパターンを文字å?配å?でæŒ?®šしますã?
691             *
692             * @og.tag
693             * HybsLine でのみ使用可能ですã?
694             * これは、データそã?もã?がã?繰返し性のある場合に、その繰返し性に対応しã�?
695             * 形状のShape を表示させるå?合に使用しますã?
696             * 繰返しShapeの形状は、JFreeChart のシリーズ毎ã?繰返し標準形状を使用しますã?
697             * 現在のバã?ジョンではã€?¼‘0å?までの繰返しに対応可能ですã?
698             * 繰返し色をã?æŒ?®šしたå?ã�?�‘ã€??に使用されてã�?��ますã?
699             *
700             * æŒ?®š文字å?は、java.awt.Color クラスのstatic フィールド名でæŒ?®šしますã?
701             * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
702             * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できますã?
703             * またã?#XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
704             *
705             * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
706             *
707             * @param       colors  ãƒ??タ毎ã?色の繰返しパターン(æ–?­—å?配å?)
708             * @see         java.awt.Color#BLACK
709             */
710            public void setShapeColors( final String colors ) {
711                    String clrs = StringUtil.nval( getRequestParameter( colors ),null );
712                    if( clrs != null ) {
713                            chDataset.setShapeColors( StringUtil.csv2Array( clrs ) );
714                    }
715            }
716    
717            /**
718             * 【TAG】shapeの大きさをå?çŽ?Œ‡定で変更しまã�?初期値:null)ã€?
719             *
720             * @og.tag
721             * ラインチャートã?Shape(å�?‚°ラフã?ポイントã?マã?カー)の大きさはã€??常はã€?
722             * 自動設定されますã?
723             * こã?大きさをã?倍率æŒ?®šで、変更可能ですã?
724             * æŒ?®šã?、double 型ですã?
725             * 初期値は、null は、スケール変更しません(自動設定ã?ままの大きさ)
726             *
727             * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
728             *
729             * @param       scale   shapeの大きさの倍率
730             */
731            public void setShapeScale( final String scale ) {
732                    String shapeScale = StringUtil.nval( getRequestParameter( scale ),null );
733                    if( shapeScale != null ) {
734                            chDataset.setShapeScale( shapeScale );
735                    }
736            }
737    
738            /**
739             * 【TAG】ラインチャートã?線をドットラインにするかどã�?�‹[true/false]を指定しまã�?初期値:false[線å?])ã€?
740             *
741             * @og.tag
742             * ラインチャートã?ã€??常、線å?で表されますã?
743             * これに、点線で表すことで、グラフã?違いをã?色ã�?�‘でなく形状でも識別
744             * しやすくすることが可能ですã?
745             * 初期値は、false(線å?)ですã?
746             *
747             * @param       useDottedLine   ドットラインにするかどã�?�‹ [true:点ç·?false:線å?]
748             */
749            public void setUseDottedLine( final String useDottedLine ) {
750                    boolean flag = StringUtil.nval( getRequestParameter( useDottedLine ),false );
751                    chDataset.setUseDottedLine( flag );
752            }
753    
754            /**
755             * 【TAG】è¤?•°チャート描画時ã?チャート色の繰返しパターンをCVS形式でè¤?•°æŒ?®šしますã?
756             *
757             * @og.tag
758             * 通常、è¤?•°のチャートを同時に表示させるå?合ã?、縦軸がå?通であればã€?
759             * ?‘回のSelectåˆ?�§è¤?•°ãƒ??タを取得しますã?
760             * こã?、データをシリーズと呼んでおり、これを区別する為に、色をå?けますã?
761             * 初期値は、JFreeChart がè?動で割り振りますã?
762             * これをã?外部からCVS形式で、カンマ区åˆ?‚Šで色コードをæŒ?®šしますã?
763             * æŒ?®šデータが多い場合ã?、多いåˆ??色は使用されません。少なã�??合ã?ã€?
764             * é ?•ªに繰り返して使用されますã?
765             * 例えばã€?¼‘色ã�?�‘æŒ?®šしたå?合ã?、すべてのシリーズが同じ色で表されますã?
766             *
767             * æŒ?®š文字å?は、java.awt.Color クラスのstatic フィールド名でæŒ?®šしますã?
768             * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
769             * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できますã?
770             *
771             * またã?#XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
772             *
773             * @param       colors  チャート色の繰返しパターン(CVS形å¼?
774             * @see         java.awt.Color#BLACK
775             */
776            public void setSeriesColors( final String colors ) {
777                    String clrs = StringUtil.nval( getRequestParameter( colors ),null );
778                    if( clrs != null ) {
779                            chDataset.setSeriesColors( StringUtil.csv2Array( clrs ) );
780                    }
781            }
782    
783            /**
784             * 【TAG】Value(縦軸)のラベルを表示するかどã�?�‹を指定しまã�?初期値:true[表示する])ã€?
785             *
786             * @og.tag
787             * ValueAxis にて設定される、縦軸æƒ??の、ラベルを表示するかどã�?�‹æŒ?®šしますã?
788             * 初期値は、true(表示する)ですã?
789             *
790             * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
791             *
792             * @param       labelsVisible   Value(縦軸)のラベルを表示するかどã�?�‹
793             */
794            public void setValueLabelsVisible( final String labelsVisible ) {
795                    boolean flag = StringUtil.nval( getRequestParameter( labelsVisible ),true );
796                    chDataset.setValueLabelsVisible( flag );
797            }
798    
799            /**
800             * 【TAG】Value(縦軸)のマã?カーを表示するかどã�?�‹を指定しまã�?初期値:true[表示する])ã€?
801             *
802             * @og.tag
803             * ValueAxis にて設定される、縦軸æƒ??の、ã?ーカーを表示するかどã�?�‹æŒ?®šしますã?
804             * 初期値は、true(表示する)ですã?
805             *
806             * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
807             *
808             * @param       marksVisible    Value(縦軸)のマã?カーを表示するかどã�?�‹
809             */
810            public void setValueMarksVisible( final String marksVisible ) {
811                    boolean flag = StringUtil.nval( getRequestParameter( marksVisible ),true );
812                    chDataset.setValueMarksVisible( flag );
813            }
814    
815            /**
816             * 【TAG】データの値(itemText)を表示するかどã�?�‹[true/false/last]を指定しまã�?初期値:false[表示しない])ã€?
817             *
818             * @og.tag
819             * CategoryItemRenderer 関連のグラフã?設定å?をグラフ上に表示するかどã�?�‹ã‚?
820             * æŒ?®šしますã?
821             * true に設定したå?合ã?通常の場合ã?、すべてのシリーズにラベル表示されますã?
822             * false に設定すると、表示されませんã€?
823             * last を設定すると、各シリーズのæœ?¾Œã?値のみ表示されますã?
824             * ChartCreate クラスに、seriesPikup が設定されてã�?‚‹場合ã?、指定ã?シリーズ
825             * のみの設定å?を表示しã?他ã?値は、表示しませんã€?
826             * 同様に、dynamicOCNo が指定されてã�?‚‹場å�?動的なマã?カーライン)
827             * æœ?¸‹位ã?シリーズはã€?–¾値として使用されるためã?設定å?は表示されませんã€?
828             * ラベルの表示位置は、表示する線グラフã?傾きに応じてラベルの表示場æ‰?‚’
829             * 変えますã?山形、右坂ã?谷形、左å�?に応じて、上中、下右、下中、上右 に
830             * 位置を設定しますã?右にずらすã?はã€?0 ピクセル固定ですã?
831             * 初期値は、false(表示しなã�?ですã?
832             *
833             * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
834             * @og.rev 4.1.2.0 (2008/03/12) æ–?­—å?のまま、渡すよã�?�«変更
835             *
836             * @param       itemLabelVisible        ãƒ??タの値の表示のさせ方(true,false,last)
837             */
838            public void setItemLabelVisible( final String itemLabelVisible ) {
839                    String flag = StringUtil.nval( getRequestParameter( itemLabelVisible ),"false" );
840                    chDataset.setItemLabelVisible( flag );
841            }
842    
843            /**
844             * 【TAG】データの値(itemText)の表示に、桁区åˆ?‚Šæ–?­—を使用するかどã�?�‹[true/false]を指定しまã�?初期値:true[使用する])ã€?
845             *
846             * @og.tag
847             * itemLabelVisible=true 時に、表示されるデータ値ラベルでã€?
848             * NumberFormat してã�?�¾すがã€?¼“桁区åˆ?‚Šæ–?­?123,456,789.0) の
849             * 区åˆ?‚Š記号を表示するかどã�?�‹を指定しますã?
850             * true を指定すると、表示しますã?false では、表示しませんã€?
851             * 初期値は、true(使用する)ですã?
852             *
853             * @og.rev 4.1.2.0 (2008/03/12) 新規追åŠ?
854             *
855             * @param       used    ãƒ??タの桁区åˆ?‚Šæ–?­—ã?使用有無
856             */
857            public void setUseItemLabelSep( final String used ) {
858                    boolean useItemLabelSep = StringUtil.nval( getRequestParameter( used ),true );
859                    chDataset.setUseItemLabelSep( useItemLabelSep );
860            }
861    
862            /**
863             * 【TAG】縦軸の表示領域INSET値(double)を指定しますã?
864             *
865             * @og.tag
866             * 縦軸æ–?­—表示領域(NumberAxis)のå¹??追åŠ??を設定しますã?
867             * これはã€??常の表示領域の左側にスペã?スを挿入しますã?
868             * あくまで、追åŠ?�™るå?なので、文字ã?長さã?含まれませんã€?
869             * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
870             *
871             * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
872             *
873             * @param       inset   Value(縦軸)の表示領域INSET値
874             */
875            public void setValueInset( final String inset ) {
876                    String valueInset = StringUtil.nval( getRequestParameter( inset ),null );
877                    chDataset.setValueInset( valueInset );
878            }
879    
880            /**
881             * 【TAG】BOXチャートã?バã?å¹?double)を指定しますã?
882             *
883             * @og.tag
884             * BOXチャートã?バã?å¹?double)を指定しますã?
885             * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer ã‚?
886             * 使用した描画のみですã?
887             * 棒グラフã?バã?å¹?Œ‡定ã?、直接、CategoryItemRendererState に設定してã�?�¾すã?
888             * 通常は、barMaxWidth(0.0??.0)とbarItemMargin(0.0??.0)を用ã�?�¦比率でæŒ?®šしますã?
889             * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
890             *
891             * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
892             *
893             * @param       width   BOXチャートã?バã?å¹?double)
894             */
895            public void setBarWidth( final String width ) {
896                    String barWidth = StringUtil.nval( getRequestParameter( width ),null );
897                    chDataset.setBarWidth( barWidth );
898            }
899    
900            /**
901             * 【TAG】BOXチャートã?バã?å¹??æœ?¤§値(0.0??.0)を指定しますã?
902             *
903             * @og.tag
904             * BOXチャートã?バã?å¹??比率のæœ?¤§値を指定しますã?
905             * 表示領域を1として小数点以下ã?数値で棒ã?å¹?‚’設定しますã?
906             * 設定したå¹?�«無ç�?�Œある時ã?適当なサイズに調整されますã?
907             * (小さくしたときには棒が線ã?ようになã‚?
908             * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer ã‚?
909             * 使用した描画のみですã?
910             * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
911             *
912             * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
913             *
914             * @param       barWidth        BOXチャートã?バã?å¹??æœ?¤§値(0.0??.0)
915             */
916            public void setBarMaxWidth( final String barWidth ) {
917                    String maxBarWidth = StringUtil.nval( getRequestParameter( barWidth ),null );
918                    chDataset.setBarMaxWidth( maxBarWidth );
919            }
920    
921            /**
922             * 【TAG】BOXチャートã?バã?アイãƒ?ƒ のマã?ジン(0.0??.0)を指定しますã?
923             *
924             * @og.tag
925             * BOXチャートã?バã?アイãƒ?ƒ のマã?ジンの比率を指定しますã?
926             * 棒ã?間を表示領域を1として小数点以下ã?数値でå¹?‚’設定しますã?
927             * 無ç�?�Œある時ã?適当なサイズに調整されますã?
928             * barMaxWidth より優先されますã?
929             * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer ã‚?
930             * 使用した描画のみですã?
931             * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
932             *
933             * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
934             *
935             * @param       margin  BOXチャートã?バã?アイãƒ?ƒ のマã?ジン(0.0??.0)
936             */
937            public void setBarItemMargin( final String margin ) {
938                    String itemMargin = StringUtil.nval( getRequestParameter( margin ),null );
939                    chDataset.setBarItemMargin( itemMargin );
940            }
941    
942            /**
943             * 【TAG】表示下限値(これ以下ã?ãƒ??タは未表示)の値(double)を指定しますã?
944             *
945             * @og.tag
946             * HybsLine でのみ使用可能ですã?
947             * こã?設定å?以下ã?ãƒ??タは、存在しなã�?‰±ã�?�¨しますã?
948             * Lineを引くときã?こã?ãƒ??タと、存在してã�?‚‹ãƒ??タ間にラインは引かれませんã€?
949             * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
950             *
951             * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
952             *
953             * @param       limit   表示下限値(これ以下ã?ãƒ??タは未表示)
954             */
955            public void setVisibleLimit( final String limit ) {
956                    String visibleLimit = StringUtil.nval( getRequestParameter( limit ),null );
957                    chDataset.setVisibleLimit( visibleLimit );
958            }
959    
960            /**
961             * 【TAG】グラフã?書きå?し位置の調整比率を指定しますã?
962             *
963             * @og.tag
964             * HybsStackedBar でのみ使用可能ですã?
965             * グラフを描画する場合ã?、書きå?し位置を少しずらしますã?
966             * これは、グラフã?å¹?�«対して、比率でæŒ?®šしますã?
967             * 0.0(初期値)の場合ã?、å?期描画位置である、CategoryAnchor.Middle と
968             * 同じç®?‰€から、書きå?されますã?
969             * 1.0 の場合ã?中å¿?�‹らã?グラフå¹??半å?が加算されã?END位置にå¯?‚Šますã?
970             * 同様にã€?1.0 の場合ã?、グラフå¹??半å?が減算されã?START 位置になりますã?
971             * つまりã?中å¿?�‹らã?グラフå¹??半å?単位で、前方/後方にずらす事が出来ますã?
972             *   書きå?し位置 ??中å¿?Middle) + (domainMargin)?Šå¹???
973             * 初期値はã€?.0(真ん中:MIDDLE)ですã?
974             *
975             * @og.rev 4.1.1.0 (2008/02/14) 新規追åŠ?
976             *
977             * @param   margin double グラフã?書きå?し位置の調整比率
978             */
979            public void setDomainMargin( final String margin ) {
980                    String domMgn = StringUtil.nval( getRequestParameter( margin ),null );
981                    if( domMgn != null ) {
982                            double domainMargin = Double.parseDouble( domMgn );
983                            chDataset.setDomainMargin( domainMargin ) ;     // double margin
984                    }
985            }
986    
987            /**
988             * 【TAG】時刻を表すå?合ã?表現の仕方[E1/E2/E3/H1/H2/H3]を指定しまã�?初期値:null)ã€?
989             *
990             * @og.tag
991             * HybsNumberAxis にオーバã?ライドすã‚?時間を表示する DecimalFormat のå†?ƒ¨クラスを利用するに当たりã?
992             * 時刻の表示方法をæŒ?®šしますã?
993             * 外部から与える数字ã?ã€??続してã�?‚‹å¿?¦�があるためã€?¼‘0é?数ですã?
994             * たとえã?ã€?700 â†?17:00 , 2150 â†?21:30 とã�?�†感じですã?
995             * 2400 をè¶?�ˆると日付違ã�?�«なりますã?
996             *
997             * 英語表è¨?:)と日本語表è¨?æ™?の区別とã€?4時間をè¶?�ˆるå?合ã?表示方法によってã€?¼–種類ã?パターンが存在しますã?
998             * ã€?1:そã?ままã€?4:00 となりã?åŠ?®—されてã�?��ã€?
999             * ã€?2:そã?ままã€?:00 に戻るã?(日付ã?無è¦?
1000             * ã€?3:そã?ままã€? 00:00 と日付が付与されるã€?
1001             * ã€?1:そã?ままã€?4æ™?0åˆ?となりã?åŠ?®—されてã�?��ã€?
1002             * ã€?2:そã?ままã€?0æ™?0åˆ?に戻るã?(日付ã?無è¦?
1003             * ã€?3:そã?ままã€?日 00æ™?0åˆ?と日付が付与されるã€?
1004             * 初期値は、使用しなã�?-1)ですã?
1005             *
1006             * @og.rev 5.5.2.1 (2012/05/07) 新規追åŠ?
1007             *
1008             * @param   type 時刻の表示方æ³?E1,E2,E3,H1,H2,H3)
1009             */
1010            public void setTimeFormatType( final String type ) {
1011                    String timeFormatType = StringUtil.nval( getRequestParameter( type ),null );
1012                    chDataset.setTimeFormatType( timeFormatType );
1013            }
1014    
1015            /**
1016             * 【TAG】ラベルの表示向きを縦にするかどã�?�‹[false/true]を指定しまã�?初期値:false[横書き])ã€?
1017             *
1018             * @og.tag
1019             * ChartCreate の rotationLabel は、角度を指定できましたがã?NumberAxis ではã€?
1020             * 縦にするかどã�?�‹のæŒ?®šしかできませんã€?
1021             * ここでは、true を指定するとラベルは、縦書きになりますã?
1022             * 初期値は、false(横書ã�?ですã?
1023             *
1024             * @og.rev 5.5.2.1 (2012/05/07) 新規追åŠ?
1025             *
1026             * @param       useVLavels      ラベルの表示向き [false:横書ã�?true:縦書き]
1027             */
1028            public void setUseVerticalLabels( final String useVLavels ) {
1029                    boolean useVerticalLabels = StringUtil.nval( getRequestParameter( useVLavels ),false );
1030                    chDataset.setUseVerticalLabels( useVerticalLabels );
1031            }
1032    
1033            /**
1034             * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
1035             *
1036             * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
1037             * @serialData ä¸?ƒ¨のオブジェクãƒ?ChartDataset)は、シリアライズされませんã€?
1038             *
1039             * @param       strm    ObjectOutputStreamオブジェクãƒ?
1040             * @throws IOException  シリアライズに関する入出力エラーが発生したå?å�?
1041             */
1042            private void writeObject( final ObjectOutputStream strm ) throws IOException {
1043                    strm.defaultWriteObject();
1044            }
1045    
1046            /**
1047             * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
1048             *
1049             * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
1050             *
1051             * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
1052             * @serialData ä¸?ƒ¨のオブジェクãƒ?ChartDataset)は、読み込まれませんã€?
1053             *
1054             * @param       strm    ObjectInputStreamオブジェクãƒ?
1055             * @see #release2()
1056             * @throws IOException  シリアライズに関する入出力エラーが発生したå?å�?
1057             * @throws ClassNotFoundException       クラスを見つけることができなかったå?å�?
1058             */
1059            private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
1060                    strm.defaultReadObject();
1061                    chDataset = new ChartDataset();
1062            }
1063    
1064            /**
1065             * こã?オブジェクトã?æ–?­—å?表現を返しますã?
1066             * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
1067             *
1068             * @return こã?クラスのæ–?­—å?表現
1069             */
1070            @Override
1071            public String toString() {
1072                    StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
1073    
1074                    rtn.append( "[" ).append( this.getClass().getName() ).append( "]" ).append( HybsSystem.CR );
1075                    rtn.append( "dbid        [" ).append( dbid       ).append( "]" ).append( HybsSystem.CR );
1076                    rtn.append( "sql         [" ).append( sql        ).append( "]" ).append( HybsSystem.CR );
1077                    rtn.append( "dataset     [" ).append( chDataset  ).append( "]" ).append( HybsSystem.CR );
1078    
1079                    return rtn.toString();
1080            }
1081    }