OSDN Git Service

eda6ade9c6c4306c40070afcc14ef11bfd9badf0
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / printer / csv / ComparisonResultSetCsvPrinter.java
1 package jp.sourceforge.stigmata.printer.csv;
2
3 /*
4  * $Id$
5  */
6
7 import java.io.PrintWriter;
8 import java.util.ArrayList;
9 import java.util.HashMap;
10 import java.util.LinkedHashMap;
11 import java.util.List;
12 import java.util.Map;
13
14 import jp.sourceforge.stigmata.ComparisonPair;
15 import jp.sourceforge.stigmata.ComparisonResultSet;
16 import jp.sourceforge.stigmata.printer.AbstractComparisonResultSetPrinter;
17 import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet;
18
19 /**
20  * 
21  * 
22  *
23  * @author Haruaki TAMADA
24  * @version $Revision$ 
25  */
26 public class ComparisonResultSetCsvPrinter extends AbstractComparisonResultSetPrinter{
27     public ComparisonResultSetCsvPrinter(){
28     }
29
30     @Override
31     public void printResult(PrintWriter out, ComparisonResultSet resultset){
32         if(resultset instanceof CertainPairComparisonResultSet){
33             printResultImpl(out, (CertainPairComparisonResultSet)resultset);
34         }
35         else{
36             printResultImpl(out, resultset);
37         }
38     }
39
40     private void printResultImpl(PrintWriter out, CertainPairComparisonResultSet resultset){
41         for(ComparisonPair pair: resultset){
42             out.print(pair.getTarget1().getName());
43             out.print(",");
44             out.print(pair.getTarget1().getName());
45             out.print(",");
46             out.println(pair.calculateSimilarity());
47         }
48     }
49
50     private void printResultImpl(PrintWriter out, ComparisonResultSet resultset){
51         Map<String, Map<String, Double>> map = new LinkedHashMap<String, Map<String, Double>>();
52         List<String> names = new ArrayList<String>();
53
54         for(ComparisonPair pair: resultset){
55             Map<String, Double> val = map.get(pair.getTarget1().getName());
56             if(val == null){
57                 val = new HashMap<String, Double>();
58             }
59             val.put(pair.getTarget2().getName(), new Double(pair.calculateSimilarity()));
60             if(!names.contains(pair.getTarget2().getName())){
61                 names.add(pair.getTarget2().getName());
62             }
63             map.put(pair.getTarget1().getName(), val);
64         }
65
66         for(String name: names){
67             out.print(",");
68             out.print(name);
69         }
70         out.println();
71         for(Map.Entry<String, Map<String, Double>> entry: map.entrySet()){
72             out.print(entry.getKey());
73             Map<String, Double> element = entry.getValue();
74             for(String name: names){
75                 out.print(",");
76                 Double v = element.get(name);
77                 if(v != null){
78                     out.print(v.doubleValue());
79                 }
80             }
81             out.println();
82         }
83         out.flush();
84     }
85 }