1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.limmen.crs.storage.api;
17
18 import java.util.HashMap;
19 import java.util.Iterator;
20 import java.util.Map;
21 import java.util.ServiceLoader;
22
23 import org.limmen.crs.storage.api.exception.UnknownStorageTypeException;
24
25
26 public class ConfigurationStorageFactory {
27
28 private static ConfigurationStorageFactory current = new ConfigurationStorageFactory();
29
30 public static ConfigurationStorageFactory getInstance() {
31
32 return current;
33 }
34
35 private final Map<String, ConfigurationStorage> configurationStorageMap = new HashMap<String, ConfigurationStorage>();
36
37 private ConfigurationStorageFactory() {
38
39 super();
40
41 ServiceLoader<ConfigurationStorage> services =
42 ServiceLoader.load(ConfigurationStorage.class);
43
44 Iterator<ConfigurationStorage> servicesIterator = services.iterator();
45
46 while (servicesIterator.hasNext()) {
47
48 ConfigurationStorage storage = servicesIterator.next();
49
50 configurationStorageMap.put(storage.getStorageType(), storage);
51 }
52 }
53
54 public ConfigurationStorage getStorage(String aType) throws UnknownStorageTypeException {
55
56 if (!configurationStorageMap.containsKey(aType)) {
57
58 throw new UnknownStorageTypeException();
59 }
60
61 return configurationStorageMap.get(aType);
62 }
63 }