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