package jfreechart_demo; import org.jfree.chart.*; import java.io.*; import java.util.*; import java.lang.reflect.*; public class CUIProgram { final static boolean CLASS_FROM_JAVA_SOURCE = true; static String namespace = "jfreechart_demo"; public static void main(String[] args) throws Exception { ArrayList classNames = new ArrayList(); for (int i = 0; i < args.length; i++) { classNames.add(args[i]); } if (classNames.size() == 0) classNames = null; Class[] allClasses; if (CLASS_FROM_JAVA_SOURCE) { ArrayList classes = new ArrayList(); File dir = new File(namespace); File[] files = dir.listFiles(new IsJavaFilter()); for (int i = 0; i < files.length; i++) { File file = files[i]; String className = file.getName(); className = className.substring(0, className.length() - ".java".length()); String fullClassName = namespace + "." + className; Class cls = Class.forName(fullClassName); int modifiers = cls.getModifiers(); if (!cls.isInterface() && !Modifier.isAbstract(modifiers) && ChartCreator.class.isAssignableFrom(cls)) { classes.add(cls); } } allClasses = new Class[classes.size()]; classes.toArray(allClasses); } else { allClasses = new Class[] { AreaChartDemo1.class, AreaChartDemo2.class, BarChart3DDemo1.class, BarChart3DDemo2.class, BarChartDemo1.class, BarChartDemo2.class, GanttChartDemo1.class, LineChart3DDemo1.class, LineChartDemo1.class, LineChartDemo2.class, PieChart3DDemo1.class, PieChart3DDemo2.class, PieChartDemo1.class, RingChartDemo1.class, ScatterChartDemo1.class, ScatterChartDemo2.class, SpiderWebChartDemo1.class, StepChartDemo1.class, TimeSeriesChartDemo1.class, }; } for (int i = 0; i < allClasses.length; i++) { Class cls = allClasses[i]; String className = cls.getName(); className = className.substring(className.lastIndexOf('.') + 1); if (classNames != null && !classNames.contains(className)) continue; System.out.print("Creating " + cls.getName() + " chart... "); try { ChartCreator cc = (ChartCreator)cls.getConstructor(new Class[] { }).newInstance(new Object[] { }); ; JFreeChart chart = cc.createChart(); String filename = cls.getName() + ".png"; ChartUtilities.saveChartAsPNG(new File(filename), chart, 640, 480); System.out.println("done."); } catch (Exception e) { System.out.println(); System.out.println(e.getMessage()); } } } private static class IsJavaFilter implements FilenameFilter { public IsJavaFilter() { } public boolean accept(File dir, String name) { return name.endsWith(".java"); } } }