1 /**
2 * Copyright 2005-2015 The Kuali Foundation
3 *
4 * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php
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.kuali.rice.krms.impl.repository.language;
17
18 import java.util.ArrayList;
19 import java.util.HashMap;
20 import java.util.List;
21 import java.util.Map;
22
23
24 /**
25 * This class is a registry of template contexts which the requirement
26 * component translator uses to generate natural language.
27 */
28 public class ContextRegistry<T extends Context> {
29
30 /** Registry context map */
31 private Map<String, List<T>> registry = new HashMap<String, List<T>>();
32
33 /**
34 * Constructor.
35 */
36 public ContextRegistry() {
37 }
38
39 /**
40 * Constructor. Adds a context registry as a map.
41 *
42 * @param registry Context registry
43 */
44 public ContextRegistry(final Map<String, List<T>> registry) {
45 this.registry = registry;
46 }
47
48 /**
49 * Adds a context to the registry. Key is usually a TermParameterType key.
50 *
51 * @param key Context key
52 * @param context Context
53 */
54 public void add(final String key, final T context) {
55 if(this.registry.containsKey(key)) {
56 this.registry.get(key).add(context);
57 } else {
58 List<T> list = new ArrayList<T>();
59 list.add(context);
60 this.registry.put(key, list);
61 }
62 }
63
64 /**
65 * Gets a context from the registry. Key is usually a TermParameterType key.
66 *
67 * @param key Context key
68 * @return A context
69 */
70 public List<T> get(final String key) {
71 return this.registry.get(key);
72 }
73
74 /**
75 * Returns true if a context exists for <code>key</code>; otherwise false.
76 *
77 * @param key Context key
78 * @return True if a context exists otherwise false
79 */
80 public boolean containsKey(final String key) {
81 return this.registry.containsKey(key);
82 }
83
84 /**
85 * Remove a context from the registry. Key is usually a
86 *
87 * @param key
88 * @return
89 */
90 public List<T> remove(final String key) {
91 return this.registry.remove(key);
92 }
93
94 /**
95 * Returns the number of keys of the registry.
96 *
97 * @return Number of keys in the registry
98 */
99 public int size() {
100 return this.registry.size();
101 }
102
103 @Override
104 public String toString() {
105 return this.registry.toString();
106 }
107 }