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