OSDN Git Service

オーバーライドしているメソッド全てに @Override アノテーションを追加した.
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / command / CompareCommand.java
1 package jp.sourceforge.stigmata.command;
2
3 /*
4  * $Id$
5  */
6
7 import java.io.PrintWriter;
8 import java.util.Iterator;
9
10 import jp.sourceforge.stigmata.BirthmarkContext;
11 import jp.sourceforge.stigmata.BirthmarkEngine;
12 import jp.sourceforge.stigmata.ComparisonMethod;
13 import jp.sourceforge.stigmata.ComparisonResultSet;
14 import jp.sourceforge.stigmata.ExtractionResultSet;
15 import jp.sourceforge.stigmata.Stigmata;
16 import jp.sourceforge.stigmata.event.BirthmarkEngineAdapter;
17 import jp.sourceforge.stigmata.event.BirthmarkEngineEvent;
18 import jp.sourceforge.stigmata.event.WarningMessages;
19 import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter;
20 import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
21
22 /**
23  * 
24  * @author Haruaki Tamada
25  * @version $Revision$
26  */
27 public class CompareCommand extends AbstractStigmataCommand{
28     @Override
29     public boolean isAvailableArguments(String[] args){
30         return args.length > 0;
31     }
32
33     @Override
34     public String getCommandString(){
35         return "compare";
36     }
37
38     @Override
39     public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){
40         try{
41             BirthmarkEngine engine = new BirthmarkEngine(context.getEnvironment());
42             context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_SAME_PAIR);
43             engine.addBirthmarkEngineListener(new BirthmarkEngineAdapter(){
44                 @Override
45                 public void operationDone(BirthmarkEngineEvent e){
46                     WarningMessages warnings = e.getMessage();
47                     for(Iterator<Exception> i = warnings.exceptions(); i.hasNext(); ){
48                         i.next().printStackTrace();
49                     }
50                 }
51             });
52
53             ExtractionResultSet rs = engine.extract(args, context);
54             ComparisonResultSet resultset = engine.compare(rs);
55             if(context.hasFilter()){
56                 resultset = engine.filter(resultset);
57             }
58
59             ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat());
60             ComparisonResultSetPrinter formatter = spi.getComparisonResultSetPrinter();
61             formatter.printResult(new PrintWriter(System.out), resultset);
62         }catch(Exception e){
63             e.printStackTrace();
64         }
65     }
66 }