1 package jp.sourceforge.stigmata.printer;
3 import java.util.HashMap;
4 import java.util.Iterator;
6 import java.util.ServiceLoader;
8 import jp.sourceforge.stigmata.BirthmarkEnvironment;
9 import jp.sourceforge.stigmata.printer.csv.CsvResultPrinterService;
10 import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
14 * @author Haruaki TAMADA
16 public class PrinterManager{
17 private static final PrinterManager manager = new PrinterManager();
18 private ServiceLoader<ResultPrinterSpi> serviceLoader;
20 private Map<String, ResultPrinterSpi> formats = new HashMap<String, ResultPrinterSpi>();
22 private PrinterManager(){
23 serviceLoader = ServiceLoader.load(ResultPrinterSpi.class);
27 public void refresh(){
28 serviceLoader.reload();
32 public static void refresh(BirthmarkEnvironment env){
33 PrinterManager instance = getInstance();
34 instance.formats.clear();
35 for(Iterator<ResultPrinterSpi> i = env.lookupProviders(ResultPrinterSpi.class); i.hasNext(); ){
36 instance.addService(i.next());
40 public static ResultPrinterSpi getDefaultFormatService(){
41 return new CsvResultPrinterService();
44 public static PrinterManager getInstance(){
48 public ResultPrinterSpi getService(String format){
49 return formats.get(format);
54 for(Iterator<ResultPrinterSpi> i = serviceLoader.iterator(); i.hasNext(); ){
55 ResultPrinterSpi spi = i.next();
60 private void addService(ResultPrinterSpi service){
61 formats.put(service.getFormat(), service);