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