001 package jp.osdl.jbento2.analyzer; 002 003 import java.io.BufferedWriter; 004 import java.io.FileWriter; 005 import java.io.IOException; 006 import java.util.ArrayList; 007 import java.util.Comparator; 008 import java.util.HashMap; 009 import java.util.Iterator; 010 import java.util.List; 011 import java.util.Map; 012 import java.util.Set; 013 import java.util.SortedSet; 014 import java.util.TreeSet; 015 016 public class MultiResultCollector { 017 018 private String srcDir = null; 019 private String fileName = null; 020 private String dest = "result"; 021 private String delimiter = ","; 022 private String target = null; 023 private SarAverageHandler[] handlers = null; 024 private Map map = new HashMap(); 025 private String destName = null; 026 private TextTable tt = null; 027 028 //?½Ç‚�?½?½Ð”�l?½?½?½Å?ёւ� 029 public void analyzeNumeric() throws IOException { 030 SortedSet rowSeries = createLabelNumeric(0); 031 SortedSet columnXLabel = createLabelNumeric(1); 032 033 firstRow(rowSeries,target); 034 addRow(rowSeries,columnXLabel); 035 end(); 036 } 037 038 //xLabel?½?½?½?½?½?½?½l?½?½?½Å?ёւ� 039 public void analyze() throws IOException { 040 SortedSet rowSeries = createLabelNutural(0); 041 SortedSet columnXLabel = createLabelNumeric(1); 042 043 firstRow(rowSeries,target); 044 addRow(rowSeries,columnXLabel); 045 end(); 046 } 047 048 public SortedSet createLabelNumeric(int number) { 049 SortedSet firstData = new TreeSet(new NumericComparator()); 050 Set set = map.keySet(); 051 Iterator ite = set.iterator(); 052 List list; 053 054 while (ite.hasNext()) { 055 list = (ArrayList) ite.next(); 056 firstData.add((String) list.get(number)); 057 } 058 059 return firstData; 060 } 061 062 public SortedSet createLabelNutural(int number) { 063 SortedSet firstData = new TreeSet(); 064 Set set = map.keySet(); 065 Iterator ite = set.iterator(); 066 List list; 067 068 while (ite.hasNext()) { 069 list = (ArrayList) ite.next(); 070 firstData.add((String) list.get(number)); 071 } 072 073 return firstData; 074 } 075 076 class NumericComparator implements Comparator { 077 public int compare(Object o1, Object o2) { 078 String s1 = (String) o1; 079 String s2 = (String) o2; 080 try { 081 return Double.valueOf(s1).compareTo(Double.valueOf(s2)); 082 } catch (NumberFormatException e) { 083 return s1.compareTo(s2); 084 } 085 } 086 } 087 088 public void firstRow(SortedSet rowSeries,String target){ 089 090 List data = new ArrayList(); 091 tt = new TextTable(rowSeries.size() + 1,TextTable.ALIGN_RIGHT,","); 092 093 data.add(0,target); 094 Iterator ite_row = rowSeries.iterator(); 095 while (ite_row.hasNext()) { 096 String series = (String)ite_row.next(); 097 data.add(series); 098 } 099 tt.addRow((String[])data.toArray(new String[rowSeries.size()+1])); 100 } 101 102 public void addRow(SortedSet rowSeries,SortedSet columnXLabel){ 103 104 List list = new ArrayList(); 105 List data = new ArrayList(); 106 107 Iterator ite_column = columnXLabel.iterator(); 108 while (ite_column.hasNext()) { 109 110 String xLabel = (String)ite_column.next(); 111 data.add(xLabel); 112 Iterator ite_row = rowSeries.iterator(); 113 114 while (ite_row.hasNext()) { 115 116 String series = (String)ite_row.next(); 117 list.add(0,series); 118 list.add(1,xLabel); 119 120 if (!map.containsKey(list)) { 121 data.add(""); 122 } else { 123 data.add((String)map.get(list)); 124 } 125 126 list.clear(); 127 } 128 tt.addRow((String[])data.toArray(new String[rowSeries.size()+1])); 129 data.clear(); 130 } 131 132 } 133 134 public void end() { 135 BufferedWriter writer = null; 136 try { 137 writer = new BufferedWriter(new FileWriter(destName)); 138 writer.write(tt.toString()); 139 writer.flush(); 140 } catch (IOException e){ 141 e.printStackTrace(System.err); 142 } finally { 143 try { 144 writer.close(); 145 } catch (IOException e) { 146 //nothing to do 147 } 148 } 149 } 150 151 public String getDelimiter() { 152 return delimiter; 153 } 154 155 public void setDelimiter(String delimiter) { 156 this.delimiter = delimiter; 157 } 158 159 public String getDestDir() { 160 return dest; 161 } 162 163 public void setDestDir(String destDir) { 164 this.dest = destDir; 165 } 166 167 public String getFileName() { 168 return fileName; 169 } 170 171 public void setFileName(String fileName) { 172 this.fileName = fileName; 173 } 174 175 public String getSrcDir() { 176 return srcDir; 177 } 178 179 public void setSrcDir(String srcDir) { 180 this.srcDir = srcDir; 181 } 182 183 public SarAverageHandler[] getHandlers() { 184 return handlers; 185 } 186 187 public void setHandlers(SarAverageHandler[] handlers) { 188 this.handlers = handlers; 189 } 190 191 public String getDestName() { 192 return destName; 193 } 194 195 public void setDestName(String destName) { 196 this.destName = destName; 197 } 198 199 public Map getMap() { 200 return map; 201 } 202 203 public void setMap(Map map) { 204 this.map = map; 205 } 206 207 public String getTarget() { 208 return target; 209 } 210 211 public void setTarget(String target) { 212 this.target = target; 213 } 214 215 }