OSDN Git Service

Spiという名前をすべてServiceに変更した.
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / command / ExtractCommand.java
1 package jp.sourceforge.stigmata.command;
2
3 import java.io.PrintWriter;
4 import java.util.Iterator;
5
6 import jp.sourceforge.stigmata.BirthmarkContext;
7 import jp.sourceforge.stigmata.BirthmarkEngine;
8 import jp.sourceforge.stigmata.ComparisonMethod;
9 import jp.sourceforge.stigmata.ExtractionResultSet;
10 import jp.sourceforge.stigmata.Stigmata;
11 import jp.sourceforge.stigmata.event.BirthmarkEngineAdapter;
12 import jp.sourceforge.stigmata.event.BirthmarkEngineEvent;
13 import jp.sourceforge.stigmata.event.WarningMessages;
14 import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
15 import jp.sourceforge.stigmata.spi.ResultPrinterService;
16
17 /**
18  * 
19  * @author Haruaki Tamada
20  */
21 public class ExtractCommand extends AbstractStigmataCommand{
22     @Override
23     public boolean isAvailableArguments(String[] args){
24         return args.length > 0;
25     }
26
27     @Override
28     public String getCommandString(){
29         return "extract";
30     }
31
32     @Override
33     public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){
34         try{
35             context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_SAME_PAIR);
36             BirthmarkEngine engine = new BirthmarkEngine(context.getEnvironment());
37
38             engine.addBirthmarkEngineListener(new BirthmarkEngineAdapter(){
39                 @Override
40                 public void operationDone(BirthmarkEngineEvent e){
41                     WarningMessages warnings = e.getMessage();
42                     for(Iterator<Exception> i = warnings.exceptions(); i.hasNext(); ){
43                         i.next().printStackTrace();
44                     }
45                 }
46             });
47             ExtractionResultSet ers = engine.extract(args, context);
48
49             ResultPrinterService spi = stigmata.getPrinterManager().getService(context.getFormat());
50             ExtractionResultSetPrinter formatter = spi.getExtractionResultSetPrinter();
51             formatter.printResult(new PrintWriter(System.out), ers);
52         }catch(Exception ex){
53             ex.printStackTrace();
54         }
55     }
56 }