OSDN Git Service

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