OSDN Git Service

update command line interface, and introduce command pattern in Main class
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / command / ListBirthmarksCommand.java
1 package jp.sourceforge.stigmata.command;
2
3 /*
4  * $Id$
5  */
6
7 import java.io.FileWriter;
8 import java.io.IOException;
9 import java.io.PrintWriter;
10
11 import jp.sourceforge.stigmata.BirthmarkContext;
12 import jp.sourceforge.stigmata.Stigmata;
13 import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
14 import jp.sourceforge.stigmata.spi.BirthmarkSpi;
15 import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
16
17 /**
18  * 
19  * @author Haruaki Tamada
20  * @version $Revision$
21  */
22 public class ListBirthmarksCommand extends AbstractStigmataCommand{
23     @Override
24     public String getCommandString(){
25         return "list-birthmarks";
26     }
27
28     public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){
29         BirthmarkSpi[] spis = context.getEnvironment().findServices();
30         ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat());
31         BirthmarkServicePrinter formatter = spi.getBirthmarkServicePrinter();
32
33         try{
34             PrintWriter out;
35             if(args.length == 0){
36                 out = new PrintWriter(System.out);
37             }
38             else{
39                 String target = validateTarget(args[0], context.getFormat());
40                 out = new PrintWriter(new FileWriter(target));
41             }
42             formatter.printResult(out, spis);
43         }catch(IOException e){
44             e.printStackTrace();
45         }
46     }
47
48     private String validateTarget(String fileName, String format){
49         if(!fileName.endsWith("." + format)){
50             fileName = fileName + "." + format;
51         }
52         return fileName;
53     }
54 }