1 package jp.sourceforge.stigmata.command;
3 import java.io.PrintWriter;
4 import java.util.Iterator;
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.ResultPrinterSpi;
19 * @author Haruaki Tamada
21 public class ExtractCommand extends AbstractStigmataCommand{
23 public boolean isAvailableArguments(String[] args){
24 return args.length > 0;
28 public String getCommandString(){
33 public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){
35 context.setComparisonMethod(ComparisonMethod.ROUND_ROBIN_SAME_PAIR);
36 BirthmarkEngine engine = new BirthmarkEngine(context.getEnvironment());
38 engine.addBirthmarkEngineListener(new BirthmarkEngineAdapter(){
40 public void operationDone(BirthmarkEngineEvent e){
41 WarningMessages warnings = e.getMessage();
42 for(Iterator<Exception> i = warnings.exceptions(); i.hasNext(); ){
43 i.next().printStackTrace();
47 ExtractionResultSet ers = engine.extract(args, context);
49 ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat());
50 ExtractionResultSetPrinter formatter = spi.getExtractionResultSetPrinter();
51 formatter.printResult(new PrintWriter(System.out), ers);