|
From: Hirzel P. <ph...@us...> - 2006-01-13 13:07:57
|
Update of /cvsroot/tcotool/TCO-Tool/src/org/tcotool/standard/charts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23136/src/org/tcotool/standard/charts Modified Files: ChartTool.java CostTypeBarChart.java CostTypePieChart.java Log Message: Feature: Allow Bar-/Pie-Charts for all DbCodeTypes used in TCO-Tool Index: CostTypePieChart.java =================================================================== RCS file: /cvsroot/tcotool/TCO-Tool/src/org/tcotool/standard/charts/CostTypePieChart.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** CostTypePieChart.java 28 Dec 2005 11:52:57 -0000 1.2 --- CostTypePieChart.java 13 Jan 2006 13:07:48 -0000 1.3 *************** *** 15,88 **** * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - import java.awt.BasicStroke; - import java.awt.Color; - import java.awt.Dimension; - import java.text.NumberFormat; - import javax.swing.JPanel; - - import org.jfree.chart.ChartFactory; - import org.jfree.chart.ChartPanel; - import org.jfree.chart.JFreeChart; - import org.jfree.chart.labels.StandardPieItemLabelGenerator; - import org.jfree.chart.plot.MultiplePiePlot; - import org.jfree.chart.plot.PiePlot; - import org.jfree.data.category.CategoryDataset; - import org.jfree.util.TableOrder; - import org.tcotool.model.CostCause; import org.tcotool.model.TcoPackage; - import org.tcotool.tools.ModelUtility; - - import ch.softenvironment.client.ResourceManager; - import ch.softenvironment.util.NlsUtils; /** * PieChart-Tool to display CostType's as Pie. * @author Peter Hirzel <i>soft</i>Environment * @version $Revision$ $Date$ */ ! public class CostTypePieChart extends ChartTool { public CostTypePieChart(TcoPackage rootObject) { super(rootObject); } - /** - * Create a Pie-Chart of total TCO-Cost over TCO-duration. - * @param rootObject - * @return - * @throws Throwable - */ - public JPanel createPieChartTcoCostCause() throws Throwable { - CategoryDataset categorydataset = createTotalCostCauseDataset(calculator.getTcoCodeBlock(null, rootObject.getObjectServer().retrieveCodes(CostCause.class))); - JFreeChart jfreechart = createChart(categorydataset); - ChartPanel chartpanel = new ChartPanel(jfreechart); - - chartpanel.setPreferredSize(new Dimension(500, 270)); - return chartpanel; - } - /** - * Create a MultiplePiePlot. - * @param categorydataset - * @return - */ - private JFreeChart createChart(CategoryDataset categorydataset) { - JFreeChart jfreechart = ChartFactory.createMultiplePieChart(NlsUtils.formatMessage(ResourceManager.getResource(ChartTool.class, "CTCostByCostType"), ModelUtility.getTypeString(CostCause.class)), - categorydataset, - TableOrder.BY_COLUMN, true, - true, false); - MultiplePiePlot multiplepieplot = (MultiplePiePlot)jfreechart.getPlot(); - multiplepieplot.setBackgroundPaint(Color.white); - multiplepieplot.setOutlineStroke(new BasicStroke(1.0F)); - JFreeChart jfreechart_0_ = multiplepieplot.getPieChart(); - PiePlot pieplot = (PiePlot)jfreechart_0_.getPlot(); - pieplot.setBackgroundPaint(null); - pieplot.setOutlineStroke(null); - pieplot.setLabelGenerator(new StandardPieItemLabelGenerator - ("{0} ({2})", - NumberFormat.getNumberInstance(), - NumberFormat.getPercentInstance())); - pieplot.setMaximumLabelWidth(0.35); - pieplot.setLabelFont(new java.awt.Font("SansSerif", 0, 9)); - pieplot.setInteriorGap(0.3); - return jfreechart; - } } \ No newline at end of file --- 15,32 ---- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import org.tcotool.model.TcoPackage; + import ch.softenvironment.util.DeveloperException; /** * PieChart-Tool to display CostType's as Pie. * @author Peter Hirzel <i>soft</i>Environment * @version $Revision$ $Date$ + * @deprecated (refactored into ChartTool) */ ! public abstract class CostTypePieChart extends ChartTool { public CostTypePieChart(TcoPackage rootObject) { super(rootObject); + throw new DeveloperException(this, "CostTypePieChart()", "Do not use this class anymore!"); } } \ No newline at end of file Index: ChartTool.java =================================================================== RCS file: /cvsroot/tcotool/TCO-Tool/src/org/tcotool/standard/charts/ChartTool.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ChartTool.java 28 Dec 2005 11:52:57 -0000 1.2 --- ChartTool.java 13 Jan 2006 13:07:48 -0000 1.3 *************** *** 16,25 **** --- 16,45 ---- */ + import java.awt.BasicStroke; + import java.awt.Color; + import java.awt.Dimension; + import java.awt.GradientPaint; + import java.text.NumberFormat; import java.util.Iterator; import java.util.List; + import javax.swing.JPanel; + import org.jfree.chart.ChartFactory; + import org.jfree.chart.ChartPanel; + import org.jfree.chart.JFreeChart; + import org.jfree.chart.axis.CategoryAxis; + import org.jfree.chart.axis.CategoryLabelPositions; + import org.jfree.chart.axis.NumberAxis; + import org.jfree.chart.labels.StandardPieItemLabelGenerator; + import org.jfree.chart.plot.CategoryPlot; + import org.jfree.chart.plot.MultiplePiePlot; + import org.jfree.chart.plot.PiePlot; + import org.jfree.chart.plot.PlotOrientation; + import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; + import org.jfree.util.TableOrder; + import org.tcotool.application.ApplicationOptions; import org.tcotool.application.FactCostDetailView; import org.tcotool.application.LauncherView; *************** *** 27,36 **** import org.tcotool.standard.report.ReportTool; import org.tcotool.tools.Calculator; import org.tcotool.model.CostCause; import org.tcotool.model.TcoPackage; - import ch.softenvironment.jomm.DbObjectServer; import ch.softenvironment.jomm.mvc.model.DbCodeType; import ch.softenvironment.jomm.mvc.model.DbObject; import ch.softenvironment.client.ResourceManager; /** --- 47,57 ---- import org.tcotool.standard.report.ReportTool; import org.tcotool.tools.Calculator; + import org.tcotool.tools.ModelUtility; import org.tcotool.model.CostCause; import org.tcotool.model.TcoPackage; import ch.softenvironment.jomm.mvc.model.DbCodeType; import ch.softenvironment.jomm.mvc.model.DbObject; + import ch.softenvironment.util.NlsUtils; import ch.softenvironment.client.ResourceManager; /** *************** *** 39,43 **** * @version $Revision$ $Date$ */ ! public abstract class ChartTool { private static final String TCO = "TCO "; //NLS protected Calculator calculator = null; --- 60,64 ---- * @version $Revision$ $Date$ */ ! public class ChartTool { private static final String TCO = "TCO "; //NLS protected Calculator calculator = null; *************** *** 50,58 **** } /** ! * Calculate Dataset for Total-Costs. * @param tco * @return */ ! protected CategoryDataset createTotalCostDataset(List tco) { // CostType (use different Colors) String personalCost = ResourceManager.getResource(PersonalCostDetailView.class, "FrmWindow_text"); --- 71,79 ---- } /** ! * Calculate Dataset for Total-Costs detailed in FactCost and PersonalCost. * @param tco * @return */ ! private CategoryDataset createTotalCostDataset(List tco) { // CostType (use different Colors) String personalCost = ResourceManager.getResource(PersonalCostDetailView.class, "FrmWindow_text"); *************** *** 73,89 **** } /** ! * Calculate Dataset for all CostType's. ! * @param costTypes * @return * @throws Throwable */ ! protected CategoryDataset createTotalCostCauseDataset(java.util.Map causes) throws Throwable { DefaultCategoryDataset set = new DefaultCategoryDataset(); ! DbObjectServer server = ((DbObject)LauncherView.getInstance().getUtility().getRoot()).getObjectServer(); ! Iterator it = server.retrieveCodes(CostCause.class).iterator(); while (it.hasNext()) { DbCodeType code = (DbCodeType)it.next(); ! java.util.List amounts = (java.util.List)causes.get(((DbObject)code).getId()); for (int year=1 /*Total makes no sense*/; (year<amounts.size() && (year<=ReportTool.getUsageDuration()/12)); year++) { set.addValue((Double)amounts.get(year), code.getNameString(), TCO + (year) + "." + ResourceManager.getResource(ChartTool.class, "CIYear")); --- 94,110 ---- } /** ! * Calculate Dataset for given codes. ! * @param codes (List of DbCodeType) * @return * @throws Throwable */ ! private CategoryDataset createTotalCodeDataset(java.util.List codes) throws Throwable { ! java.util.Map map = calculator.getTcoCodeBlock(null, codes); DefaultCategoryDataset set = new DefaultCategoryDataset(); ! Iterator it = codes.iterator(); while (it.hasNext()) { DbCodeType code = (DbCodeType)it.next(); ! java.util.List amounts = (java.util.List)map.get(((DbObject)code).getId()); for (int year=1 /*Total makes no sense*/; (year<amounts.size() && (year<=ReportTool.getUsageDuration()/12)); year++) { set.addValue((Double)amounts.get(year), code.getNameString(), TCO + (year) + "." + ResourceManager.getResource(ChartTool.class, "CIYear")); *************** *** 93,95 **** return set; } ! } --- 114,218 ---- return set; } ! /** ! * Create a CategoryPlot. ! * @param categorydataset ! * @param title ! * @param currency ! * @return ! */ ! private JFreeChart createBarChart(CategoryDataset categorydataset, String title, String currency) { ! JFreeChart jfreechart = ChartFactory.createBarChart(title, ch.softenvironment.client.ResourceManager.getResource(FactCostDetailView.class, "LblUsageDuration_text", false), ! currency, categorydataset, ! PlotOrientation.VERTICAL, true, true, ! false); ! ApplicationOptions settings = LauncherView.getInstance().getSettings(); ! jfreechart.setBackgroundPaint(Color.white); ! CategoryPlot categoryplot = jfreechart.getCategoryPlot(); ! categoryplot.setBackgroundPaint(settings.getChartBackground()); ! categoryplot.setDomainGridlinePaint(settings.getChartDomainGridLine()); ! categoryplot.setDomainGridlinesVisible(true); ! categoryplot.setRangeGridlinePaint(settings.getChartRangeGridLine()); ! NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis(); ! numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); ! BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer(); ! barrenderer.setDrawBarOutline(false); ! GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue, 0.0F, 0.0F, ! new Color(0, 0, 64)); ! GradientPaint gradientpaint_7_ = new GradientPaint(0.0F, 0.0F, Color.green, 0.0F, 0.0F, ! new Color(0, 64, 0)); ! GradientPaint gradientpaint_8_ = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F, 0.0F, ! new Color(64, 0, 0)); ! barrenderer.setSeriesPaint(0, gradientpaint); ! barrenderer.setSeriesPaint(1, gradientpaint_7_); ! barrenderer.setSeriesPaint(2, gradientpaint_8_); ! CategoryAxis categoryaxis = categoryplot.getDomainAxis(); ! categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.5235987755982988)); ! return jfreechart; ! } ! /** ! * Create a TCO Bar-Chart over all given instances of dbCodeType in detail over TCO-Duration. ! * @param dbCodeType (DbCodeType) ! * @return ! * @throws Throwable ! */ ! public JPanel createTcoBarChart(Class dbCodeType) throws Throwable { ! CategoryDataset categorydataset = createTotalCodeDataset(rootObject.getObjectServer().retrieveCodes(dbCodeType)); ! JFreeChart jfreechart = createBarChart(categorydataset, NlsUtils.formatMessage(ResourceManager.getResource(ChartTool.class, "CTCostByCodeType"), ModelUtility.getTypeString(dbCodeType)), LauncherView.getInstance().getUtility().getSystemParameter().getDefaultCurrency().getNameString()); ! ChartPanel chart = new ChartPanel(jfreechart); ! chart.setPreferredSize(new Dimension(500, 270)); ! return chart; ! } ! /** ! * Create a Bar-Chart of total TCO-Cost over TCO-duration ! * splitted in PersonalCost and FactCost. ! * @return ! * @throws Throwable ! */ ! public JPanel createTcoBarChart() throws Throwable { ! CategoryDataset categorydataset = createTotalCostDataset(calculator.getTcoCostBlock(null)); ! JFreeChart jfreechart = createBarChart(categorydataset, ResourceManager.getResource(ChartTool.class, "CTCostTotal"), LauncherView.getInstance().getUtility().getSystemParameter().getDefaultCurrency().getNameString()); ! ChartPanel chart = new ChartPanel(jfreechart); ! chart.setPreferredSize(new Dimension(500, 270)); ! return chart; ! } ! /** ! * Create a Pie-Chart of total TCO-Cost over TCO-duration. ! * @param rootObject ! * @return ! * @throws Throwable ! */ ! public JPanel createTcoPieChart(Class dbCodeType) throws Throwable { ! CategoryDataset categorydataset = createTotalCodeDataset(rootObject.getObjectServer().retrieveCodes(dbCodeType)); ! JFreeChart jfreechart = createPieChart(categorydataset); ! ChartPanel chartpanel = new ChartPanel(jfreechart); ! ! chartpanel.setPreferredSize(new Dimension(500, 270)); ! return chartpanel; ! } ! /** ! * Create a MultiplePiePlot. ! * @param categorydataset ! * @return ! */ ! private JFreeChart createPieChart(CategoryDataset categorydataset) { ! JFreeChart jfreechart = ChartFactory.createMultiplePieChart(NlsUtils.formatMessage(ResourceManager.getResource(ChartTool.class, "CTCostByCodeType"), ModelUtility.getTypeString(CostCause.class)), ! categorydataset, ! TableOrder.BY_COLUMN, true, ! true, false); ! MultiplePiePlot multiplepieplot = (MultiplePiePlot)jfreechart.getPlot(); ! multiplepieplot.setBackgroundPaint(Color.white); ! multiplepieplot.setOutlineStroke(new BasicStroke(1.0F)); ! JFreeChart jfreechart_0_ = multiplepieplot.getPieChart(); ! PiePlot pieplot = (PiePlot)jfreechart_0_.getPlot(); ! pieplot.setBackgroundPaint(null); ! pieplot.setOutlineStroke(null); ! pieplot.setLabelGenerator(new StandardPieItemLabelGenerator ! ("{0} ({2})", ! NumberFormat.getNumberInstance(), ! NumberFormat.getPercentInstance())); ! pieplot.setMaximumLabelWidth(0.35); ! pieplot.setLabelFont(new java.awt.Font("SansSerif", 0, 9)); ! pieplot.setInteriorGap(0.3); ! return jfreechart; ! } ! } \ No newline at end of file Index: CostTypeBarChart.java =================================================================== RCS file: /cvsroot/tcotool/TCO-Tool/src/org/tcotool/standard/charts/CostTypeBarChart.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** CostTypeBarChart.java 28 Dec 2005 11:52:57 -0000 1.2 --- CostTypeBarChart.java 13 Jan 2006 13:07:48 -0000 1.3 *************** *** 15,114 **** * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - import java.awt.Color; - import java.awt.Dimension; - import java.awt.GradientPaint; - import javax.swing.JPanel; - - import org.jfree.chart.ChartFactory; - import org.jfree.chart.ChartPanel; - import org.jfree.chart.JFreeChart; - import org.jfree.chart.axis.CategoryAxis; - import org.jfree.chart.axis.CategoryLabelPositions; - import org.jfree.chart.axis.NumberAxis; - import org.jfree.chart.plot.CategoryPlot; - import org.jfree.chart.plot.PlotOrientation; - import org.jfree.chart.renderer.category.BarRenderer; - import org.jfree.data.category.CategoryDataset; - import org.tcotool.application.ApplicationOptions; - import org.tcotool.application.FactCostDetailView; - import org.tcotool.application.LauncherView; - import org.tcotool.model.CostCause; import org.tcotool.model.TcoPackage; - import org.tcotool.tools.ModelUtility; ! import ch.softenvironment.client.ResourceManager; ! import ch.softenvironment.util.NlsUtils; /** ! * BarChart-Tool to display CostType's as Bar-Chart. * @author Peter Hirzel <i>soft</i>Environment * @version $Revision$ $Date$ */ public class CostTypeBarChart extends ChartTool { public CostTypeBarChart(TcoPackage rootObject) { super(rootObject); } ! /** ! * Create a CategoryPlot. ! * @param categorydataset ! * @param title ! * @param currency ! * @return ! */ ! private JFreeChart createChart(CategoryDataset categorydataset, String title, String currency) { ! JFreeChart jfreechart = ChartFactory.createBarChart(title, ch.softenvironment.client.ResourceManager.getResource(FactCostDetailView.class, "LblUsageDuration_text", false), ! currency, categorydataset, ! PlotOrientation.VERTICAL, true, true, ! false); ! ApplicationOptions settings = LauncherView.getInstance().getSettings(); ! jfreechart.setBackgroundPaint(Color.white); ! CategoryPlot categoryplot = jfreechart.getCategoryPlot(); ! categoryplot.setBackgroundPaint(settings.getChartBackground()); ! categoryplot.setDomainGridlinePaint(settings.getChartDomainGridLine()); ! categoryplot.setDomainGridlinesVisible(true); ! categoryplot.setRangeGridlinePaint(settings.getChartRangeGridLine()); ! NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis(); ! numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); ! BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer(); ! barrenderer.setDrawBarOutline(false); ! GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue, 0.0F, 0.0F, ! new Color(0, 0, 64)); ! GradientPaint gradientpaint_7_ = new GradientPaint(0.0F, 0.0F, Color.green, 0.0F, 0.0F, ! new Color(0, 64, 0)); ! GradientPaint gradientpaint_8_ = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F, 0.0F, ! new Color(64, 0, 0)); ! barrenderer.setSeriesPaint(0, gradientpaint); ! barrenderer.setSeriesPaint(1, gradientpaint_7_); ! barrenderer.setSeriesPaint(2, gradientpaint_8_); ! CategoryAxis categoryaxis = categoryplot.getDomainAxis(); ! categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.5235987755982988)); ! return jfreechart; ! } ! /** ! * Create a TCO Bar-Chart over all CostTypes in detail over TCO-Duration. ! * @param rootObject ! * @return ! * @throws Throwable ! */ ! public JPanel createBarChartTcoCostCause() throws Throwable { ! CategoryDataset categorydataset = createTotalCostCauseDataset(calculator.getTcoCodeBlock(null, rootObject.getObjectServer().retrieveCodes(CostCause.class))); ! JFreeChart jfreechart = createChart(categorydataset, NlsUtils.formatMessage(ResourceManager.getResource(ChartTool.class, "CTCostByCostType"), ModelUtility.getTypeString(CostCause.class)), LauncherView.getInstance().getUtility().getSystemParameter().getDefaultCurrency().getNameString()); ! ChartPanel chart = new ChartPanel(jfreechart); ! chart.setPreferredSize(new Dimension(500, 270)); ! return chart; ! } ! /** ! * Create a Bar-Chart of total TCO-Cost over TCO-duration. ! * @param rootObject ! * @return ! * @throws Throwable ! */ ! public JPanel createBarChartTcoTotal() throws Throwable { ! CategoryDataset categorydataset = createTotalCostDataset(calculator.getTcoCostBlock(null)); ! JFreeChart jfreechart = createChart(categorydataset, ResourceManager.getResource(ChartTool.class, "CTCostTotal"), LauncherView.getInstance().getUtility().getSystemParameter().getDefaultCurrency().getNameString()); ! ChartPanel chart = new ChartPanel(jfreechart); ! chart.setPreferredSize(new Dimension(500, 270)); ! return chart; ! } } --- 15,34 ---- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import org.tcotool.model.TcoPackage; ! import ch.softenvironment.util.DeveloperException; /** ! * BarChart-Tool to display CostCause's as Bar-Chart. * @author Peter Hirzel <i>soft</i>Environment * @version $Revision$ $Date$ + * @deprecated (refactored into ChartTool) */ public class CostTypeBarChart extends ChartTool { public CostTypeBarChart(TcoPackage rootObject) { super(rootObject); + throw new DeveloperException(this, "CostTypeBarChart()", "Do not use this class anymore!"); } ! } |