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 |
|
|
|
|
| 97% |
Uncovered Elements: 1 (33) |
Complexity: 11 |
Complexity Density: 0.52 |
|
13 |
|
public class ChangeLogParserFactory { |
14 |
|
|
15 |
|
private static ChangeLogParserFactory instance; |
16 |
|
|
17 |
|
private List<ChangeLogParser> parsers; |
18 |
|
private Comparator<ChangeLogParser> changelogParserComparator; |
19 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
20 |
17
|
public static void reset() {... |
21 |
17
|
instance = new ChangeLogParserFactory(); |
22 |
|
} |
23 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (5) |
Complexity: 2 |
Complexity Density: 0.67 |
|
24 |
43
|
public static ChangeLogParserFactory getInstance() {... |
25 |
43
|
if (instance == null) { |
26 |
1
|
instance = new ChangeLogParserFactory(); |
27 |
|
} |
28 |
43
|
return instance; |
29 |
|
} |
30 |
|
|
|
|
| 87.5% |
Uncovered Elements: 1 (8) |
Complexity: 2 |
Complexity Density: 0.25 |
|
31 |
18
|
private ChangeLogParserFactory() {... |
32 |
18
|
Class<? extends ChangeLogParser>[] classes; |
33 |
18
|
changelogParserComparator = new Comparator<ChangeLogParser>() { |
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
34 |
66
|
@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 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
53 |
20
|
public List<ChangeLogParser> getParsers() {... |
54 |
20
|
return parsers; |
55 |
|
} |
56 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (6) |
Complexity: 2 |
Complexity Density: 0.5 |
|
57 |
13
|
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 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0.5 |
|
68 |
68
|
public void register(ChangeLogParser changeLogParser) {... |
69 |
68
|
parsers.add(changeLogParser); |
70 |
68
|
Collections.sort(parsers, changelogParserComparator); |
71 |
|
} |
72 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
73 |
3
|
public void unregister(ChangeLogParser changeLogParser) {... |
74 |
3
|
parsers.remove(changeLogParser); |
75 |
|
} |
76 |
|
} |