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 java.util.List; 019 020 import org.jfree.data.general.Dataset; 021 import org.jfree.data.general.PieDataset; 022 import org.jfree.data.general.ValueDataset; 023 import org.jfree.data.category.CategoryDataset; 024 import org.jfree.data.xy.XYDataset; 025 import org.jfree.chart.plot.Plot; 026 import org.jfree.chart.plot.MultiplePiePlot; 027 import org.jfree.chart.plot.MeterPlot; 028 import org.jfree.chart.plot.PiePlot; 029 import org.jfree.chart.plot.PiePlot3D; 030 import org.jfree.chart.plot.RingPlot; 031 import org.jfree.chart.plot.SpiderWebPlot; 032 import org.jfree.chart.plot.ThermometerPlot; 033 import org.jfree.chart.plot.PolarPlot; 034 import org.jfree.chart.plot.CompassPlot; 035 import org.jfree.chart.labels.StandardCategoryToolTipGenerator; 036 import org.jfree.chart.labels.StandardPieToolTipGenerator; 037 038 /** 039 * ChartPlot_Pie は、ChartPlot インターフェースを継承した実体クラスです? 040 * JFreeChart では、各種オブジェクト??合わせで、色?グラフを作?できます? 041 * チャートタイプが、?種類存在するため、ここでは、特殊な方法として、各タイプ毎に 042 * オブジェクトを構築して?す?(ファクトリメソ??処? 043 * 044 * @version 0.9.0 2007/06/21 045 * @author Kazuhiko Hasegawa 046 * @since JDK1.1, 047 */ 048 public class ChartPlot_Pie implements ChartPlot { 049 050 /** 051 * Plot オブジェクトを取得します? 052 * 053 * Plot オブジェク?には、その種類?応じた???タセ??ン?ー? 054 * 設定する?があります? 055 * また??の??タセ???それに関係する属???も?設定する?が 056 * あります? 057 * Plot は、JFreeChart オブジェクトにつき??用意しなければなりません? 058 * チャート合成時でも?Plot は?です? 059 * 060 * @og.rev 5.3.0.0 (2010/12/01) 特殊?ロ?の追? 061 * 062 * @param create ChartCreateオブジェク? 063 * 064 * @return Plotオブジェク? 065 */ 066 public Plot getPlot( final ChartCreate create ) { 067 068 List<ChartDataset> datasetList = create.getDatasetList(); 069 ChartDataset chDataset = datasetList.get(0); 070 071 Dataset dtset = chDataset.getDataset(); 072 073 // クリ?ブル・マッ? 074 HybsURLGenerator urlGen = create.getURLGenerator(); 075 // boolean useToolTip = create.getUseToolTip(); // 4.3.1.0 (2008/08/09) ??ルチップス利用フラグ 076 boolean useToolTip = create.isUseToolTip(); // 4.9.9.9 (2009/08/07) メソ?名変更 077 078 Plot plot = null; 079 String type = chDataset.getChartType(); 080 if( "MultiplePie".equalsIgnoreCase( type ) ) { 081 plot = new MultiplePiePlot(); 082 ((MultiplePiePlot)plot).setDataset( (CategoryDataset)dtset ); 083 } 084 else if( "Meter".equalsIgnoreCase( type ) ) { 085 plot = new MeterPlot(); 086 ((MeterPlot)plot).setDataset( (ValueDataset)dtset ); 087 } 088 else if( "Pie".equalsIgnoreCase( type ) ) { 089 plot = new PiePlot(); 090 ((PiePlot)plot).setDataset( (PieDataset)dtset ); 091 if( urlGen != null ) { 092 ((PiePlot)plot).setURLGenerator( urlGen ); 093 } 094 if( useToolTip ){ // 4.3.1.0 (2008/08/09) ??ルチップスの利用 095 ((PiePlot)plot).setToolTipGenerator( new StandardPieToolTipGenerator() ); 096 } 097 } 098 else if( "Pie3D".equalsIgnoreCase( type ) ) { 099 plot = new PiePlot3D(); 100 ((PiePlot3D)plot).setDataset( (PieDataset)dtset ); 101 if( urlGen != null ) { 102 ((PiePlot)plot).setURLGenerator( urlGen ); 103 } 104 if( useToolTip ){ // 4.3.1.0 (2008/08/09) ??ルチップスの利用 105 ((PiePlot)plot).setToolTipGenerator( new StandardPieToolTipGenerator() ); 106 } 107 } 108 else if( "Ring".equalsIgnoreCase( type ) ) { 109 plot = new RingPlot(); 110 ((RingPlot)plot).setDataset( (PieDataset)dtset ); 111 if( urlGen != null ) { 112 ((PiePlot)plot).setURLGenerator( urlGen ); 113 } 114 if( useToolTip ){ // 4.3.1.0 (2008/08/09) ??ルチップスの利用 115 ((RingPlot)plot).setToolTipGenerator( new StandardPieToolTipGenerator() ); 116 } 117 } 118 else if( "SpiderWeb".equalsIgnoreCase( type ) ) { 119 plot = new SpiderWebPlot(); 120 ((SpiderWebPlot)plot).setDataset( (CategoryDataset)dtset ); 121 if( urlGen != null ) { 122 ((SpiderWebPlot)plot).setURLGenerator( urlGen ); 123 } 124 if( useToolTip ){ // 4.3.1.0 (2008/08/09) ??ルチップスの利用 125 ((SpiderWebPlot)plot).setToolTipGenerator( new StandardCategoryToolTipGenerator() ); 126 } 127 } 128 else if( "Thermometer".equalsIgnoreCase( type ) ) { 129 plot = new ThermometerPlot(); 130 ((ThermometerPlot)plot).setDataset( (ValueDataset)dtset ); 131 } 132 // 5.3.0.0 (2010/12/01) 特殊?ロ?の追? 133 else if( "Polar".equalsIgnoreCase( type ) ) { 134 plot = new PolarPlot(); 135 ((PolarPlot)plot).setDataset( (XYDataset)dtset ); 136 } 137 else if( "Compass".equalsIgnoreCase( type ) ) { 138 plot = new CompassPlot(); 139 ((CompassPlot)plot).addDataset( (ValueDataset)dtset ); 140 } 141 142 return plot; 143 } 144 }