001: package com.mockrunner.gen.jar;
002:
003: import java.io.File;
004: import java.io.FileWriter;
005: import java.io.IOException;
006: import java.io.InputStream;
007: import java.io.InputStreamReader;
008: import java.io.PrintWriter;
009: import java.text.DateFormat;
010: import java.text.SimpleDateFormat;
011: import java.util.Date;
012: import java.util.Iterator;
013: import java.util.List;
014: import java.util.Map;
015: import java.util.Set;
016:
017: import com.kirkk.analyzer.Analyzer;
018: import com.kirkk.analyzer.Configuration;
019: import com.kirkk.analyzer.framework.Jar;
020: import com.kirkk.analyzer.textui.Summary;
021: import com.mockrunner.util.common.StreamUtil;
022:
023: public class MockrunnerTextSummary implements Summary {
024: private final static String TEMPLATE_FILE = "dependtemplate.txt";
025:
026: private List mockrunnerJars;
027: private List standardJars;
028:
029: public MockrunnerTextSummary() {
030: mockrunnerJars = MockrunnerJars.getMockrunnerJars();
031: standardJars = MockrunnerJars.getStandardInterfaceJars();
032: }
033:
034: public void createSummary(File srcDir, File destFile)
035: throws Exception {
036: createSummary(srcDir, destFile, null, null);
037: }
038:
039: public void createSummary(File srcDir, File destFile,
040: String packageFilter, String jarFilter) throws Exception {
041: Analyzer analyzer = new Analyzer();
042: if (null != packageFilter && null != jarFilter) {
043: Configuration.initialize(packageFilter, jarFilter);
044: }
045: Jar[] jar = analyzer.analyze(srcDir);
046: JarFileExtractor extractor = new JarFileExtractor(
047: mockrunnerJars, standardJars);
048: Map dependencyMap = extractor.createDependencies(jar);
049: try {
050: output(dependencyMap, destFile);
051: } catch (Exception exc) {
052: exc.printStackTrace();
053: }
054: }
055:
056: private void output(Map dependencyMap, File destFile)
057: throws Exception {
058: try {
059: FileWriter fileWriter = new FileWriter(destFile);
060: PrintWriter writer = new PrintWriter(fileWriter);
061: output(dependencyMap, writer);
062: writer.flush();
063: writer.close();
064: } catch (IOException exc) {
065: throw new RuntimeException(exc);
066: }
067: }
068:
069: private void output(Map dependencyMap, PrintWriter writer)
070: throws Exception {
071: dumpTemplate(writer);
072: DateFormat timestampFormat = new SimpleDateFormat(
073: "MM/dd/yyyy hh:mm aa");
074: String timestamp = timestampFormat.format(new Date(System
075: .currentTimeMillis()));
076: writer.println("Created: " + timestamp);
077: writer.println();
078: Iterator jars = dependencyMap.keySet().iterator();
079: while (jars.hasNext()) {
080: String jar = (String) jars.next();
081: writer.println("Jar file name: " + jar);
082: Set dependendJars = (Set) dependencyMap.get(jar);
083: if (null == dependendJars || dependendJars.isEmpty()) {
084: writer.println();
085: writer.println("No dependencies");
086: } else {
087: outputDependendJars(dependendJars, writer);
088: }
089: if (jars.hasNext()) {
090: writer.println();
091: writer.println();
092: }
093: }
094: }
095:
096: private void outputDependendJars(Set dependendJars,
097: PrintWriter writer) {
098: writer.println();
099: writer.println("Depends on: ");
100: writer.println();
101: Iterator jarDependencies = dependendJars.iterator();
102: while (jarDependencies.hasNext()) {
103: String jar = (String) jarDependencies.next();
104: writer.println(jar);
105: }
106: }
107:
108: private void dumpTemplate(PrintWriter writer) throws Exception {
109: InputStream templateStream = MockrunnerTextSummary.class
110: .getClassLoader().getResourceAsStream(
111: "/" + TEMPLATE_FILE);
112: String templateText = StreamUtil
113: .getReaderAsString(new InputStreamReader(
114: templateStream, "ISO-8859-1"));
115: writer.println(templateText);
116: writer.println();
117: writer.flush();
118: }
119: }
|