1 package jp.sourceforge.stigmata.printer;
7 import java.util.HashMap;
8 import java.util.Iterator;
10 import java.util.ServiceLoader;
12 import jp.sourceforge.stigmata.BirthmarkEnvironment;
13 import jp.sourceforge.stigmata.printer.csv.CsvResultPrinterService;
14 import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
18 * @author Haruaki TAMADA
20 public class PrinterManager{
21 private static final PrinterManager manager = new PrinterManager();
22 private ServiceLoader<ResultPrinterSpi> serviceLoader;
24 private Map<String, ResultPrinterSpi> formats = new HashMap<String, ResultPrinterSpi>();
26 private PrinterManager(){
27 serviceLoader = ServiceLoader.load(ResultPrinterSpi.class);
31 public void refresh(){
32 serviceLoader.reload();
36 public static void refresh(BirthmarkEnvironment env){
37 PrinterManager instance = getInstance();
38 instance.formats.clear();
39 for(Iterator<ResultPrinterSpi> i = env.lookupProviders(ResultPrinterSpi.class); i.hasNext(); ){
40 instance.addService(i.next());
44 public static ResultPrinterSpi getDefaultFormatService(){
45 return new CsvResultPrinterService();
48 public static PrinterManager getInstance(){
52 public ResultPrinterSpi getService(String format){
53 return formats.get(format);
58 for(Iterator<ResultPrinterSpi> i = serviceLoader.iterator(); i.hasNext(); ){
59 ResultPrinterSpi spi = i.next();
64 private void addService(ResultPrinterSpi service){
65 formats.put(service.getFormat(), service);