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 * 各属性は、{@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 * ●形式:<og:chartDataset renderer="…" … /> 052 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) 053 * 054 * ●Tag定義: 055 * <og:chartDataset 056 * chartType ○【TAG】ChartDataset のデータタイプを指定します(必須)。 057 * dbid 【TAG】(通常は使いません)Datasetオブジェクトを作成する時のDB接続IDを指定します 058 * useTableData 【TAG】グラフ化するデータを DBTableModel から作成するかどうか(初期値:false) 059 * tableId 【TAG】(通常使いません)sessionから所得する DBTableModelオブジェクトの ID (初期値:HybsSystem#TBL_MDL_KEY[=h_tblmdl]) 060 * scope 【TAG】キャッシュする場合のスコープ[request/page/session/applicaton]を指定します(初期値:session) 061 * baseLegend 【TAG】シリーズ単位の凡例 の表示可否を設定します 062 * valueLabel 【TAG】縦軸の表示名称を指定します 063 * markValues 【TAG】マーカーラインの設定値をカンマ区切り形式で複数指定します 064 * markColors 【TAG】マーカーラインの色をカンマ区切り形式で複数指定します 065 * markOverColors 【TAG】マーカーラインの超過時のShape色をカンマ区切り形式で複数指定します 066 * dynamicOCNo 【TAG】動的なマーカーラインの基準シリーズ番号を設定します(初期値:null) 067 * useMarkAnchor 【TAG】マーカーライン描画時に、その設定値を表示します 068 * lowerBound 【TAG】チャートの縦軸の最小値をセットします(初期値:自動計算) 069 * upperBound 【TAG】チャートの縦軸の最大値をセットします(初期値:自動計算) 070 * tickSize 【TAG】チャートの縦軸の目盛の幅をセットします(初期値:自動計算) 071 * useGradient 【TAG】バーチャートのグラデーション処理を行うかどうか[true/false]をセットします(初期値:false) 072 * shapesVisible 【TAG】ラインチャートのポイントを四角表示するかどうかを指定します(初期値:true) 073 * shapeColors 【TAG】データ毎にShapeを切り替える時の色の繰返しパターンを文字列配列で指定します 074 * shapeScale 【TAG】shapeの大きさを倍率指定で変更します(初期値:null) 075 * useDottedLine 【TAG】ラインチャートの線をドットラインにするかどうか[true/false]を指定します(初期値:false 線分) 076 * seriesColors 【TAG】複数チャート描画時のチャート色の繰返しパターンをCVS形式で複数指定します 077 * valueLabelsVisible 【TAG】Value(縦軸)のラベルを表示するかどうかを指定します(初期値:true[表示する]) 078 * valueMarksVisible 【TAG】Value(縦軸)のマーカーを表示するかどうかを指定します(初期値:true[表示する]) 079 * itemLabelVisible 【TAG】データの値(itemText)を表示するかどうか[true/false/last]を指定します(初期値:false[表示しない]) 080 * useItemLabelSep 【TAG】データの値(itemText)の表示に、桁区切り文字を使用するかどうか[true/false]を指定します(初期値:true[使用する]) 081 * valueInset 【TAG】縦軸の表示領域INSET値(double)を指定します 082 * barMaxWidth 【TAG】BOXチャートのバー幅の最大値(0.0〜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 * > ... Body ... 091 * </og:chartDataset> 092 * 093 * ●使用例 094 * <og:chartCreate 095 * command = "{@command}" 096 * title = "{@title}" 097 * domainLabel = "{@domainLabel}" 098 * width = "{@width}" 099 * height = "{@height}" 100 * rectangleEdge = "{@rectangleEdge}" 101 * plotOrientation = "{@plotOrientation}" 102 * chartBackColor = "{@chartBackColor}" 103 * plotBackColor = "{@plotBackColor}" 104 * domainMarker = "{@domainMarker}" 105 * useMarkerLabel = "{@useMarkerLabel}" > 106 * <og:chartDataset 107 * chartType = "[Bar|LineAndShape|・・・]" チャートの種類 108 * baseLegend = "[true|false]" シリーズ単位の凡例 の表示可否 109 * valueLabel = "縦軸" 縦軸のラベル 110 * lowerBound = "0" 下限値 111 * upperBound = "5000" 上限値 112 * tickSize = "1000" 縦軸の目盛の幅 113 * markValues = "2500,2800" 縦軸設定値(横棒) 114 * markColors = "RED,GREEN" 縦軸設定ライン色 115 * markOverColors = "BLUE,YELLOW,RED" マーカーラインの超過時のShape色 116 * dynamicOCNo = "2" 動的なマーカーラインの基準シリーズ番号 117 * useMarkAnchor = "[true|false]" 縦軸設定値(横棒)を表示するかどうか 118 * useGradient = "[false|true]" バーチャートのグラデーション処理 119 * shapesVisible = "[true|false]" ラインの四角表示 120 * shapeColors = "RED,GREEN,BLUE" データ毎のShapeの色 121 * shapeScale = "0.8" shapeの大きさの倍率(double) 122 * useDottedLine = "[false|true]" 点線使用有無 123 * seriesColors = "RED,GREEN,BLUE" シリーズの色サイクル指定 124 * valueLabelsVisible = "[true|false]" 縦軸のラベルの表示有無 125 * valueMarksVisible = "[true|false]" 縦軸のマーカーの表示有無 126 * itemLabelVisible = "[false|true|last]" データの値の表示有無 127 * useItemLabelSep = "[true|false]" データの桁区切り文字の使用有無 128 * valueInset = "15" 縦軸の表示領域INSET値 129 * barMaxWidth = "[0.0〜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 * > 140 * {@SQL} 141 * </og:chartDataset> 142 * </og:chartCreate> 143 * 144 * 複数のグラフを重ね合わせる場合は、chartDataset タグを chartCreate のBODY部に 145 * 複数記述します。 146 * <og:chartCreate 147 * title = "{@title}" 148 * domainLabel = "{@domainLabel}" 149 * width = "{@width}" 150 * height = "{@height}" > 151 * rectangleEdge = "{@rectangleEdge}" > 152 * plotOrientation = "{@plotOrientation}" > 153 * <og:chartDataset 154 * chartType = "{@chartType1}" 155 * valueLabel = "{@valueLabel1}" 156 * lowerBound = "{@lowerBound1}" 157 * upperBound = "{@upperBound1}" 158 * markValues = "{@markValues1}" 159 * markColors = "{@markColors1}" 160 * > 161 * {@SQL1} 162 * </og:chartDataset> 163 * <og:chartDataset 164 * chartType = "{@chartType2}" 165 * valueLabel = "{@valueLabel2}" 166 * lowerBound = "{@lowerBound2}" 167 * upperBound = "{@upperBound2}" 168 * markValues = "{@markValues2}" 169 * markColors = "{@markColors2}" 170 * > 171 * {@SQL2} 172 * </og:chartDataset> 173 * </og:chartCreate> 174 * 175 * chartType属性 は、チャートの種類を指定する、固有IDです。 176 * [chartType属性] 177 * Area , Bar , Bar3D , BoxAndWhisker , CategoryStep , 178 * Gantt , GroupedStackedBar , IntervalBar , LayeredBar , Level , 179 * LineAndShape , Line3D , MinMax , StackedArea , StackedBar , 180 * StackedBar3D , WaterfallBar , CyclicXYItem , HighLow , StackedXYArea , 181 * StackedXYArea2 , StandardXYItem , XYBubble , XYDifference , XYDot , 182 * XYError , XYLine3D , XYLineAndShape , XYStepArea , XYStep , 183 * Meter , MultiplePie , Pie , Pie3D , Ring , 184 * SpiderWeb , Thermometer 185 * 186 * markColors属性 は、マーカーラインの色を指定します 187 * java.awt.Color クラスのstatic フィールド名の文字列で指定します。 188 * [renderer属性] 189 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY , 190 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW 191 * #XXXXXX形式の16bitRGB表記 192 * 193 * @og.group 画面表示 194 * 195 * @version 0.9.0 2007/06/19 196 * @author Nakamura 197 * @since JDK1.4, 198 */ 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 * <tr><td> TimeStepV </td><td> xy.XYStepRenderer </td><td> TimeSeries </td></tr> 399 * <tr><td> TimeStepH </td><td> xy.XYStepRenderer </td><td> TimeSeries </td></tr> 400 * </table> 401 * 402 * Meter と Compass は、さらに、needleType が指定できます。 403 * これは、Meter_PIE や、Compass_Arrow などとすることで、形状を指定できます。 404 * Meter には、CHORD,CIRCLE(初期値),PIE 405 * Compass には、Arrow,Line,Long,Pin,Plum,Pointer(初期値),Ship,Wind,Arrow,MiddlePin が指定できます。 406 * 407 * @og.rev 5.7.8.0 (2014/07/04) needleType 対応 408 * 409 * @param chartType チャートタイプ 410 * @see org.jfree.chart.renderer.category.CategoryItemRenderer 411 * @see org.jfree.chart.renderer.xy.XYItemRenderer 412 */ 413 public void setChartType( final String chartType ) { 414// chDataset.setChartType( getRequestParameter( chartType ) ); 415 416 // 5.7.8.0 (2014/07/04) needleType 対応 417 String chType = getRequestParameter( chartType ) ; 418 419 int adrs = chType.indexOf( '_' ); 420 if( adrs < 0 ) { 421 // 今まで通り chartType の設定 422 chDataset.setChartType( chType ); 423 } 424 else { 425 chDataset.setChartType( chType.substring(0,adrs) ); 426 chDataset.setNeedleType( chType.substring(adrs+1) ); 427 } 428 } 429 430 /** 431 * 【TAG】グラフ化するデータを DBTableModel から作成するかどうか(初期値:false)。 432 * 433 * @og.tag 434 * useTableData="false"(初期値)の場合は、BODY部に書かれた SQL 文を実行してデータを取得します。 435 * useTableData="true" にすると、その前の query タグ等で作成した DBTableModel を利用して 436 * グラフ化します。その場合は、BODY部の SQL 文は、無視されます。 437 * 利用する DBTableModel は、tableId と scope 属性から取得します。 438 * 439 * @og.rev 5.3.0.0 (2010/12/01) 新規追加 440 * 441 * @param flag データをDBTableModelを利用する場合、true 442 */ 443 public void setUseTableData( final String flag ) { 444 useTableData = StringUtil.nval( getRequestParameter( flag ),useTableData ); 445 } 446 447 /** 448 * 【TAG】(通常は使いません)結果のDBTableModelを、sessionに登録するときのキーを指定します 449 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])。 450 * 451 * @og.tag 452 * 検索結果より、DBTableModelオブジェクトを作成します。これを、下流のviewタグ等に 453 * 渡す場合に、通常は、session を利用します。その場合の登録キーです。 454 * query タグを同時に実行して、結果を求める場合、同一メモリに配置される為、 455 * この tableId 属性を利用して、メモリ空間を分けます。 456 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])。 457 * 458 * @param id sessionに登録する時の ID 459 */ 460 public void setTableId( final String id ) { 461 tableId = StringUtil.nval( getRequestParameter( id ), tableId ); 462 } 463 464 /** 465 * 【TAG】シリーズ単位の凡例 の表示可否を設定します。 466 * 467 * @og.tag 468 * シリーズ単位の凡例 の表示可否を設定します。 469 * 470 * @param baseLegend シリーズ単位の凡例 の表示可否 471 */ 472 public void setBaseLegend( final String baseLegend ) { 473 boolean flag = StringUtil.nval( getRequestParameter( baseLegend ),true ); 474 chDataset.setBaseLegend( flag ); 475 } 476 477 /** 478 * 【TAG】縦軸の表示名称を指定します。 479 * 480 * @og.tag 481 * 縦軸の表示名称を指定します。 482 * 483 * @param valueLabel 縦軸の表示名称 484 */ 485 public void setValueLabel( final String valueLabel ) { 486 chDataset.setValueLabel( getRequestParameter( valueLabel ) ); 487 } 488 489 /** 490 * 【TAG】マーカーラインの設定値をカンマ区切り形式で複数指定します。 491 * 492 * @og.tag 493 * 指定の値にマーカーラインを引きます。 494 * 色は、setMarkColors( String ) で指定します。 495 * markColors と、個数をあわせて設定する必要があります。 496 * どちらかが、指定されていない場合は、マーカー表示されません。 497 * dynamicOCNo を使用する場合は、そのValues の並びの箇所に、 498 * "G" という文字列を設定して下さい。 499 * 例:2000,G 基準1は、2000の直線、基準2は、グラフ という意味。 500 * 501 * @param markValues マーカーラインの設定値(CSV形式) 502 * @see #setMarkColors( String ) 503 */ 504 public void setMarkValues( final String markValues ) { 505 String vals = StringUtil.nval( getRequestParameter( markValues ),null ); 506 if( vals != null ) { 507 chDataset.setMarkValues( StringUtil.csv2Array( vals ) ); 508 } 509 } 510 511 /** 512 * 【TAG】マーカーライン描画時に、その設定値を表示します。 513 * 514 * @og.tag 515 * マーカーラインの縦軸の設定値(markValues)に、設定値をラベル表示します。 516 * 位置は、TextAnchor.BASELINE_LEFT 固定です。 517 * 初期値は、表示する(true)です。 518 * 519 * @og.rev 4.1.1.0 (2008/02/04) 新規追加 520 * 521 * @param useAnchor true:設定値を表示する。 522 */ 523 public void setUseMarkAnchor( final String useAnchor ) { 524 boolean flag = StringUtil.nval( getRequestParameter( useAnchor ),true ); 525 chDataset.setUseMarkAnchor( flag ); 526 } 527 528 /** 529 * 【TAG】マーカーラインの色をカンマ区切り形式で複数指定します。 530 * 531 * @og.tag 532 * マーカーラインとは、縦軸設定のラインの事で、縦軸の設定値(markValues)に 533 * 横方向にラインを付与します。このラインの色を、カンマ区切り形式で 534 * 指定します。 535 * markValues と、あわせて設定する必要があります。 536 * 個数が異なる場合は、markValues が優先され、無指定の場合は、Color.REDで 537 * 表示されます。 538 * 539 * 指定文字列は、java.awt.Color クラスのstatic フィールド名で指定します。 540 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY , 541 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できます。 542 * また、#XXXXXX形式の16bitRGB表記 でも指定可能です。 543 * <pre> 544 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY , 545 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) 546 * #XXXXXX形式の16bitRGB表記 でも指定可能です。 547 * </pre> 548 * 549 * @param markColors マーカーラインの色(CSV形式) 550 * @see java.awt.Color#BLACK 551 * @see #setMarkValues( String ) 552 */ 553 public void setMarkColors( final String markColors ) { 554 String clrs = StringUtil.nval( getRequestParameter( markColors ),null ); 555 if( clrs != null ) { 556 chDataset.setMarkColors( StringUtil.csv2Array( clrs ) ); 557 } 558 } 559 560 /** 561 * 【TAG】マーカーラインの超過時のShape色をカンマ区切り形式で複数指定します。 562 * 563 * @og.tag 564 * HybsLine,HybsBar でのみ使用可能です。 565 * マーカーラインを使用する場合に、そのラインを超えない色、超える色を指定します。 566 * この色の指定は、マーカーラインの色やマーカーラインの設定値の個数+1に 567 * なります。つまり、色1:設定値1:色2:設定値2:色3 となります。 568 * 色1は、設定値1より小さい場合に使用され、色2は、設定値1より大きく、 569 * 設定値2より小さい場合、色3は、設定値2より大きい場合になります。 570 * 571 * 指定文字列は、java.awt.Color クラスのstatic フィールド名で指定します。 572 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY , 573 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できます。 574 * また、#XXXXXX形式の16bitRGB表記 でも指定可能です。 575 * markValues と、あわせて設定する必要があります。 576 * どちらかが、指定されていない場合は、マーカー表示されません。 577 * <pre> 578 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY , 579 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) 580 * #XXXXXX形式の16bitRGB表記 でも指定可能です。 581 * </pre> 582 * 583 * @og.rev 4.0.3.0 (2008/01/07) 新規追加 584 * 585 * @param overColors マーカーラインの超過時のShape色(CSV形式) 586 * @see java.awt.Color#BLACK 587 */ 588 public void setMarkOverColors( final String overColors ) { 589 String clrs = StringUtil.nval( getRequestParameter( overColors ),null ); 590 if( clrs != null ) { 591 chDataset.setMarkOverColors( StringUtil.csv2Array( clrs ) ); 592 } 593 } 594 595 /** 596 * 【TAG】動的なマーカーラインの基準シリーズ番号を設定します(初期値:null)。 597 * 598 * @og.tag 599 * 動的なマーカーラインを使用する場合は、基準値となるシリーズ番号を指定します。 600 * 601 * マーカーラインの最下位閾値に相当します。これは、グラフ化されますが、 602 * Shape は自動的に削除されます。 603 * この設定を使用する場合、最初のデータには、必ずShapeが付きます。それ以外の 604 * データに、Shape を付けるかどうかは、shapesVisible 属性で指定します。 605 * この線の色は、markColors で指定した、最下位の色になります。また、 606 * markValues で指定した、最下位の値は、使用されません。ただし、色指定の 607 * 関係上、設定しておく必要があります。 608 * また、isValueVisible == true で、設定値の値表示を行う場合も、最下位の 609 * 値は表示しないようにします。 610 * 初期値は、使用しない(null)です。 611 * 612 * @og.rev 4.1.1.0 (2008/02/04) 新規追加 613 * @og.rev 4.1.1.0 (2008/02/19) setUseDynamicOC ⇒ setDynamicOCNo 614 * 615 * @param dynamicOCNo true:動的なマーカーラインの基準シリーズ番号 616 */ 617 public void setDynamicOCNo( final String dynamicOCNo ) { 618 int ocNo = StringUtil.nval( getRequestParameter( dynamicOCNo ),-1 ); 619 chDataset.setDynamicOCNo( ocNo ); 620 } 621 622 /** 623 * 【TAG】チャートの縦軸の最小値をセットします(初期値:自動計算)。 624 * 625 * @og.tag 626 * 何も指定しない場合は、データの最小値から、自動的に計算します。 627 * 628 * @param lowerBound 縦軸の最小値 629 */ 630 public void setLowerBound( final String lowerBound ) { 631 chDataset.setLowerBound( getRequestParameter( lowerBound ) ); 632 } 633 634 /** 635 * 【TAG】チャートの縦軸の最大値をセットします(初期値:自動計算)。 636 * 637 * @og.tag 638 * 何も指定しない場合は、データの最大値から、自動的に計算します。 639 * 640 * @param upperBound 縦軸の最大値 641 */ 642 public void setUpperBound( final String upperBound ) { 643 chDataset.setUpperBound( getRequestParameter( upperBound ) ); 644 } 645 646 /** 647 * 【TAG】チャートの縦軸の目盛の幅をセットします(初期値:自動計算)。 648 * 649 * @og.tag 650 * 何も指定しない場合は、データの範囲から、自動的に計算します。 651 * 652 * @og.rev 4.0.3.0 (2008/01/07) 新規追加 653 * 654 * @param size 縦軸のチック(目盛)の幅 655 */ 656 public void setTickSize( final String size ) { 657 chDataset.setTickSize( getRequestParameter( size ) ); 658 } 659 660 /** 661 * 【TAG】バーチャートのグラデーション処理を行うかどうか[true/false]をセットします(初期値:false)。 662 * 663 * @og.tag 664 * 通常のバーチャートは、単一色表示で表されますが、これにグラデーション効果を 665 * 付加するかどうかを指定します。 666 * 通常のバーチャートが、少しきれいに見えます。 667 * 初期値は、false(使用しない)です。 668 * 669 * @param useGradient グラデーション処理 [true:する/false:しない] 670 */ 671 public void setUseGradient( final String useGradient ) { 672 boolean flag = StringUtil.nval( getRequestParameter( useGradient ),false ); 673 chDataset.setUseGradient( flag ); 674 } 675 676 /** 677 * 【TAG】ラインチャートのポイントを四角表示するかどうかを指定します(初期値:true)。 678 * 679 * @og.tag 680 * ラインチャートは、通常、線分で表され、各ポイントについても、線分で接続されます。 681 * shapesVisible を true に設定すると、各ポイントが、線上に四角く表示され、 682 * そのポイントの位置を、容易に判断出来るようになります。 683 * 初期値は、true( LineAndShape )です。 684 * 685 * @param shapesVisible ポイントを四角表示するかどうか 686 */ 687 public void setShapesVisible( final String shapesVisible ) { 688 boolean flag = StringUtil.nval( getRequestParameter( shapesVisible ),true ); 689 chDataset.setShapesVisible( flag ); 690 } 691 692 /** 693 * 【TAG】データ毎にShapeを切り替える時の色の繰返しパターンを文字列配列で指定します。 694 * 695 * @og.tag 696 * HybsLine でのみ使用可能です。 697 * これは、データそのものが、繰返し性のある場合に、その繰返し性に対応した 698 * 形状のShape を表示させる場合に使用します。 699 * 繰返しShapeの形状は、JFreeChart のシリーズ毎の繰返し標準形状を使用します。 700 * 現在のバージョンでは、10個までの繰返しに対応可能です。 701 * 繰返し色を、指定した分だけ、順に使用されていきます。 702 * 703 * 指定文字列は、java.awt.Color クラスのstatic フィールド名で指定します。 704 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY , 705 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できます。 706 * また、#XXXXXX形式の16bitRGB表記 でも指定可能です。 707 * 708 * @og.rev 4.0.3.0 (2008/01/07) 新規追加 709 * 710 * @param colors データ毎の色の繰返しパターン(文字列配列) 711 * @see java.awt.Color#BLACK 712 */ 713 public void setShapeColors( final String colors ) { 714 String clrs = StringUtil.nval( getRequestParameter( colors ),null ); 715 if( clrs != null ) { 716 chDataset.setShapeColors( StringUtil.csv2Array( clrs ) ); 717 } 718 } 719 720 /** 721 * 【TAG】shapeの大きさを倍率指定で変更します(初期値:null)。 722 * 723 * @og.tag 724 * ラインチャートのShape(各グラフのポイントのマーカー)の大きさは、通常は、 725 * 自動設定されます。 726 * この大きさを、倍率指定で、変更可能です。 727 * 指定は、double 型です。 728 * 初期値は、null は、スケール変更しません(自動設定のままの大きさ) 729 * 730 * @og.rev 4.1.1.0 (2008/02/04) 新規追加 731 * 732 * @param scale shapeの大きさの倍率 733 */ 734 public void setShapeScale( final String scale ) { 735 String shapeScale = StringUtil.nval( getRequestParameter( scale ),null ); 736 if( shapeScale != null ) { 737 chDataset.setShapeScale( shapeScale ); 738 } 739 } 740 741 /** 742 * 【TAG】ラインチャートの線をドットラインにするかどうか[true/false]を指定します(初期値:false[線分])。 743 * 744 * @og.tag 745 * ラインチャートは、通常、線分で表されます。 746 * これに、点線で表すことで、グラフの違いを、色だけでなく形状でも識別 747 * しやすくすることが可能です。 748 * 初期値は、false(線分)です。 749 * 750 * @param useDottedLine ドットラインにするかどうか [true:点線/false:線分] 751 */ 752 public void setUseDottedLine( final String useDottedLine ) { 753 boolean flag = StringUtil.nval( getRequestParameter( useDottedLine ),false ); 754 chDataset.setUseDottedLine( flag ); 755 } 756 757 /** 758 * 【TAG】複数チャート描画時のチャート色の繰返しパターンをCVS形式で複数指定します。 759 * 760 * @og.tag 761 * 通常、複数のチャートを同時に表示させる場合は、縦軸が共通であれば、 762 * 1回のSelect分で複数データを取得します。 763 * この、データをシリーズと呼んでおり、これを区別する為に、色を分けます。 764 * 初期値は、JFreeChart が自動で割り振ります。 765 * これを、外部からCVS形式で、カンマ区切りで色コードを指定します。 766 * 指定データが多い場合は、多い分の色は使用されません。少ない場合は、 767 * 順番に繰り返して使用されます。 768 * 例えば、1色だけ指定した場合は、すべてのシリーズが同じ色で表されます。 769 * 770 * 指定文字列は、java.awt.Color クラスのstatic フィールド名で指定します。 771 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY , 772 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できます。 773 * 774 * また、#XXXXXX形式の16bitRGB表記 でも指定可能です。 775 * 776 * @param colors チャート色の繰返しパターン(CVS形式) 777 * @see java.awt.Color#BLACK 778 */ 779 public void setSeriesColors( final String colors ) { 780 String clrs = StringUtil.nval( getRequestParameter( colors ),null ); 781 if( clrs != null ) { 782 chDataset.setSeriesColors( StringUtil.csv2Array( clrs ) ); 783 } 784 } 785 786 /** 787 * 【TAG】Value(縦軸)のラベルを表示するかどうかを指定します(初期値:true[表示する])。 788 * 789 * @og.tag 790 * ValueAxis にて設定される、縦軸情報の、ラベルを表示するかどうか指定します。 791 * 初期値は、true(表示する)です。 792 * 793 * @og.rev 4.0.2.0 (2007/12/20) 新規追加 794 * 795 * @param labelsVisible Value(縦軸)のラベルを表示するかどうか 796 */ 797 public void setValueLabelsVisible( final String labelsVisible ) { 798 boolean flag = StringUtil.nval( getRequestParameter( labelsVisible ),true ); 799 chDataset.setValueLabelsVisible( flag ); 800 } 801 802 /** 803 * 【TAG】Value(縦軸)のマーカーを表示するかどうかを指定します(初期値:true[表示する])。 804 * 805 * @og.tag 806 * ValueAxis にて設定される、縦軸情報の、マーカーを表示するかどうか指定します。 807 * 初期値は、true(表示する)です。 808 * 809 * @og.rev 4.0.2.0 (2007/12/20) 新規追加 810 * 811 * @param marksVisible Value(縦軸)のマーカーを表示するかどうか 812 */ 813 public void setValueMarksVisible( final String marksVisible ) { 814 boolean flag = StringUtil.nval( getRequestParameter( marksVisible ),true ); 815 chDataset.setValueMarksVisible( flag ); 816 } 817 818 /** 819 * 【TAG】データの値(itemText)を表示するかどうか[true/false/last]を指定します(初期値:false[表示しない])。 820 * 821 * @og.tag 822 * CategoryItemRenderer 関連のグラフの設定値をグラフ上に表示するかどうかを 823 * 指定します。 824 * true に設定した場合、通常の場合は、すべてのシリーズにラベル表示されます。 825 * false に設定すると、表示されません。 826 * last を設定すると、各シリーズの最後の値のみ表示されます。 827 * ChartCreate クラスに、seriesPikup が設定されている場合は、指定のシリーズ 828 * のみの設定値を表示し、他の値は、表示しません。 829 * 同様に、dynamicOCNo が指定されている場合(動的なマーカーライン) 830 * 最下位のシリーズは、閾値として使用されるため、設定値は表示されません。 831 * ラベルの表示位置は、表示する線グラフの傾きに応じてラベルの表示場所を 832 * 変えます。山形、右坂、谷形、左坂 に応じて、上中、下右、下中、上右 に 833 * 位置を設定します。右にずらすのは、10 ピクセル固定です。 834 * 初期値は、false(表示しない)です。 835 * 836 * @og.rev 4.1.1.0 (2008/02/04) 新規追加 837 * @og.rev 4.1.2.0 (2008/03/12) 文字列のまま、渡すように変更 838 * 839 * @param itemLabelVisible データの値の表示のさせ方(true,false,last) 840 */ 841 public void setItemLabelVisible( final String itemLabelVisible ) { 842 String flag = StringUtil.nval( getRequestParameter( itemLabelVisible ),"false" ); 843 chDataset.setItemLabelVisible( flag ); 844 } 845 846 /** 847 * 【TAG】データの値(itemText)の表示に、桁区切り文字を使用するかどうか[true/false]を指定します(初期値:true[使用する])。 848 * 849 * @og.tag 850 * itemLabelVisible=true 時に、表示されるデータ値ラベルで、 851 * NumberFormat していますが、3桁区切り文字(123,456,789.0) の 852 * 区切り記号を表示するかどうかを指定します。 853 * true を指定すると、表示します。false では、表示しません。 854 * 初期値は、true(使用する)です。 855 * 856 * @og.rev 4.1.2.0 (2008/03/12) 新規追加 857 * 858 * @param used データの桁区切り文字の使用有無 859 */ 860 public void setUseItemLabelSep( final String used ) { 861 boolean useItemLabelSep = StringUtil.nval( getRequestParameter( used ),true ); 862 chDataset.setUseItemLabelSep( useItemLabelSep ); 863 } 864 865 /** 866 * 【TAG】縦軸の表示領域INSET値(double)を指定します。 867 * 868 * @og.tag 869 * 縦軸文字表示領域(NumberAxis)の幅の追加値を設定します。 870 * これは、通常の表示領域の左側にスペースを挿入します。 871 * あくまで、追加する値なので、文字の長さは含まれません。 872 * 何も指定しない場合は、設定しません。 873 * 874 * @og.rev 4.0.3.0 (2008/01/07) 新規追加 875 * 876 * @param inset Value(縦軸)の表示領域INSET値 877 */ 878 public void setValueInset( final String inset ) { 879 String valueInset = StringUtil.nval( getRequestParameter( inset ),null ); 880 chDataset.setValueInset( valueInset ); 881 } 882 883 /** 884 * 【TAG】BOXチャートのバー幅(double)を指定します。 885 * 886 * @og.tag 887 * BOXチャートのバー幅(double)を指定します。 888 * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer を 889 * 使用した描画のみです。 890 * 棒グラフのバー幅指定は、直接、CategoryItemRendererState に設定しています。 891 * 通常は、barMaxWidth(0.0〜1.0)とbarItemMargin(0.0〜1.0)を用いて比率で指定します。 892 * 何も指定しない場合は、設定しません。 893 * 894 * @og.rev 4.0.3.0 (2008/01/07) 新規追加 895 * 896 * @param width BOXチャートのバー幅(double) 897 */ 898 public void setBarWidth( final String width ) { 899 String barWidth = StringUtil.nval( getRequestParameter( width ),null ); 900 chDataset.setBarWidth( barWidth ); 901 } 902 903 /** 904 * 【TAG】BOXチャートのバー幅の最大値(0.0〜1.0)を指定します。 905 * 906 * @og.tag 907 * BOXチャートのバー幅の比率の最大値を指定します。 908 * 表示領域を1として小数点以下の数値で棒の幅を設定します。 909 * 設定した幅に無理がある時は適当なサイズに調整されます。 910 * (小さくしたときには棒が線のようになる) 911 * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer を 912 * 使用した描画のみです。 913 * 何も指定しない場合は、設定しません。 914 * 915 * @og.rev 4.0.2.0 (2007/12/20) 新規追加 916 * 917 * @param barWidth BOXチャートのバー幅の最大値(0.0〜1.0) 918 */ 919 public void setBarMaxWidth( final String barWidth ) { 920 String maxBarWidth = StringUtil.nval( getRequestParameter( barWidth ),null ); 921 chDataset.setBarMaxWidth( maxBarWidth ); 922 } 923 924 /** 925 * 【TAG】BOXチャートのバーアイテムのマージン(0.0〜1.0)を指定します。 926 * 927 * @og.tag 928 * BOXチャートのバーアイテムのマージンの比率を指定します。 929 * 棒の間を表示領域を1として小数点以下の数値で幅を設定します。 930 * 無理がある時は適当なサイズに調整されます。 931 * barMaxWidth より優先されます。 932 * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer を 933 * 使用した描画のみです。 934 * 何も指定しない場合は、設定しません。 935 * 936 * @og.rev 4.0.2.0 (2007/12/20) 新規追加 937 * 938 * @param margin BOXチャートのバーアイテムのマージン(0.0〜1.0) 939 */ 940 public void setBarItemMargin( final String margin ) { 941 String itemMargin = StringUtil.nval( getRequestParameter( margin ),null ); 942 chDataset.setBarItemMargin( itemMargin ); 943 } 944 945 /** 946 * 【TAG】表示下限値(これ以下のデータは未表示)の値(double)を指定します。 947 * 948 * @og.tag 949 * HybsLine でのみ使用可能です。 950 * この設定値以下のデータは、存在しない扱いとします。 951 * Lineを引くとき、このデータと、存在しているデータ間にラインは引かれません。 952 * 何も指定しない場合は、設定しません。 953 * 954 * @og.rev 4.0.3.0 (2008/01/07) 新規追加 955 * 956 * @param limit 表示下限値(これ以下のデータは未表示) 957 */ 958 public void setVisibleLimit( final String limit ) { 959 String visibleLimit = StringUtil.nval( getRequestParameter( limit ),null ); 960 chDataset.setVisibleLimit( visibleLimit ); 961 } 962 963 /** 964 * 【TAG】グラフの書き出し位置の調整比率を指定します。 965 * 966 * @og.tag 967 * HybsStackedBar でのみ使用可能です。 968 * グラフを描画する場合の、書き出し位置を少しずらします。 969 * これは、グラフの幅に対して、比率で指定します。 970 * 0.0(初期値)の場合は、初期描画位置である、CategoryAnchor.Middle と 971 * 同じ箇所から、書き出されます。 972 * 1.0 の場合、中心から、グラフ幅の半分が加算され、END位置に寄ります。 973 * 同様に、-1.0 の場合は、グラフ幅の半分が減算され、START 位置になります。 974 * つまり、中心から、グラフ幅の半分単位で、前方/後方にずらす事が出来ます。 975 * 書き出し位置 = 中心(Middle) + (domainMargin)*幅/2 976 * 初期値は、0.0(真ん中:MIDDLE)です。 977 * 978 * @og.rev 4.1.1.0 (2008/02/14) 新規追加 979 * 980 * @param margin double グラフの書き出し位置の調整比率 981 */ 982 public void setDomainMargin( final String margin ) { 983 String domMgn = StringUtil.nval( getRequestParameter( margin ),null ); 984 if( domMgn != null ) { 985 double domainMargin = Double.parseDouble( domMgn ); 986 chDataset.setDomainMargin( domainMargin ) ; // double margin 987 } 988 } 989 990 /** 991 * 【TAG】時刻を表す場合の表現の仕方[E1/E2/E3/H1/H2/H3]を指定します(初期値:null)。 992 * 993 * @og.tag 994 * HybsNumberAxis にオーバーライドする 時間を表示する DecimalFormat の内部クラスを利用するに当たり、 995 * 時刻の表示方法を指定します。 996 * 外部から与える数字は、連続している必要があるため、10進数です。 997 * たとえば、1700 → 17:00 , 2150 → 21:30 という感じです。 998 * 2400 を超えると日付違いになります。 999 * 1000 * 英語表記(:)と日本語表記(時)の区別と、24時間を超える場合の表示方法によって、6種類のパターンが存在します。 1001 * E1:そのまま、24:00 となり、加算されていく。 1002 * E2:そのまま、0:00 に戻る。(日付は無視) 1003 * E3:そのまま、1 00:00 と日付が付与される。 1004 * H1:そのまま、24時00分 となり、加算されていく。 1005 * H2:そのまま、00時00分 に戻る。(日付は無視) 1006 * H3:そのまま、1日 00時00分 と日付が付与される。 1007 * 初期値は、使用しない(-1)です。 1008 * 1009 * @og.rev 5.5.2.1 (2012/05/07) 新規追加 1010 * 1011 * @param type 時刻の表示方法(E1,E2,E3,H1,H2,H3) 1012 */ 1013 public void setTimeFormatType( final String type ) { 1014 String timeFormatType = StringUtil.nval( getRequestParameter( type ),null ); 1015 chDataset.setTimeFormatType( timeFormatType ); 1016 } 1017 1018 /** 1019 * 【TAG】ラベルの表示向きを縦にするかどうか[false/true]を指定します(初期値:false[横書き])。 1020 * 1021 * @og.tag 1022 * ChartCreate の rotationLabel は、角度を指定できましたが、NumberAxis では、 1023 * 縦にするかどうかの指定しかできません。 1024 * ここでは、true を指定するとラベルは、縦書きになります。 1025 * 初期値は、false(横書き)です。 1026 * 1027 * @og.rev 5.5.2.1 (2012/05/07) 新規追加 1028 * 1029 * @param useVLavels ラベルの表示向き [false:横書き/true:縦書き] 1030 */ 1031 public void setUseVerticalLabels( final String useVLavels ) { 1032 boolean useVerticalLabels = StringUtil.nval( getRequestParameter( useVLavels ),false ); 1033 chDataset.setUseVerticalLabels( useVerticalLabels ); 1034 } 1035 1036 /** 1037 * シリアライズ用のカスタムシリアライズ書き込みメソッド 1038 * 1039 * @og.rev 4.0.0.0 (2006/09/31) 新規追加 1040 * @serialData 一部のオブジェクト(ChartDataset)は、シリアライズされません。 1041 * 1042 * @param strm ObjectOutputStreamオブジェクト 1043 * @throws IOException シリアライズに関する入出力エラーが発生した場合 1044 */ 1045 private void writeObject( final ObjectOutputStream strm ) throws IOException { 1046 strm.defaultWriteObject(); 1047 } 1048 1049 /** 1050 * シリアライズ用のカスタムシリアライズ読み込みメソッド 1051 * 1052 * ここでは、transient 宣言された内部変数の内、初期化が必要なフィールドのみ設定します。 1053 * 1054 * @og.rev 4.0.0.0 (2006/09/31) 新規追加 1055 * @serialData 一部のオブジェクト(ChartDataset)は、読み込まれません。 1056 * 1057 * @param strm ObjectInputStreamオブジェクト 1058 * @see #release2() 1059 * @throws IOException シリアライズに関する入出力エラーが発生した場合 1060 * @throws ClassNotFoundException クラスを見つけることができなかった場合 1061 */ 1062 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException { 1063 strm.defaultReadObject(); 1064 chDataset = new ChartDataset(); 1065 } 1066 1067 /** 1068 * このオブジェクトの文字列表現を返します。 1069 * 基本的にデバッグ目的に使用します。 1070 * 1071 * @return このクラスの文字列表現 1072 */ 1073 @Override 1074 public String toString() { 1075 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE ); 1076 1077 rtn.append( "[" ).append( this.getClass().getName() ).append( "]" ).append( HybsSystem.CR ); 1078 rtn.append( "dbid [" ).append( dbid ).append( "]" ).append( HybsSystem.CR ); 1079 rtn.append( "sql [" ).append( sql ).append( "]" ).append( HybsSystem.CR ); 1080 rtn.append( "dataset [" ).append( chDataset ).append( "]" ).append( HybsSystem.CR ); 1081 1082 return rtn.toString(); 1083 } 1084}