001 package jp.osdl.jbento2.report;
002
003 import java.io.File;
004 import java.io.InputStream;
005 import java.util.Iterator;
006 import java.util.Properties;
007
008 import jp.osdl.jbento2.PathUtils;
009 import jp.osdl.jbento2.RegexNameFileFilter;
010
011 import org.apache.commons.io.FileUtils;
012 import org.apache.commons.io.IOUtils;
013 import org.apache.commons.io.filefilter.FileFilterUtils;
014 import org.apache.velocity.app.Velocity;
015
016 public class Report {
017
018 public static void main(String[] args) throws Exception {
019 Report report = new Report();
020 report.generate();
021 }
022
023 private File sourceDir = null;
024
025 private File destDir = null;
026
027 private Properties props = null;
028
029 public void generate() throws Exception {
030 initProperties();
031 initVelocity();
032
033 if (destDir == null) {
034 destDir = sourceDir;
035 }
036
037 if (!destDir.exists()) {
038 destDir.mkdirs();
039 }
040
041 StaticFileBuilder sfb = new StaticFileBuilder(destDir);
042 sfb.execute();
043
044 Iterator ite = FileUtils.iterateFiles(sourceDir,
045 new RegexNameFileFilter("throughput\\.csv"), FileFilterUtils
046 .trueFileFilter());
047 while (ite.hasNext()) {
048 File dataDir = ((File) ite.next()).getParentFile();
049 if (dataDir.isDirectory()) {
050 File dataDestDir = makeRelativeDirToTargetDir(sourceDir,
051 dataDir, destDir);
052 SummaryBuilder builder = new SummaryBuilder(dataDir,
053 dataDestDir, destDir);
054 builder.execute();
055 }
056 }
057
058 ite = FileUtils.iterateFiles(sourceDir, new RegexNameFileFilter(
059 "summary\\.txt"), FileFilterUtils.trueFileFilter());
060 while (ite.hasNext()) {
061 File summaryText = (File) ite.next();
062 File dataDestDir = makeRelativeDirToTargetDir(sourceDir,
063 summaryText.getParentFile(), destDir);
064 SampleDetailBuilder builder = new SampleDetailBuilder(summaryText
065 .getParentFile(), dataDestDir, destDir);
066 builder.execute();
067 }
068
069 ite = FileUtils.iterateFiles(sourceDir, new RegexNameFileFilter(
070 ".*\\..*\\.png"), FileFilterUtils.trueFileFilter());
071 while (ite.hasNext()) {
072 File cpuAllImages = (File) ite.next();
073 File dataDestDir = makeRelativeDirToTargetDir(sourceDir, cpuAllImages
074 .getParentFile(), destDir);
075 MachineDetailBuilder builder = new MachineDetailBuilder(cpuAllImages
076 .getParentFile(), dataDestDir, destDir);
077 builder.execute();
078 }
079
080 }
081
082 public File makeRelativeDirToTargetDir(File path1, File path2, File target) {
083 String relativePath = PathUtils.calculateRelativePath(path1, path2);
084 File madeDir = new File(target, relativePath);
085 madeDir.mkdirs();
086 return madeDir;
087 }
088
089 public void setSourceDir(String dir) {
090 this.sourceDir = new File(dir);
091 }
092
093 public String getSourceDir() {
094 return sourceDir.getAbsolutePath();
095 }
096
097 private void initProperties() throws Exception {
098 Properties p = new Properties();
099 InputStream in = null;
100 try {
101 in = getClass().getResourceAsStream("jbento-report.properties");
102 p.load(in);
103 } catch (Exception ex) {
104 throw ex;
105 } finally {
106 IOUtils.closeQuietly(in);
107 }
108 this.props = p;
109 }
110
111 private void initVelocity() throws Exception {
112 Properties p = new Properties();
113 InputStream in = null;
114 try {
115 in = getClass().getResourceAsStream("velocity.properties");
116 p.load(in);
117 } catch (Exception ex) {
118 throw ex;
119 } finally {
120 IOUtils.closeQuietly(in);
121 }
122 Velocity.init(p);
123 }
124
125 public String getDestDir() {
126 return destDir.getAbsolutePath();
127 }
128
129 public void setDestDir(String destDir) {
130 this.destDir = new File(destDir);
131 }
132
133 }