Clover Coverage Report - Liquibase Core 2.0.2
Coverage timestamp: Wed Aug 3 2011 19:29:16 EDT
../../img/srcFileCovDistChart10.png 0% of files have more coverage
21   76   11   2.62
4   60   0.52   8
8     1.38  
1    
 
  ChangeLogParserFactory       Line # 13 21 0% 11 1 97% 0.969697
 
  (19)
 
1    package liquibase.parser;
2   
3    import java.util.ArrayList;
4    import java.util.Collections;
5    import java.util.Comparator;
6    import java.util.List;
7   
8    import liquibase.exception.LiquibaseException;
9    import liquibase.exception.UnexpectedLiquibaseException;
10    import liquibase.resource.ResourceAccessor;
11    import liquibase.servicelocator.ServiceLocator;
12   
 
13    public class ChangeLogParserFactory {
14   
15    private static ChangeLogParserFactory instance;
16   
17    private List<ChangeLogParser> parsers;
18    private Comparator<ChangeLogParser> changelogParserComparator;
19   
 
20  17 toggle public static void reset() {
21  17 instance = new ChangeLogParserFactory();
22    }
23   
 
24  43 toggle public static ChangeLogParserFactory getInstance() {
25  43 if (instance == null) {
26  1 instance = new ChangeLogParserFactory();
27    }
28  43 return instance;
29    }
30   
 
31  18 toggle private ChangeLogParserFactory() {
32  18 Class<? extends ChangeLogParser>[] classes;
33  18 changelogParserComparator = new Comparator<ChangeLogParser>() {
 
34  66 toggle @Override
35    public int compare(ChangeLogParser o1, ChangeLogParser o2) {
36  66 return Integer.valueOf(o2.getPriority()).compareTo(o1.getPriority());
37    }
38    };
39   
40  18 parsers = new ArrayList<ChangeLogParser>();
41  18 try {
42  18 classes = ServiceLocator.getInstance().findClasses(ChangeLogParser.class);
43   
44  18 for (Class<? extends ChangeLogParser> clazz : classes) {
45  54 register((ChangeLogParser) clazz.getConstructor().newInstance());
46    }
47    } catch (Exception e) {
48  0 throw new UnexpectedLiquibaseException(e);
49    }
50   
51    }
52   
 
53  20 toggle public List<ChangeLogParser> getParsers() {
54  20 return parsers;
55    }
56   
 
57  13 toggle public ChangeLogParser getParser(String fileNameOrExtension, ResourceAccessor resourceAccessor)
58    throws LiquibaseException {
59  13 for (ChangeLogParser parser : parsers) {
60  22 if (parser.supports(fileNameOrExtension, resourceAccessor)) {
61  12 return parser;
62    }
63    }
64   
65  1 throw new LiquibaseException("Cannot find parser that supports " + fileNameOrExtension);
66    }
67   
 
68  68 toggle public void register(ChangeLogParser changeLogParser) {
69  68 parsers.add(changeLogParser);
70  68 Collections.sort(parsers, changelogParserComparator);
71    }
72   
 
73  3 toggle public void unregister(ChangeLogParser changeLogParser) {
74  3 parsers.remove(changeLogParser);
75    }
76    }