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