日期:2014-05-20  浏览次数:20754 次

刚写了一个类,大家帮我看看有没有什么“bad smell”
这个类用JFreeChart 生成一些定制的图表。
大家帮我看看可读性,代码风格,可维护性或者其他方面有没有什么明显的问题,谢谢啦。

package de.vogella.xml.stax.read;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Properties;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.RingPlot;
import org.jfree.data.general.DefaultPieDataset;

import pizza.model.pizza;

public class PizzaGen {
public static String pizzaFilepath;
public static String pizzaDataFilename;
public static String tempFilepath;
public static int greenScoreValue;
public static int yellowScoreValue;
public static int orangeScoreValue;
public static Color greenColorCode;
public static Color yellowColorCode;
public static Color orangeColorCode;
public static Color redColorCode;
public static int scoreFontsize;

public static final String pizza_CONFIG_FILENAME = "H:/devtemp/workspace-juno-jee32-2012t1/SandBox3/pizza-config.properties";

public static void main(String[] args) {
PizzaGen sg=new PizzaGen();
sg.loadConfig();
sg.generateAllPizzas(pizzaDataFilename);
}

private void generateAllPizzas(String pizzaDataFilename) {
PizzaDataLoader read = new PizzaDataLoader();
List<Pizza> pizzas = read.readPizzas(pizzaDataFilename);
for (Pizza pizza : pizzas) {
generateInnerRing(pizza);
generateOuterRing(pizza);
}
}

private void generateInnerRing(Pizza pizza) {
BufferedImage bi = drawInnerRing(pizza);
try {
ImageIO.write(bi, "PNG",
new File(tempFilepath + "inner-" + pizza.getFilename()));
} catch (IOException ie) {
ie.printStackTrace();
}
}

private void generateOuterRing(Pizza pizza) {
BufferedImage bi = drawOuterRing(pizza);
try {
ImageIO.write(bi, "PNG",
new File(pizzaFilepath + pizza.getFilename()));
} catch (IOException e) {
e.printStackTrace();
}
}

private BufferedImage drawOuterRing(Pizza pizza) {
DefaultPieDataset piedata = initDataSet(pizza);
JFreeChart chart = ChartFactory.createRingChart("", piedata,// data
false,// include legend
false, false);

ImageIcon imageicon = new ImageIcon(tempFilepath + "inner-"
+ pizza.getFilename());
chart.setBackgroundPaint(Color.white);
chart.setBackgroundImage(imageicon.getImage());
chart.setBackgroundImageAlpha(1);

RingPlot plot = (RingPlot) chart.getPlot();
initPlot(plot);
BufferedImage bi = chart.createBufferedImage(240, 240);

// crop JFreeChart image