1 /*
2 * Copyright 2008-2009 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.openehealth.ipf.commons.map;
17
18 import java.util.Collection;
19 import java.util.Set;
20
21 /**
22 * Interface for mapping a set of keysets into corresponding values.
23 * <p>
24 * The back end mapping implementation is not defined by this interface. Examples
25 * could be a simple {@link java.util.Map} or a remote terminology service, for
26 * which proper implementations of this interface must be provided.
27 * <p>
28 *
29 * @author Christian Ohr
30 *
31 */
32 public interface MappingService {
33
34 /**
35 * @param mappingKey mapping name
36 * @param key left side of the mapping
37 * @return the value mapped by a registered mapping. The implementation of the
38 * mapping implements the behavior if the key does not exist.
39 * @throws IllegalArgumentException
40 * if the mappingKey is not registered.
41 */
42 Object get(Object mappingKey, Object key);
43
44 /**
45 * @param mappingKey mapping name
46 * @param key left side of the mapping
47 * @param defaultValue default right side if there is no mapping for the code
48 * @return the value mapped by a registered mapping. If no mapping exists, the
49 * default value if returned. The implementation of the mapping
50 * implements the behavior if the key does not exist.
51 * @throws IllegalArgumentException
52 * if the mappingKey is not registered.
53 */
54 Object get(Object mappingKey, Object key, Object defaultValue);
55
56 /**
57 * Reverse mapping (Optional implementation)
58 *
59 * @param mappingKey mapping name
60 * @param value right side of the mapping
61 * @return the key mapped by a registered mapping. The implementation of the
62 * mapping implements the behavior if the value does not exist.
63 * @throws IllegalArgumentException
64 * if the mappingKey is not registered.
65 */
66 Object getKey(Object mappingKey, Object value);
67
68 /**
69 * Reverse mapping (Optional implementation)
70 *
71 * @param mappingKey mapping name
72 * @param value right side of the mapping
73 * @param defaultKey default left side
74 * @return the key mapped by a registered mapping. If no mapping exists, the
75 * default value if returned. The implementation of the mapping
76 * implements the behavior if the key does not exist.
77 * @throws IllegalArgumentException
78 * if the mappingKey is not registered.
79 */
80 Object getKey(Object mappingKey, Object value, Object defaultKey);
81
82 /**
83 * @param mappingKey mapping name
84 * @return a formal identification of the key system (e.g. an OID)
85 * @throws IllegalArgumentException
86 * if the mappingKey is not registered.
87 */
88 Object getKeySystem(Object mappingKey);
89
90 /**
91 * @param mappingKey mapping name
92 * @return a formal identification of the value system (e.g. an OID)
93 * @throws IllegalArgumentException
94 * if the mappingKey is not registered.
95 */
96 Object getValueSystem(Object mappingKey);
97
98 /**
99 * @return a set of names of all registered mappings. Changes to the set do
100 * not change the registry itself.
101 */
102 Set<?> mappingKeys();
103
104 /**
105 * @param mappingKey mapping key
106 * @return key set of a registered mapping. Changes to the set do not change
107 * the registry itself.
108 * @throws IllegalArgumentException
109 * if the mappingKey is not registered.
110 */
111 Set<?> keys(Object mappingKey);
112
113 /**
114 * @param mappingKey mapping key
115 * @return value set of a registered mapping. Changes to the set do not
116 * change the registry itself.
117 * @throws IllegalArgumentException
118 * if the mappingKey is not registered.
119 */
120 Collection<?> values(Object mappingKey);
121
122 }