| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| ProfileStoreFactory |
|
| 1.1666666666666667;1.167 |
| 1 | package ca.uhn.hl7v2.conf.store; | |
| 2 | ||
| 3 | import ca.uhn.hl7v2.util.Home; | |
| 4 | ||
| 5 | /** | |
| 6 | * Provides access to a (configurable) ProfileStore. | |
| 7 | * | |
| 8 | * @author Bryan Tripp | |
| 9 | */ | |
| 10 | public class ProfileStoreFactory { | |
| 11 | ||
| 12 | /** | |
| 13 | * The default profile store directory | |
| 14 | */ | |
| 15 | 5 | public static final String DEFAULT_PROFILE_STORE_DIRECTORY = Home.getHomeDirectory().getAbsolutePath() + "/profiles"; |
| 16 | ||
| 17 | private static ProfileStore instance; | |
| 18 | 5 | private static CodeStoreRegistry codeRegistry = new DefaultCodeStoreRegistry(); |
| 19 | ||
| 20 | /** Non instantiable */ | |
| 21 | private ProfileStoreFactory() { | |
| 22 | 0 | super(); |
| 23 | 0 | } |
| 24 | ||
| 25 | /** | |
| 26 | * Returns a single configurable instance of a ProfileStore. Configurable by calling setStore(). | |
| 27 | * Defaults to FileProfileStore using the current <hapi.home>/profiles as a base directory Note: | |
| 28 | * not a singleton (by design) in that nothing prevents creation of profile stores by other | |
| 29 | * means. | |
| 30 | */ | |
| 31 | public synchronized static ProfileStore getProfileStore() { | |
| 32 | 5585 | if (instance == null) |
| 33 | 5 | instance = new FileProfileStore(DEFAULT_PROFILE_STORE_DIRECTORY); |
| 34 | ||
| 35 | 5585 | return instance; |
| 36 | } | |
| 37 | ||
| 38 | /** | |
| 39 | * Sets the profile store that will be returned in subsequent calls to getProfileStore(). | |
| 40 | * | |
| 41 | * @deprecated use HapiContext to define the ProfileStore to be used | |
| 42 | */ | |
| 43 | public synchronized static void setStore(ProfileStore store) { | |
| 44 | 0 | instance = store; |
| 45 | 0 | } |
| 46 | ||
| 47 | /** | |
| 48 | * Registers a code store for use with all profiles. | |
| 49 | * | |
| 50 | * @deprecated use {@link CodeStoreRegistry#addCodeStore(CodeStore)} | |
| 51 | */ | |
| 52 | public static void addCodeStore(CodeStore store) { | |
| 53 | 5 | codeRegistry.addCodeStore(store); |
| 54 | 5 | } |
| 55 | ||
| 56 | /** | |
| 57 | * Registers a code store for use with certain profiles. The profiles with which the code store | |
| 58 | * are used are determined by profileIdPattern, which is a regular expression that will be | |
| 59 | * matched against profile IDs. For example suppose there are three profiles in the profile | |
| 60 | * store, with the following IDs: | |
| 61 | * <ol> | |
| 62 | * <li>ADT:confsig-UHN-2.4-profile-AL-NE-Immediate</li> | |
| 63 | * <li>ADT:confsig-CIHI-2.4-profile-AL-NE-Immediate</li> | |
| 64 | * <li>ADT:confsig-CIHI-2.3-profile-AL-NE-Immediate</li> | |
| 65 | * </ol> | |
| 66 | * Then to use a code store with only the first profile, the profileIdPattern would be | |
| 67 | * "ADT:confsig-UHN-2.4-profile-AL-NE-Immediate". To use a code store with both of the 2.4 | |
| 68 | * profiles, the pattern would be ".*2\\.4.*". To use a code store with all profiles, the | |
| 69 | * pattern would be '.*". Multiple stores can be registered for use with the same profile. If | |
| 70 | * this happens, the first one that returned true for knowsCodes(codeSystem) will used. Stores | |
| 71 | * are searched in the order they are added here. | |
| 72 | * | |
| 73 | * @deprecated use {@link CodeStoreRegistry#addCodeStore(CodeStore, String)} | |
| 74 | */ | |
| 75 | public static void addCodeStore(CodeStore store, String profileID) { | |
| 76 | 45 | codeRegistry.addCodeStore(store, profileID); |
| 77 | 45 | } |
| 78 | ||
| 79 | /** | |
| 80 | * Returns the first code store that knows the codes in the given code system (as per | |
| 81 | * CodeStore.knowsCodes) and is registered for the given profile. Code stores are checked in the | |
| 82 | * order in which they are added (with addCodeStore()). | |
| 83 | * | |
| 84 | * @return null if none are found | |
| 85 | * | |
| 86 | * @deprecated use {@link CodeStoreRegistry#getCodeStore(String, String)} | |
| 87 | */ | |
| 88 | public static CodeStore getCodeStore(String profileID, String codeSystem) { | |
| 89 | 20 | return codeRegistry.getCodeStore(profileID, codeSystem); |
| 90 | } | |
| 91 | } |