001 /*
002 * Copyright (c) 2009 The openGion Project.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013 * either express or implied. See the License for the specific language
014 * governing permissions and limitations under the License.
015 */
016 package org.opengion.hayabusa.io;
017
018 import org.opengion.fukurou.util.StringUtil;
019 import org.opengion.hayabusa.common.HybsSystem;
020 import org.opengion.hayabusa.common.HybsSystemException;
021 import org.opengion.hayabusa.db.DBTableModel;
022
023 import java.util.List;
024 import java.util.ArrayList;
025 import java.util.Arrays;
026 import java.awt.Color;
027 import java.sql.Connection;
028 import java.sql.SQLException;
029 import java.text.NumberFormat;
030 import java.text.DecimalFormat; // 5.5.2.1 (2012/05/07)
031 import java.text.DecimalFormatSymbols; // 5.5.2.1 (2012/05/07)
032 import java.text.FieldPosition; // 5.5.2.1 (2012/05/07)
033
034 import org.jfree.data.general.Dataset;
035 import org.jfree.data.general.DefaultValueDataset;
036 import org.jfree.chart.plot.ValueMarker;
037 import org.jfree.chart.axis.NumberAxis;
038 import org.jfree.chart.axis.NumberTickUnit;
039 import org.jfree.chart.renderer.category.CategoryItemRenderer;
040 import org.jfree.chart.renderer.category.BarRenderer;
041 import org.jfree.chart.renderer.category.LineAndShapeRenderer;
042 import org.jfree.chart.labels.CategoryItemLabelGenerator;
043 import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
044 import org.jfree.chart.urls.CategoryURLGenerator;
045 import org.jfree.ui.RectangleInsets;
046 import org.jfree.ui.TextAnchor;
047
048 /**
049 * ChartDataset は、Dataset および、JFreeChart の個別属æ?を管ç�?�—てã�?‚‹ãƒ??タ管ç�?‚¯ラスですã?
050 * JFreeChart のグラフ合成機è?のための、å?別のグラフ描画属æ?を管ç�?�—てã�?�¾すã?
051 * å†?ƒ¨çš?�«、引数のæ–?—å?ã‚?JFreeChart のå�?‚ªブジェクトへの変換なども行ってã�?�¾すã?
052 *
053 * @version 0.9.0 2007/06/21
054 * @author Kazuhiko Hasegawa
055 * @since JDK1.1,
056 */
057 public class ChartDataset {
058
059 private Dataset dataset = null; // Dataset オブジェクãƒ?
060 private String query = null; // 実行クエリー
061 private String chartType = null; // チャートã?種é¡?
062 private boolean baseLegend = true; // シリーズ単位ã?凡ä¾?の表示可否
063 private String valueLabel = null;
064 private double[] markValues = null; // doubleの配å?
065 private Color[] markColors = new Color[] { Color.RED }; // Colorの配å?
066 private Color[] markOverColors = null; // 4.0.3.0 (2008/01/07) マã?カーラインのè¶?�Ž色
067 private boolean useMarkAnchor = true; // 4.1.1.0 (2008/02/04) 設定å?をラベル表示するかどã�?�‹
068 private int dynamicOCNo = -1; // 4.1.1.0 (2008/02/04) 動的なマã?カーラインの基準シリーズ番号
069 private int dynamicOCadrs = -1; // 4.1.1.0 (2008/02/21) 動的なマã?カーラインの基準番号
070 private String lowerBound = null; // double
071 private String upperBound = null; // double
072 private String tickSize = null; // double 4.0.3.0 (2008/01/07)
073 private boolean useGradient = false;
074 private boolean shapesVisible = true;
075 private Color[] shapeColors = null; // 4.0.3.0 (2008/01/07) ãƒ??タ毎にShapeをå?り替える時ã?色æŒ?®?
076 private String shapeScale = null; // 4.1.1.0 (2008/02/04) 基本形 Shape の表示倍率(double)
077 private boolean useDottedLine = false;
078 private Color[] seriesColors = null; // シリーズに対応した色æŒ?®?
079 private boolean isLabelsVisible = true; // 4.0.2.0 (2007/12/20) (縦軸)のラベルを表示するかどã�?�‹
080 private boolean isMarksVisible = true; // 4.0.2.0 (2007/12/20) (縦軸)のマã?カーを表示するかどã�?�‹
081 private boolean isItemValVisible= false; // 4.1.1.0 (2008/02/04) ãƒ??タの値(itemText)を表示するかどã�?�‹
082 private boolean isItemLastVisible= false; // 4.1.2.0 (2008/03/12) ãƒ??タの値(itemText)でæœ?¾Œã?み表示するかどã�?�‹
083 private boolean useItemLabelSep = true; // 4.1.2.0 (2008/03/12) ãƒ??タの値(itemText)の表示に桁区åˆ?‚Šæ–?—を使用するかどã�?�‹
084 private String barWidth = null; // 4.0.3.0 (2008/01/07) バã?å¹?double)
085 private String maxBarWidth = null; // 4.0.2.0 (2007/12/20) バã?å¹??æœ?¤§値(0.0??.0)
086 // private double chartOffset = 0.0; // 4.1.1.0 (2008/02/04) グラフã?書きå?し位置(double)
087 private String itemMargin = null; // 4.0.2.0 (2007/12/20) バã?アイãƒ?ƒ のマã?ジン(0.0??.0)
088 private String visibleLimit = null; // 4.0.3.0 (2008/01/07) 表示下限値(これ以下ã?ãƒ??タは未表示)
089 private String valueInset = null; // 4.0.3.0 (2008/01/07) 縦軸表示領域INSET値
090 private double domainMargin = 0.0; // 4.1.1.0 (2008/02/14) グラフã?書きå?し位置の調整比率
091
092 private String timeFormatType = null; // 5.5.2.1 (2012/05/07) 時刻の表示方æ³?E1/E2/E3/H1/H2/H3)
093 private boolean useVerticalLabels = false; // 5.5.2.1 (2012/05/07) ラベルの表示向き(横書ã�?false/縦書ã�?true)
094
095 /**
096 * Connection と query æ–?—å?から、Dataset オブジェクトを作æ?しますã?
097 *
098 * setChartType( String ) でæŒ?®šされたチャートタイプに応じて、Datasetオブジェクãƒ?
099 * を構築しますã?
100 * Dataset クラスはã€?org.jfree.data.jdbc.JDBCXXXXDataset" の XXXX のç®?‰€ã‚?
101 * ChartFactory クラスのチャートタイプ変換表に基づã�?�¦求めますã?
102 * 現状は、Category , Pie , XY の?“種類と、Value が指定可能ですã?
103 * ※ Value は、conn ã‚?sql を使用してã�?�¾せん。å?は、markValues を使用してã�?�¾すã?
104 * これは、現状の暫定方法であり、今後ã?変わる可能性がありますã?
105 *
106 * @og.rev 4.0.0.0 (2007/11/28) new Double(double) â‡?Double.valueOf(double) 変更
107 *
108 * @param conn Datasetの取得å?のコネクション
109 * @param sql 取得するクエリーæ–?—å?
110 * @throws SQLException ãƒ??タベã?ス実行エラーが発生したå?å�?
111 */
112 public void makeDataset( final Connection conn,final String sql ) throws SQLException {
113 dataset = ChartFactory.newDataset( conn,sql,chartType );
114 query = sql ;
115
116 // 暫定的対応ã?本当ã?、SQL を実行してそã?値をセãƒ?ƒˆすべã�?
117 if( dataset instanceof DefaultValueDataset ) {
118 if( markValues != null && markValues.length > 0 ) {
119 ((DefaultValueDataset)dataset).setValue( Double.valueOf( markValues[0] ) );
120 }
121 else {
122 String errMsg = "markValues が指定されてã�?�¾せんã€?;
123 throw new HybsSystemException( errMsg );
124 }
125 }
126 }
127
128 /**
129 * DBTableModelオブジェクトからã?Dataset オブジェクトを作æ?しますã?
130 *
131 * setChartType( String ) でæŒ?®šされたチャートタイプに応じて、Datasetオブジェクãƒ?
132 * を構築しますã?
133 *
134 * 現状は、Category , Pie , XY の?“種類と、Value が指定可能ですã?
135 * ※ Value は、DBTableModel を使用してã�?�¾せん。å?は、markValues を使用してã�?�¾すã?
136 * これは、現状の暫定方法であり、今後ã?変わる可能性がありますã?
137 *
138 * @og.rev 5.3.0.0 (2010/12/01) 新規追åŠ?
139 *
140 * @param table Datasetの取得å?のãƒ??ブルモãƒ?ƒ«
141 */
142 public void makeDataset( final DBTableModel table ) {
143 dataset = ChartFactory.newDataset( table,chartType );
144
145 // 暫定的対応ã?本当ã?、SQL を実行してそã?値をセãƒ?ƒˆすべã�?
146 if( dataset instanceof DefaultValueDataset ) {
147 if( markValues != null && markValues.length > 0 ) {
148 ((DefaultValueDataset)dataset).setValue( Double.valueOf( markValues[0] ) );
149 }
150 else {
151 String errMsg = "markValues が指定されてã�?�¾せんã€?;
152 throw new HybsSystemException( errMsg );
153 }
154 }
155 }
156
157 /**
158 * NumberAxis オブジェクトを作æ?しますã?
159 *
160 * NumberAxis オブジェクトã?、Value(縦軸)の属æ?を設定する為に使用されã‚?
161 * オブジェクトですã?
162 * これに、各種属æ?を設定して、å?を返しますã?
163 * 属æ?としては、isLineVisible、isLabelsVisible、isMarksVisibleã€?
164 * range(lowerBound、upperBound) ですã?
165 *
166 * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
167 * @og.rev 4.0.3.0 (2008/01/07) 縦軸レンジをå?別設定ã?チックå¹?Œ‡å®?
168 * @og.rev 4.1.1.0 (2008/02/04) HybsNumberAxis 採用
169 * @og.rev 4.1.1.0 (2008/02/04) setAxisLineVisible をã?isMarksVisible 値で設定するã?
170 * @og.rev 5.5.2.1 (2012/05/07) timeFormatType 、useVerticalLabels 属æ?を追åŠ?�™るã?
171 *
172 * @return 縦軸の属æ?(NumberAxisオブジェクãƒ?
173 */
174 protected NumberAxis makeNumberAxis() {
175 NumberAxis axis = new HybsNumberAxis( valueLabel );
176
177 // 縦軸レンジå¹??軸設å®?
178 if( lowerBound != null ) {
179 axis.setLowerBound( Double.parseDouble( lowerBound ) );
180 }
181
182 if( upperBound != null ) {
183 axis.setUpperBound( Double.parseDouble( upperBound ) );
184 }
185
186 if( tickSize != null ) {
187 axis.setTickUnit( new NumberTickUnit( Double.parseDouble( tickSize ) ) );
188 }
189
190 axis.setTickLabelsVisible( isLabelsVisible );
191 axis.setTickMarksVisible ( isMarksVisible );
192 axis.setAxisLineVisible ( isMarksVisible ); // 4.1.1.0 (2008/02/04)
193
194 if( valueInset != null ) {
195 double rightInset = Double.parseDouble( valueInset );
196 RectangleInsets base = axis.getTickLabelInsets();
197 RectangleInsets inset = new RectangleInsets(
198 base.getUnitType(), // UnitType unitType
199 base.getTop(), // double top
200 base.getLeft(), // double left
201 base.getBottom(), // double bottom
202 base.getRight() + rightInset // double right
203 );
204 axis.setTickLabelInsets( inset ) ;
205 }
206
207 // 5.5.2.1 (2012/05/07) 時刻の表示方æ³?E1/E2/E3/H1/H2/H3)
208 if( timeFormatType != null ) {
209 axis.setNumberFormatOverride( new HybsTimeFormat( timeFormatType ) );
210 }
211
212 // 5.5.2.1 (2012/05/07) ラベルの表示向き(横書ã�?false/縦書ã�?true)
213 if( useVerticalLabels ) {
214 axis.setVerticalTickLabels( true ); // 処ç�?š„には冗長ã€?
215 }
216
217 return axis;
218 }
219
220 /**
221 * 検索を行う クエリーæ–?—å?を返しますã?
222 *
223 * これは、makeDataset( Connection ,String ) メソãƒ?ƒ‰でæŒ?®šしたã?
224 * sql 属æ?の設定å?そã?もã?ですã?
225 *
226 * @return 取得するクエリーæ–?—å?
227 */
228 public String getQuery() { return query; }
229
230 /**
231 * Dataset オブジェクトを取得しますã?
232 *
233 * makeDataset( Connection,String ) で、予めオブジェクトを構築しておく
234 * å¿?¦�がありますã?
235 * Dataset クラスはã€?org.jfree.data.jdbc.JDBCXXXXDataset" の XXXX のç®?‰€ã‚?
236 * ChartFactory クラスのチャートタイプ変換表に基づã�?�¦求めますã?
237 * 現状は、Category , Pie , XY の?“種類と、Value が指定可能ですã?
238 *
239 * @return Datasetオブジェクãƒ?
240 * @see #makeDataset( Connection ,String )
241 */
242 protected Dataset getDataset() { return dataset; }
243
244 /**
245 * Dataset オブジェクトを作æ?する時ã?チャートタイプをæŒ?®šしますã?
246 *
247 * チャートタイãƒ?は、外部からチャートをæŒ?®šするã?に便利なように、キーåŒ?
248 * されてã�?�¾すã?こã?キーに基づã�?�¦、ChartFactory クラスの
249 * チャートタイプ変換表に基づã�?�¦、レンãƒ?ƒ©ーã‚??ãƒ??タセãƒ?ƒˆを作æ?しますã?
250 *
251 * @param type チャートタイãƒ?
252 */
253 public void setChartType( final String type ) {
254 if( type != null && type.length() > 0 ) {
255 chartType = type;
256 }
257 }
258
259 /**
260 * Dataset オブジェクトを作æ?する時ã?チャートタイプを取得しますã?
261 *
262 * チャートタイãƒ?は、外部からチャートをæŒ?®šするã?に便利なように、キーåŒ?
263 * されてã�?�¾すã?こã?キーに基づã�?�¦、ChartFactory クラスの
264 * チャートタイプ変換表に基づã�?�¦、レンãƒ?ƒ©ーã‚??ãƒ??タセãƒ?ƒˆを作æ?しますã?
265 *
266 * @return チャートタイãƒ?
267 */
268 protected String getChartType() { return chartType; }
269
270 /**
271 * シリーズ単位ã?凡ä¾?の表示可否を設定しますã?
272 *
273 * @param baseLeg シリーズ単位ã?凡ä¾?の表示可否
274 */
275 public void setBaseLegend( final boolean baseLeg ) {
276 baseLegend = baseLeg;
277 }
278
279 /**
280 * Renderer 関連の共通インターフェースを返しますã?
281 *
282 * setChartType( String )で設定された、チャートタイプに応じたã?レンãƒ?ƒ©ーã‚?
283 * 返しますã?
284 * 対応表は、ChartFactory クラスに持ってã�?�¾すã?
285 * 基本çš?�«は、チャートタイãƒ?は、この、レンãƒ?ƒ©ー名称から決定してã�?�¾すã?
286 *
287 * @og.rev 4.1.1.0 (2008/02/04) useDynamicOC , isItemValVisible , shapeScale 属æ?追åŠ?
288 * @og.rev 4.1.1.0 (2008/02/04) クリãƒ?‚«ブル・マップã?設定を移動ã?serNo 引数追åŠ?
289 * @og.rev 4.1.1.0 (2008/02/04) 返す型を CategoryItemRenderer に変更
290 * @og.rev 4.1.1.0 (2008/02/16) HybsStackedBarRenderer に domainMargin を設å®?
291 * @og.rev 4.1.1.0 (2008/02/19) Shapes の設定をこちらに移動ã?
292 * @og.rev 4.1.2.0 (2008/03/12) isItemLastVisible の設å®?
293 *
294 * @param serNo シリアルNo
295 * @param urlGen CategoryURLGeneratorオブジェクãƒ?
296 *
297 * @return レンãƒ?ƒ©ーの共通インターフェース
298 * @see org.jfree.chart.renderer.category.CategoryItemRenderer
299 * @see org.jfree.chart.renderer.xy.XYItemRenderer
300 */
301 protected CategoryItemRenderer getRenderer( final int serNo , final CategoryURLGenerator urlGen ) {
302 TypeRenderer typeRen = ChartFactory.getTypeRenderer( chartType );
303 CategoryItemRenderer rend = (CategoryItemRenderer)typeRen.getRenderer();
304
305 // 4.1.1.0 (2008/02/19) LineAndShapeRenderer オブジェクトã?場合ã?設å®?
306 if( rend instanceof LineAndShapeRenderer ) {
307 LineAndShapeRenderer lsRend = (LineAndShapeRenderer)rend;
308
309 // シェーãƒ?四è§?表示。serNo å†??表示は、å?別に行いますã?
310 lsRend.setBaseShapesVisible( shapesVisible );
311 if( serNo >= 0 ) {
312 lsRend.setSeriesShapesVisible( serNo,true );
313 }
314
315 // 4.1.1.0 (2008/02/04) 繰返しshapeの開始番号(初期値:??
316 ShapeList shapeList = new ShapeList();
317 for( int i=0; i<shapeList.size(); i++ ) {
318 lsRend.setSeriesShape( i,shapeList.getShape(i) );
319 }
320 }
321
322 // 4.0.3.0 (2008/01/07) HybsLineRenderer 特別処ç�?
323 if( rend instanceof HybsLineRenderer ) {
324 HybsLineRenderer hyRend = (HybsLineRenderer)rend ;
325 if( shapeColors != null ) {
326 hyRend.setShapeColors( shapeColors );
327 }
328
329 // 4.1.1.0 (2008/02/04) shapeの大きさの倍率(初期値:null)
330 hyRend.setShapeScale( shapeScale );
331
332 // 縦軸マã?カーのè¶?�Ž時Shape色æŒ?®?未使用時ã? null)
333 if( markOverColors != null ) {
334 hyRend.setValueMarkOverColors( getValueMarkOverColors(),dynamicOCNo );
335 }
336
337 // 表示下限値(これ以下ã?ãƒ??タは未表示)の値(double)を指å®?
338 if( visibleLimit != null ) {
339 hyRend.setVisibleLimit( Double.valueOf( visibleLimit ) );
340 }
341 }
342
343 // 4.0.2.0 (2007/12/20) BarRenderer オブジェクトã?場合にマã?ジン等を設定しますã?
344 if( rend instanceof BarRenderer ) {
345 BarRenderer barRend = (BarRenderer)rend ;
346
347 // 棒ã?間を表示領域を1として小数点以下ã?数値でå¹?‚’設定すã‚?0.0??.0)
348 if( itemMargin != null ) {
349 double margin = Double.parseDouble( itemMargin );
350 barRend.setItemMargin( margin ) ;
351 }
352
353 // 棒ã?å¹?‚’設定すã€?¡¨示領域を1として小数点以下ã?数値でå¹?‚’設定すã‚?0.0??.0)
354 if( maxBarWidth != null ) {
355 barRend.setMaximumBarWidth( Double.parseDouble( maxBarWidth ) ) ;
356 }
357 }
358
359 // 4.1.1.0 (2008/02/16) HybsStackedBarRenderer オブジェクトã?場合に domainMargin を設定しますã?
360 if( rend instanceof HybsStackedBarRenderer ) {
361 HybsStackedBarRenderer stBarRend = (HybsStackedBarRenderer)rend ;
362
363 stBarRend.setDomainMargin( domainMargin ) ;
364 }
365
366 // シリーズ単位ã?凡ä¾?の表示可否
367 rend.setBaseSeriesVisibleInLegend( baseLegend );
368
369 // 4.1.1.0 (2008/02/04) ãƒ??タの値(itemText)を表示するかどã�?�‹
370 if( isItemValVisible ) {
371 // CategoryItemLabelGenerator labelGen = new StandardCategoryItemLabelGenerator();
372
373 // 4.1.2.0 (2008/03/12) 桁区åˆ?‚Šæ–?—を使用するかどã�?�‹
374 NumberFormat numForm = NumberFormat.getInstance();
375 numForm.setGroupingUsed( useItemLabelSep );
376
377 CategoryItemLabelGenerator labelGen
378 = new StandardCategoryItemLabelGenerator(
379 StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING,
380 numForm
381 );
382 rend.setBaseItemLabelGenerator( labelGen );
383
384 if( serNo >= 0 ) {
385 rend.setSeriesItemLabelsVisible( serNo,true );
386 }
387 else {
388 rend.setBaseItemLabelsVisible( true );
389 }
390 // 4.1.1.0 (2008/02/04) 動的なマã?カーラインを使用する場合ã?
391 // æŒ?®šã?番号は閾値なので、表示しませんã€?
392 if( dynamicOCNo >= 0 ) {
393 rend.setSeriesItemLabelsVisible( dynamicOCNo,false ); // 閾値
394 }
395
396 // 4.1.2.0 (2008/03/12) isItemLastVisible の設å®?
397 if( isItemLastVisible && rend instanceof HybsDrawItem ) {
398 ((HybsDrawItem)rend).setItemLabelLastVisible( true ) ;
399 }
400 }
401
402 // クリãƒ?‚«ブル・マッãƒ?
403 if( urlGen != null ) {
404 if( serNo >= 0 ) {
405 rend.setSeriesItemURLGenerator( serNo,urlGen );
406 }
407 else {
408 rend.setBaseItemURLGenerator( urlGen );
409 }
410 }
411
412 return rend;
413 }
414
415 /**
416 * 縦軸の表示名称を指定しますã?
417 *
418 * @param valLbl 縦軸の表示名称
419 */
420 public void setValueLabel( final String valLbl ) {
421 if( valLbl != null && valLbl.length() > 0 ) {
422 valueLabel = valLbl;
423 }
424 }
425
426 /**
427 * 縦軸の表示名称を取得しますã?
428 *
429 * @return 縦軸の表示名称
430 */
431 protected String getValueLabel() { return valueLabel; }
432
433 /**
434 * マã?カーラインの設定å?配å?を指定しますã?
435 *
436 * æŒ?®šã?値にマã?カーラインを引きますã?
437 * 色は、setMarkColor( String ) でæŒ?®šしますã?
438 * markColors と、あわせて設定するå¿?¦�がありますã?
439 * markColorsがã?æŒ?®šされてã�?�ªã�??合ã?、Color.RED で マã?カーされますã?
440 * dynamicOCNo を使用する場合ã?、そのValues の並びのç®?‰€にã€?
441 * "G" とã�?�†æ–?—å?を設定して下さã�??
442 * 例ï¼?000,G 基準1ã?ã€?000の直線ã?基準2ã?、グラãƒ?とã�?�†意味ã€?
443 *
444 * @og.rev 4.1.1.0 (2008/02/21) 基準ラインにグラフを使用する場合ã?位置æŒ?®?
445 *
446 * @param mkVal マã?カーラインの設定å?配å?
447 * @see #setMarkColors( String[] )
448 */
449 public void setMarkValues( final String[] mkVal ) {
450 if( mkVal != null && mkVal.length > 0 ) {
451 int size = mkVal.length;
452 markValues = new double[size];
453 for( int i=0; i<size; i++ ) {
454 if( "G".equals( mkVal[i] ) ) {
455 dynamicOCadrs = i;
456 markValues[i] = 0.0;
457 }
458 else {
459 markValues[i] = Double.parseDouble( mkVal[i] );
460 }
461 }
462 }
463 }
464
465 /**
466 * マã?カーラインの色をé?列指定しますã?
467 *
468 * マã?カーラインとは、縦軸設定ã?ラインの事で、縦軸の設定å?(markValues)に
469 * 横方向にラインを付与しますã?こã?ラインの色をã?カンマ区åˆ?‚Š形式で
470 * æŒ?®šしますã?
471 * markValues と、あわせて設定するå¿?¦�がありますã?
472 * 個数が異なるå?合ã?、markValues が優先されã?無æŒ?®šã?場合ã?、Color.REDで
473 * 表示されますã?
474 *
475 * <pre>
476 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
477 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE)
478 * #XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
479 * </pre>
480 *
481 * @param mkCol マã?カーラインの色配å?
482 * @see java.awt.Color#BLACK
483 * @see #setMarkValues( String[] )
484 */
485 public void setMarkColors( final String[] mkCol ) {
486 if( mkCol != null && mkCol.length > 0 ) {
487 int size = mkCol.length;
488 markColors = new Color[size];
489 for( int i=0; i<size; i++ ) {
490 markColors[i] = StringUtil.getColorInstance( mkCol[i] );
491 }
492 }
493 }
494
495 /**
496 * マã?カーライン描画時に、その設定å?を表示しますã?
497 *
498 * マã?カーラインの縦軸の設定å?(markValues)に、設定å?をラベル表示しますã?
499 * 位置は、TextAnchor.BASELINE_LEFT 固定ですã?
500 * 初期値は、表示する(true)ですã?
501 *
502 * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
503 *
504 * @param useAnchor true:設定å?を表示するã€?
505 */
506 public void setUseMarkAnchor( final boolean useAnchor ) {
507 useMarkAnchor = useAnchor ;
508 }
509
510 /**
511 * マã?カーラインのè¶?�Ž時ã?Shape色をカンマ区åˆ?‚Š形式でè¤?•°æŒ?®šしますã?
512 *
513 * HybsLine でのみ使用可能ですã?
514 * マã?カーラインを使用する場合に、そのラインをè¶?�ˆなã�?‰²、è¶?�ˆる色を指定しますã?
515 * こã?色のæŒ?®šã?、ã?ーカーラインの色ã‚??ーカーラインの設定å?の個数?‹1に
516 * なりますã?つまりã?色?‘:設定å??‘:色?’:設定å??’:色??となりますã?
517 * 色?‘ã?、設定å??‘より小さã�??合に使用され、色?’ã?、設定å??‘より大きくã€?
518 * 設定å??’より小さã�??合ã?色?“ã?、設定å??’より大きい場合になりますã?
519 *
520 * æŒ?®š文字å?は、java.awt.Color クラスのstatic フィールド名でæŒ?®šしますã?
521 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
522 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できますã?
523 * またã?#XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
524 * markValues と、あわせて設定するå¿?¦�がありますã?
525 * どちらかがã?æŒ?®šされてã�?�ªã�??合ã?、ã?ーカー表示されませんã€?
526 * <pre>
527 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
528 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE)
529 * #XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
530 * </pre>
531 *
532 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
533 *
534 * @param ovCol マã?カーラインのè¶?�Ž時ã?Shape色
535 * @see java.awt.Color#BLACK
536 */
537 public void setMarkOverColors( final String[] ovCol ) {
538 if( ovCol != null && ovCol.length > 0 ) {
539 int size = ovCol.length;
540 markOverColors = new Color[size];
541 for( int i=0; i<size; i++ ) {
542 markOverColors[i] = StringUtil.getColorInstance( ovCol[i] );
543 }
544 }
545 }
546
547 /**
548 * マã?カーラインのè¶?�Ž時ã?Shape色を規定するオブジェクトを返しますã?
549 *
550 * HybsLine でのみ使用可能ですã?
551 * 設定情報が存在しなã�??合ã?、null を返しますã?
552 *
553 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
554 * @og.rev 4.1.1.0 (2008/02/04) markColors 属æ?追åŠ?
555 * @og.rev 4.1.1.1 (2008/02/25) markValues での "G" æŒ?®šをè€??
556 *
557 * @return マã?カーラインのè¶?�Ž時ã?Shape色管ç�?‚ªブジェクãƒ?
558 */
559 private ValueMarkOverColors getValueMarkOverColors() {
560 ValueMarkOverColors vmoc = null;
561
562 if( markValues != null && markOverColors != null &&
563 markValues.length + 1 == markOverColors.length &&
564 markValues.length >= 1 ) {
565 int dynAdrs = (dynamicOCadrs >= 0) ? dynamicOCadrs : 0 ;
566
567 vmoc = new ValueMarkOverColors(
568 markValues,
569 markOverColors,
570 markColors[dynAdrs],
571 dynamicOCadrs
572 );
573 }
574
575 return vmoc ;
576 }
577
578 /**
579 * 動的なマã?カーラインの基準シリーズ番号を設定しまã�?初期値:-1)ã€?
580 *
581 * 動的なマã?カーラインを使用する場合ã?、基準å?となるシリーズ番号を指定しますã?
582 *
583 * マã?カーラインのæœ?¸‹位閾値に相当しますã?これは、グラフ化されますがã€?
584 * Shape は自動的に削除されますã?
585 * こã?設定を使用する場合ã?æœ??のãƒ??タには、å¿?�šShapeが付きますã?それ以外ã?
586 * ãƒ??タに、Shape を付けるかどã�?�‹は、shapesVisible 属æ?でæŒ?®šしますã?
587 * こã?線ã?色は、markColors でæŒ?®šしたã?æœ?¸‹位ã?色になりますã?またã?
588 * markValues でæŒ?®šしたã?æœ?¸‹位ã?値は、使用されません。たã�?�—、色æŒ?®šã?
589 * 関係上ã?設定しておくå¿?¦�がありますã?
590 * またã?isValueVisible == true で、設定å?の値表示を行う場合も、最下位ã?
591 * 値は表示しなã�?‚ˆã�?�«しますã?
592 * 初期値は、使用しなã�?-1)ですã?
593 *
594 * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
595 * @og.rev 4.1.1.0 (2008/02/19) setUseDynamicOC �setDynamicOCNo
596 *
597 * @param ocNo 動的なマã?カーラインの基準シリーズ番号
598 */
599 public void setDynamicOCNo( final int ocNo ) {
600 dynamicOCNo = ocNo;
601 }
602
603 /**
604 * マã?カーラインの ValueMarker オブジェクトé?列を返しますã?
605 *
606 * マã?カーライン は、markValues(double配å?) と markColors(Color配å?)
607 * より、ValueMarker オブジェクトをã€??次配å?化してã�?��ますã?
608 * useMarkAnchor == true の場合ã?、設定å?(markValues) の Anchor ã‚?
609 * 表示しますã?位置は、TextAnchor.BASELINE_LEFT 固定ですã?
610 * dynamicOCNo が指定された場合ã?、最下位ã?閾値は使用しませんã€?
611 *
612 * @og.rev 4.1.1.0 (2008/02/04) useMarkAnchor 属æ?追åŠ?
613 * @og.rev 4.1.1.0 (2008/02/04) 動的なオーバã?カラー useDynamicOC 属æ?追åŠ?
614 *
615 * @return マã?カーラインのオブジェクトé?åˆ?not null)
616 * @see java.awt.Color#BLACK
617 * @see #setMarkValues( String[] )
618 * @see #setMarkColors( String[] )
619 * @see #setUseMarkAnchor( boolean )
620 */
621 protected ValueMarker[] getValueMarkers() {
622 List<ValueMarker> markerList = new ArrayList<ValueMarker>();
623 int size = (markValues == null) ? 0 : markValues.length;
624 for( int i=0; i<size; i++ ) {
625 if( i != dynamicOCadrs ) {
626 ValueMarker marker = new ValueMarker( markValues[i] );
627 marker.setPaint( markColors[i] );
628 if( useMarkAnchor ) {
629 marker.setLabel( String.valueOf( markValues[i] ) );
630 marker.setLabelTextAnchor( TextAnchor.BASELINE_LEFT );
631 }
632 markerList.add( marker );
633 }
634 }
635
636 return markerList.toArray( new ValueMarker[markerList.size()] );
637 }
638
639 /**
640 * チャートã?縦軸のæœ?°�å?をセãƒ?ƒˆしまã�?初期値:自動計ç®?ã€?
641 *
642 * 何もæŒ?®šしなã�??合ã?、データのæœ?°�å?から、è?動的に計算しますã?
643 *
644 * @param lowBnd 縦軸のæœ?°�å?
645 * @see #setUpperBound( String )
646 */
647 public void setLowerBound( final String lowBnd ) {
648 if( lowBnd != null && lowBnd.length() > 0 ) {
649 lowerBound = lowBnd;
650 }
651 }
652
653 /**
654 * チャートã?縦軸のæœ?¤§値をセãƒ?ƒˆしまã�?初期値:自動計ç®?ã€?
655 *
656 * 何もæŒ?®šしなã�??合ã?、データのæœ?¤§値から、è?動的に計算しますã?
657 *
658 * @param upBnd 縦軸のæœ?¤§値
659 * @see #setLowerBound( String )
660 */
661 public void setUpperBound( final String upBnd ) {
662 if( upBnd != null && upBnd.length() > 0 ) {
663 upperBound = upBnd;
664 }
665 }
666
667 /**
668 * チャートã?縦軸の目盛ã?å¹?‚’セãƒ?ƒˆしまã�?初期値:自動計ç®?ã€?
669 *
670 * 何もæŒ?®šしなã�??合ã?、データのç¯?›²から、è?動的に計算しますã?
671 *
672 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
673 *
674 * @param size 縦軸のチック(目ç›?のå¹?
675 */
676 public void setTickSize( final String size ) {
677 if( size != null && size.length() > 0 ) {
678 tickSize = size;
679 }
680 }
681
682 /**
683 * バã?チャートã?グラãƒ??ション処ç�?‚’行うかどã�?�‹[true/false]をセãƒ?ƒˆしまã�?初期値:true)ã€?
684 *
685 * 通常のバã?チャートã?、単ä¸?‰²表示で表されますが、これにグラãƒ??ション効果を
686 * 付加するかどã�?�‹を指定しますã?
687 * 通常のバã?チャートが、少しきれã�?�«見えますã?
688 * 初期値は、true(グラãƒ??ション効果を付与すã‚?ですã?
689 *
690 * @param useGrad グラãƒ??ション処ç�?[true:する/false:しない]
691 */
692 public void setUseGradient( final boolean useGrad ) {
693 useGradient = useGrad;
694 }
695
696 /**
697 * バã?チャートã?グラãƒ??ション処ç�?‚’行うかどã�?�‹を取得しますã?
698 *
699 * 通常のバã?チャートã?、単ä¸?‰²表示で表されますが、これにグラãƒ??ション効果を
700 * 付加するかどã�?�‹を指定しますã?
701 * 通常のバã?チャートが、少しきれã�?�«見えますã?
702 * 初期値は、false(使用しなã�?ですã?
703 *
704 * @return グラãƒ??ション処ç�?する:true/しなã�?false)
705 * @see #setUseGradient( boolean )
706 */
707 protected boolean isUseGradient() { return useGradient; }
708
709 /**
710 * ラインチャートã?ポイントを四角表示するかどã�?�‹を指定しまã�?初期値:false)ã€?
711 *
712 * ラインチャートã?ã€??常、線å?で表され、各ポイントにつã�?�¦もã?線å?で接続されますã?
713 * shapesVisible ã‚?true に設定すると、各ポイントが、線上に四角く表示されã€?
714 * そã?ポイントã?位置をã?容易に判断出来るよã�?�«なりますã?
715 * 初期値は、ã?ーカーをå?れませんã€?
716 *
717 * @param shVisible ポイントを四角表示するかどã�?�‹
718 */
719 public void setShapesVisible( final boolean shVisible ) {
720 shapesVisible = shVisible;
721 }
722
723 /**
724 * ラインチャートã?ポイントを四角表示するかどã�?�‹を取得しますã?
725 *
726 * ラインチャートã?ã€??常、線å?で表され、各ポイントにつã�?�¦もã?線å?で接続されますã?
727 * shapesVisible ã‚?true に設定すると、各ポイントが、線上に四角く表示されã€?
728 * そã?ポイントã?位置をã?容易に判断出来るよã�?�«なりますã?
729 * 初期値は、ã?ーカーをå?れませんã€?
730 *
731 * @return ポイントを四角表示するかどã�?�‹
732 * @see #setShapesVisible( boolean )
733 */
734 protected boolean isShapesVisible() { return shapesVisible; }
735
736 /**
737 * ãƒ??タ毎にShapeをå?り替える時ã?色の繰返しパターンを文字å?配å?でæŒ?®šしますã?
738 *
739 * HybsLine でのみ使用可能ですã?
740 * これは、データそã?もã?がã?繰返し性のある場合に、その繰返し性に対応しã�?
741 * 形状のShape を表示させるå?合に使用しますã?
742 * 繰返しShapeの形状は、JFreeChart のシリーズ毎ã?繰返し標準形状を使用しますã?
743 * 現在のバã?ジョンではã€?¼‘0å?までの繰返しに対応可能ですã?
744 * 繰返し色をã?æŒ?®šしたå?ã�?�‘ã€??に使用されてã�?��ますã?
745 *
746 * æŒ?®š文字å?は、java.awt.Color クラスのstatic フィールド名でæŒ?®šしますã?
747 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
748 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できますã?
749 * またã?#XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
750 *
751 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
752 *
753 * @param colors ãƒ??タ毎ã?色の繰返しパターン(æ–?—å?配å?)
754 * @see java.awt.Color#BLACK
755 */
756 public void setShapeColors( final String[] colors ) {
757 if( colors != null && colors.length > 0 ) {
758 int size = colors.length;
759 shapeColors = new Color[size];
760 for( int i=0; i<size; i++ ) {
761 shapeColors[i] = StringUtil.getColorInstance( colors[i] );
762 }
763 }
764 }
765
766 /**
767 * shapeの大きさをå?çŽ?Œ‡定で変更しまã�?初期値:null)ã€?
768 *
769 * ラインチャートã?Shape(å�?‚°ラフã?ポイントã?マã?カー)の大きさはã€??常はã€?
770 * 自動設定されますã?
771 * こã?大きさをã?倍率æŒ?®šで、変更可能ですã?
772 * æŒ?®šã?、double 型ですã?
773 * 初期値は、null は、スケール変更しません(自動設定ã?ままの大きさ)
774 *
775 * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
776 *
777 * @param scale shapeの大きさの倍率
778 */
779 public void setShapeScale( final String scale ) {
780 shapeScale = scale;
781 }
782
783 /**
784 * ラインチャートã?線をドットラインにするかどã�?�‹を指定しまã�?初期値:false)ã€?
785 *
786 * ラインチャートã?ã€??常、線å?で表されますã?
787 * これに、点線で表すことで、グラフã?違いをã?色ã�?�‘でなく形状でも識別
788 * しやすくすることが可能ですã?
789 * 初期値は、線å?ですã?
790 *
791 * @param useDotLine ドットラインにするかどã�?�‹
792 */
793 public void setUseDottedLine( final boolean useDotLine ) {
794 useDottedLine = useDotLine;
795 }
796
797 /**
798 * ラインチャートã?線をドットラインにするかどã�?�‹を取得しますã?
799 *
800 * ラインチャートã?ã€??常、線å?で表されますã?
801 * これに、点線で表すことで、グラフã?違いをã?色ã�?�‘でなく形状でも識別
802 * しやすくすることが可能ですã?
803 * 初期値は、線å?ですã?
804 *
805 * @return ドットラインにするかどã�?�‹
806 * @see #setUseDottedLine( boolean )
807 */
808 protected boolean isUseDottedLine() { return useDottedLine; }
809
810 /**
811 * è¤?•°チャート描画時ã?チャート色の繰返しパターンを文字å?配å?でæŒ?®šしますã?
812 *
813 * 通常、è¤?•°のチャートを同時に表示させるå?合ã?、縦軸がå?通であればã€?
814 * ?‘回のSelectåˆ?�§è¤?•°ãƒ??タを取得しますã?
815 * こã?、データをシリーズと呼んでおり、これを区別する為に、色をå?けますã?
816 * 初期値は、JFreeChart がè?動で割り振りますã?
817 * これをã?外部からCVS形式で、カンマ区åˆ?‚Šで色コードをæŒ?®šしますã?
818 * æŒ?®šデータが多い場合ã?、多いåˆ??色は使用されません。少なã�??合ã?ã€?
819 * é ?•ªに繰り返して使用されますã?
820 * 例えばã€?¼‘色ã�?�‘æŒ?®šしたå?合ã?、すべてのシリーズが同じ色で表されますã?
821 *
822 * æŒ?®š文字å?は、java.awt.Color クラスのstatic フィールド名でæŒ?®šしますã?
823 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
824 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できますã?
825 * またã?#XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
826 *
827 * @param colors チャート色の繰返しパターン(æ–?—å?配å?)
828 * @see java.awt.Color#BLACK
829 */
830 public void setSeriesColors( final String[] colors ) {
831 if( colors != null && colors.length > 0 ) {
832 int size = colors.length;
833 seriesColors = new Color[size];
834 for( int i=0; i<size; i++ ) {
835 seriesColors[i] = StringUtil.getColorInstance( colors[i] );
836 }
837 }
838 }
839
840 /**
841 * è¤?•°チャート描画時ã?チャート色の繰返しパターンをColor配å?でæŒ?®šしますã?
842 *
843 * @return チャート色の繰返しパターン(Color配å?)
844 * @see #setSeriesColors( String[] )
845 */
846 protected Color[] getSeriesColors() {
847 return seriesColors ;
848 }
849
850 /**
851 * Value(縦軸)のラベルを表示するかどã�?�‹を指定しまã�?初期値:true[表示する])ã€?
852 *
853 * ValueAxis にて設定される、縦軸æƒ??の、ラベルを表示するかどã�?�‹æŒ?®šしますã?
854 * 初期値は、true(表示する)ですã?
855 *
856 * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
857 *
858 * @param labelsVisible Value(縦軸)のラベルを表示するかどã�?�‹
859 */
860 public void setValueLabelsVisible( final boolean labelsVisible ) {
861 isLabelsVisible = labelsVisible;
862 }
863
864 /**
865 * Value(縦軸)のマã?カーを表示するかどã�?�‹を指定しまã�?初期値:true[表示する])ã€?
866 *
867 * ValueAxis にて設定される、縦軸æƒ??の、ã?ーカーを表示するかどã�?�‹æŒ?®šしますã?
868 * 初期値は、true(表示する)ですã?
869 *
870 * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
871 *
872 * @param marksVisible Value(縦軸)のマã?カーを表示するかどã�?�‹
873 */
874 public void setValueMarksVisible( final boolean marksVisible ) {
875 isMarksVisible = marksVisible;
876 }
877
878 /**
879 * ãƒ??タの値(itemText)を表示するかどã�?�‹[true/false/last]を指定しまã�?初期値:false[表示しない])ã€?
880 *
881 * CategoryItemRenderer 関連のグラフã?設定å?をグラフ上に表示するかどã�?�‹ã‚?
882 * æŒ?®šしますã?
883 * true に設定したå?合ã?通常の場合ã?、すべてのシリーズにラベル表示されますã?
884 * false に設定すると、表示されませんã€?
885 * last を設定すると、各シリーズのæœ?¾Œã?値のみ表示されますã?
886 * ChartCreate クラスに、seriesPikup が設定されてã�?‚‹場合ã?、指定ã?シリーズ
887 * のみの設定å?を表示しã?他ã?値は、表示しませんã€?
888 * 同様に、dynamicOCNo が指定されてã�?‚‹場å�?動的なマã?カーライン)
889 * æŒ?®šã?シリーズはã€?–¾値として使用されるためã?設定å?は表示されませんã€?
890 * ラベルの表示位置は、表示する線グラフã?傾きに応じてラベルの表示場æ‰?‚’
891 * 変えますã?山形、右坂ã?谷形、左å�?に応じて、上中、下右、下中、上右 に
892 * 位置を設定しますã?右にずらすã?はã€?0 ピクセル固定ですã?
893 * 初期値は、false(表示しなã�?ですã?
894 *
895 * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
896 * @og.rev 4.1.2.0 (2008/03/12) æ–?—å?のまま、受け取りるように変更
897 *
898 * @param visible ãƒ??タの値の表示のさせ方 [true/false/last]
899 * @see ChartCreate#setSeriesPikup( int )
900 */
901 public void setItemLabelVisible( final String visible ) {
902 if( "true".equalsIgnoreCase( visible ) ) {
903 isItemValVisible = true;
904 }
905 else if( "last".equalsIgnoreCase( visible ) ) {
906 isItemValVisible = true;
907 isItemLastVisible = true;
908 }
909 else if( visible != null && !"false".equalsIgnoreCase( visible ) ) {
910 String errMsg = "itemLabelVisible は、ã?true,false,last」から指定してくださいã€?"
911 + visible + "]";
912 throw new HybsSystemException( errMsg );
913 }
914 }
915
916 /**
917 * ãƒ??タの値(itemText)の表示に桁区åˆ?‚Šæ–?—を使用するかどã�?�‹を指定しますã?
918 *
919 * itemLabelVisible=true 時に、表示されるデータ値ラベルでã€?
920 * NumberFormat してã�?�¾すがã€?¼“桁区åˆ?‚Šæ–??123,456,789.0) の
921 * 区åˆ?‚Š記号を表示するかどã�?�‹を指定しますã?
922 * true を指定すると、表示しますã?false では、表示しませんã€?
923 * 初期値は、true(使用する)ですã?
924 *
925 * @og.rev 4.1.2.0 (2008/03/12) 新規追åŠ?
926 *
927 * @param used 桁区åˆ?‚Šæ–?—を使用するかどã�?�‹
928 */
929 public void setUseItemLabelSep( final boolean used ) {
930 useItemLabelSep = used;
931 }
932
933 /**
934 * 縦軸の表示領域INSET値(double)を指定しますã?
935 *
936 * 縦軸æ–?—表示領域(NumberAxis)のå¹??追åŠ??を設定しますã?
937 * これはã€??常の表示領域の左側にスペã?スを挿入しますã?
938 * あくまで、追åŠ?�™るå?なので、文字ã?長さã?含まれませんã€?
939 * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
940 *
941 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
942 *
943 * @param inset Value(縦軸)の表示領域INSET値
944 */
945 public void setValueInset( final String inset ) {
946 valueInset = inset;
947 }
948
949 /**
950 * BOXチャートã?バã?å¹?double)を指定しますã?
951 *
952 * BOXチャートã?バã?å¹?double)を指定しますã?
953 * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer ã‚?
954 * 使用した描画のみですã?
955 * 棒グラフã?バã?å¹?Œ‡定ã?、直接、CategoryItemRendererState に設定してã�?�¾すã?
956 * 通常は、barMaxWidth(0.0??.0)とbarItemMargin(0.0??.0)を用ã�?�¦比率でæŒ?®šしますã?
957 * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
958 *
959 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
960 *
961 * @param width BOXチャートã?バã?å¹?double)
962 */
963 public void setBarWidth( final String width ) {
964 barWidth = width;
965 }
966
967 /**
968 * BOXチャートã?バã?å¹?double)を取得しますã?
969 *
970 * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer ã‚?
971 * 使用した描画のみですã?
972 * 棒グラフã?バã?å¹?Œ‡定ã?、直接、CategoryItemRendererState に設定してã�?�¾すã?
973 * 通常は、barMaxWidth(0.0??.0)とbarItemMargin(0.0??.0)を用ã�?�¦比率でæŒ?®šしますã?
974 * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
975 *
976 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
977 *
978 * @return BOXチャートã?バã?å¹?double)のæ–?—å?
979 */
980 protected String getBarWidth() {
981 return barWidth ;
982 }
983
984 /**
985 * BOXチャートã?バã?å¹??æœ?¤§値(0.0??.0)を指定しますã?
986 *
987 * BOXチャートã?バã?å¹??比率のæœ?¤§値を指定しますã?
988 * 表示領域を1として小数点以下ã?数値で棒ã?å¹?‚’設定しますã?
989 * 設定したå¹?�«無ç�?�Œある時ã?適当なサイズに調整されますã?
990 * (小さくしたときには棒が線ã?ようになã‚?
991 * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer ã‚?
992 * 使用した描画のみですã?
993 * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
994 *
995 * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
996 *
997 * @param barWidth BOXチャートã?バã?å¹??æœ?¤§値(0.0??.0)
998 */
999 public void setBarMaxWidth( final String barWidth ) {
1000 maxBarWidth = barWidth;
1001 }
1002
1003 /**
1004 * BOXチャートã?バã?アイãƒ?ƒ のマã?ジン(0.0??.0)を指定しますã?
1005 *
1006 * BOXチャートã?バã?アイãƒ?ƒ のマã?ジンの比率を指定しますã?
1007 * 棒ã?間を表示領域を1として小数点以下ã?数値でå¹?‚’設定しますã?
1008 * 無ç�?�Œある時ã?適当なサイズに調整されますã?
1009 * barMaxWidth より優先されますã?
1010 * 設定されるのは、org.jfree.chart.renderer.category.BarRenderer ã‚?
1011 * 使用した描画のみですã?
1012 * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
1013 *
1014 * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
1015 *
1016 * @param margin BOXチャートã?バã?アイãƒ?ƒ のマã?ジン(0.0??.0)
1017 */
1018 public void setBarItemMargin( final String margin ) {
1019 itemMargin = margin;
1020 }
1021
1022 /**
1023 * 表示下限値(これ以下ã?ãƒ??タは未表示)の値(double)を指定しますã?
1024 *
1025 * HybsLine でのみ使用可能ですã?
1026 * こã?設定å?以下ã?ãƒ??タは、存在しなã�?‰±ã�?�¨しますã?
1027 * Lineを引くときã?こã?ãƒ??タと、存在してã�?‚‹ãƒ??タ間にラインは引かれませんã€?
1028 * 何もæŒ?®šしなã�??合ã?、設定しませんã€?
1029 *
1030 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
1031 *
1032 * @param limit 表示下限値(これ以下ã?ãƒ??タは未表示)
1033 */
1034 public void setVisibleLimit( final String limit ) {
1035 visibleLimit = limit;
1036 }
1037
1038 /**
1039 * グラフã?書きå?し位置の調整比率を指定しますã?
1040 *
1041 * グラフを描画する場合ã?、書きå?し位置を少しずらしますã?
1042 * これは、グラフã?å¹?�«対して、比率でæŒ?®šしますã?
1043 * 0.0(初期値)の場合ã?、å?期描画位置である、CategoryAnchor.Middle と
1044 * 同じç®?‰€から、書きå?されますã?
1045 * 1.0 の場合ã?中å¿?�‹らã?グラフå¹??半å?が加算されã?END位置にå¯?‚Šますã?
1046 * 同様にã€?1.0 の場合ã?、グラフå¹??半å?が減算されã?START 位置になりますã?
1047 * つまりã?中å¿?�‹らã?グラフå¹??半å?単位で、前方/後方にずらす事が出来ますã?
1048 * 書きå?し位置 ??中å¿?Middle) + (domainMargin)?Šå¹???
1049 * 初期値はã€?.0(真ん中:MIDDLE)ですã?
1050 *
1051 * @og.rev 4.1.1.0 (2008/02/14) 新規追åŠ?
1052 *
1053 * @param margin グラフã?書きå?し位置の調整比率
1054 */
1055 public void setDomainMargin( final double margin ) {
1056 domainMargin = margin;
1057 }
1058
1059 /**
1060 * 時刻を表すå?合ã?表現の仕方を指定しまã�?初期値:null)ã€?
1061 *
1062 * HybsNumberAxis にオーバã?ライドすã‚?時間を表示する DecimalFormat のå†?ƒ¨クラスを利用するに当たりã?
1063 * 時刻の表示方法をæŒ?®šしますã?
1064 * 外部から与える数字ã?ã€??続してã�?‚‹å¿?¦�があるためã€?¼‘0é?数ですã?
1065 * たとえã?ã€?700 â†?17:00 , 2150 â†?21:30 とã�?�†感じですã?
1066 * 2400 をè¶?�ˆると日付違ã�?�«なりますã?
1067 *
1068 * 英語表è¨?:)と日本語表è¨?æ™?の区別とã€?4時間をè¶?�ˆるå?合ã?表示方法によってã€?¼–種類ã?パターンが存在しますã?
1069 * ã€?1:そã?ままã€?4:00 となりã?åŠ?®—されてã�?��ã€?
1070 * ã€?2:そã?ままã€?:00 に戻るã?(日付ã?無è¦?
1071 * ã€?3:そã?ままã€? 00:00 と日付が付与されるã€?
1072 * ã€?1:そã?ままã€?4æ™?0åˆ?となりã?åŠ?®—されてã�?��ã€?
1073 * ã€?2:そã?ままã€?0æ™?0åˆ?に戻るã?(日付ã?無è¦?
1074 * ã€?3:そã?ままã€?日 00æ™?0åˆ?と日付が付与されるã€?
1075 * 初期値は、使用しなã�?-1)ですã?
1076 *
1077 * @og.rev 5.5.2.1 (2012/05/07) 新規追åŠ?
1078 *
1079 * @param type 時刻の表示方æ³?[E1/E2/E3/H1/H2/H3]
1080 */
1081 public void setTimeFormatType( final String type ) {
1082 timeFormatType = type;
1083 }
1084
1085 /**
1086 * ラベルの表示向きを縦にするかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
1087 *
1088 * ChartCreate の rotationLabel は、角度を指定できましたがã?NumberAxis ではã€?
1089 * 縦にするかどã�?�‹のæŒ?®šしかできませんã€?
1090 * ここでは、true を指定するとラベルは、縦書きになりますã?
1091 * 初期値は、false(横書ã�?ですã?
1092 *
1093 * @og.rev 5.5.2.1 (2012/05/07) 新規追åŠ?
1094 *
1095 * @param useVLavels ラベルの表示向き [false:横書ã�?:true:縦書き]
1096 */
1097 public void setUseVerticalLabels( final boolean useVLavels ) {
1098 useVerticalLabels = useVLavels;
1099 }
1100
1101 /**
1102 * HybsNumberAxis にオーバã?ライドすã‚?時間を表示する DecimalFormat のå†?ƒ¨クラスを定義しますã?
1103 *
1104 * これは、ChartPlot_XY で使用する、HybsNumberAxis に対して、拡張しますã?
1105 * ãƒ??タがã?時刻を表すå?合ã?Date型ã?オブジェクトを利用して、org.jfree.chart.axis.PeriodAxis
1106 * を利用できればよいのですが、単なる数字で扱ってã�?‚‹ケースがありã?時刻にå†?ƒ¨çš?�«
1107 * 変換するケースで使ã�?�¾すã?
1108 * 外部から与える数字ã?ã€??続してã�?‚‹å¿?¦�があるためã€?¼‘0é?数ですã?
1109 * たとえã?ã€?700 â†?17:00 , 2150 â†?21:30 とã�?�†感じですã?
1110 * 24時間をè¶?�ˆるå?合ã?ã€?
1111 * Type1:そã?ままã€?:00 に戻るã?
1112 * Type2:そã?ままã€?4:00 と、そのまま、加算されてã�?��ã€?
1113 * の?’種類が用意されてã�?�¾すã?
1114 *
1115 * @og.rev 5.5.2.1 (2012/05/07) 新規追åŠ?
1116 *
1117 */
1118 private static final class HybsTimeFormat extends DecimalFormat {
1119 /** For serialization. */
1120 private static final long serialVersionUID = 201205075512L;
1121
1122 private final boolean is24repeat ;
1123 private final boolean useDay ;
1124
1125 private final int hsCode ;
1126
1127 /**
1128 * コンストラクター
1129 *
1130 * 引数に、時刻を表すå?合ã?表現の仕方を指定しますã?
1131 * ã€?1:そã?ままã€?4:00 となりã?åŠ?®—されてã�?��ã€?
1132 * ã€?2:そã?ままã€?:00 に戻るã?(日付ã?無è¦?
1133 * ã€?3:そã?ままã€? 00:00 と日付が付与されるã€?
1134 * ã€?1:そã?ままã€?4æ™?0åˆ?となりã?åŠ?®—されてã�?��ã€?
1135 * ã€?2:そã?ままã€?0æ™?0åˆ?に戻るã?(日付ã?無è¦?
1136 * ã€?3:そã?ままã€?日 00æ™?0åˆ?と日付が付与されるã€?
1137 *
1138 * @param type 時刻の表示方æ³?[E1/E2/E3/H1/H2/H3]
1139 */
1140 public HybsTimeFormat( final String inType ) {
1141 super();
1142
1143 DecimalFormatSymbols sym = new DecimalFormatSymbols();
1144 if( "E1".equals( inType ) ) {
1145 applyPattern( "#0.00" );
1146 sym.setDecimalSeparator( ':' );
1147 is24repeat = false; useDay = false;
1148 }
1149 else if( "E2".equals( inType ) ) {
1150 applyPattern( "#0.00" );
1151 sym.setDecimalSeparator( ':' );
1152 is24repeat = true; useDay = false;
1153 }
1154 else if( "E3".equals( inType ) ) {
1155 applyPattern( "#,#0.00" );
1156 sym.setDecimalSeparator( ':' );
1157 sym.setGroupingSeparator( ' ' );
1158 is24repeat = true; useDay = true;
1159 }
1160 else if( "H1".equals( inType ) ) {
1161 applyPattern( "#0.00� );
1162 sym.setDecimalSeparator( 'æ™? );
1163 is24repeat = false; useDay = false;
1164 }
1165 else if( "H2".equals( inType ) ) {
1166 applyPattern( "#0.00� );
1167 sym.setDecimalSeparator( 'æ™? );
1168 is24repeat = true; useDay = false;
1169 }
1170 else if( "H3".equals( inType ) ) {
1171 applyPattern( "#,#0.00� );
1172 sym.setDecimalSeparator( 'æ™? );
1173 sym.setGroupingSeparator( '日' );
1174 is24repeat = true; useDay = true;
1175 }
1176 else {
1177 String errMsg = "timeFormatType はã€?E1/E2/E3/H1/H2/H3) からæŒ?®šしてください。timeFormatType=[" + inType + "]" ;
1178 throw new HybsSystemException( errMsg );
1179 }
1180 setDecimalFormatSymbols( sym );
1181
1182 hsCode = super.hashCode() + Boolean.valueOf(is24repeat).hashCode() + Boolean.valueOf(useDay).hashCode();
1183 }
1184
1185 /**
1186 * double をフォーマットしてæ–?—å?を作æ?しまã�? format(double,StringBuffer,FieldPosition) のオーバã?ライãƒ?)
1187 *
1188 * timeFormatType によって、データの処ç�?�Œ変わりますã?
1189 * ã€?1:そã?ままã€?4:00 となりã?åŠ?®—されてã�?��ã€?
1190 * ã€?2:そã?ままã€?:00 に戻るã?(日付ã?無è¦?
1191 * ã€?3:そã?ままã€? 00:00 と日付が付与されるã€?
1192 * ã€?1:そã?ままã€?4æ™?0åˆ?となりã?åŠ?®—されてã�?��ã€?
1193 * ã€?2:そã?ままã€?0æ™?0åˆ?に戻るã?(日付ã?無è¦?
1194 * ã€?3:そã?ままã€?日 00æ™?0åˆ?と日付が付与されるã€?
1195 *
1196 * @param number フォーマットすã‚?double
1197 * @param result ãƒ?‚ストを追åŠ?�™る位置
1198 * @param fieldPos 入力では、å¿?¦�であれば位置合わせフィールドã? 出力では、その位置合わせフィールドã?オフセãƒ?ƒˆ
1199 * @return フォーマットされた数値æ–?—å?
1200 */
1201 public StringBuffer format( final double number, final StringBuffer result, final FieldPosition fieldPos ) {
1202 int day = (int)(number/100/24); // 日付ã?端数はåˆ?‚Š捨てるã?
1203 int hour = (int)(number/100); // 時間のみ取り出すã?
1204 if( is24repeat ) { hour = hour%24; } // ?’4時間をè¶?�ˆたå?合ã?余りのみ使用するã€?
1205
1206 int minute = (int)((number%100)*0.6); // 0.6 = 60/100 の事ã?100 ã�?60åˆ?となるã?
1207
1208 double timeVal = hour + minute/100.0 ;
1209 if( useDay ) { timeVal = timeVal + day*100 ; } // 端数をå?り捨てた日付に対してã€?00倍しておくã€?
1210 return super.format( timeVal, result, fieldPos );
1211 }
1212
1213 /**
1214 * こã?オブジェクトとæŒ?®šされたオブジェクトを比è¼?�—ますã?
1215 *
1216 * @og.rev 5.5.2.4 (2012/05/16) 新規追åŠ?findbug対å¿?
1217 *
1218 * @param anObject 比è¼?�•れるオブジェクãƒ?
1219 * @return æŒ?®šされたオブジェクトが等しã�??合ã? true、そã�?�§なã�??合ã? false
1220 */
1221 public boolean equals( final Object anObject ) {
1222 return this == anObject;
1223 }
1224
1225 /**
1226 * こã?オブジェクトã?ハッシュコードを取得しますã?
1227 *
1228 * @og.rev 5.5.2.4 (2012/05/16) 新規追åŠ?findbug対å¿?
1229 *
1230 * @return ハッシュコーãƒ?
1231 */
1232 public int hashCode() {
1233 return hsCode;
1234 }
1235 }
1236
1237 /**
1238 * こã?オブジェクトã?æ–?—å?表現を返しますã?
1239 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
1240 *
1241 * @return こã?クラスのæ–?—å?表現
1242 */
1243 @Override
1244 public String toString() {
1245 StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
1246
1247 rtn.append( "[" ).append( this.getClass().getName() ).append( "]" ).append( HybsSystem.CR );
1248 rtn.append( "chartType [" ).append( chartType ).append( "]" ).append( HybsSystem.CR );
1249 rtn.append( "valueLabel [" ).append( valueLabel ).append( "]" ).append( HybsSystem.CR );
1250 rtn.append( "markValues [" ).append( Arrays.toString( markValues ) ).append( "]" ).append( HybsSystem.CR );
1251 rtn.append( "markColors [" ).append( Arrays.toString( markColors ) ).append( "]" ).append( HybsSystem.CR );
1252 rtn.append( "lowerBound [" ).append( lowerBound ).append( "]" ).append( HybsSystem.CR );
1253 rtn.append( "upperBound [" ).append( upperBound ).append( "]" ).append( HybsSystem.CR );
1254 rtn.append( "useGradient [" ).append( useGradient ).append( "]" ).append( HybsSystem.CR );
1255 rtn.append( "shapesVisible [" ).append( shapesVisible ).append( "]" ).append( HybsSystem.CR );
1256 rtn.append( "useDottedLine [" ).append( useDottedLine ).append( "]" ).append( HybsSystem.CR );
1257
1258 return rtn.toString();
1259 }
1260 }