View Javadoc

1   /**
2    * Copyright 2005-2012 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.krad.datadictionary;
17  
18  import org.kuali.rice.krad.uif.UifConstants;
19  import org.kuali.rice.krad.uif.view.View;
20  import org.kuali.rice.krad.uif.UifConstants.ViewType;
21  import org.springframework.beans.PropertyValues;
22  
23  import java.util.List;
24  import java.util.Map;
25  import java.util.Set;
26  
27  /**
28   * Maps one Document type to other document Type.
29   * 
30   * This interface can be used to implement KNS to workflow document type
31   * mapping relationships other than one-to-one.
32   * 
33   * @author mpk35
34   *
35   */
36  public interface DataDictionaryMapper {
37  	/**
38  	 * This method gets the business object entry for a concrete class
39  	 * 
40  	 * @param className
41  	 * @return
42  	 */
43      @Deprecated
44  	public BusinessObjectEntry getBusinessObjectEntryForConcreteClass(DataDictionaryIndex index, String className);
45  	
46  	/**
47       * This method gets the DataOjectEntry (or subclass) for a concrete class
48       * 
49       * @param className
50       * @return the DataObjectEntry for the class or null if not found
51       */
52      public DataObjectEntry getDataObjectEntryForConcreteClass(DataDictionaryIndex index, String className);
53      
54      
55  	/**
56  	 * @return List of businessObject classnames
57  	 */
58      @Deprecated
59  	public List<String> getBusinessObjectClassNames(DataDictionaryIndex index);
60  
61  	/**
62  	 * @param className
63  	 * @return BusinessObjectEntry for the named class, or null if none exists
64  	 */
65  	@Deprecated
66  	public BusinessObjectEntry getBusinessObjectEntry(DataDictionaryIndex index, String className );
67  
68  	/**
69       * @param className
70       * @return DataObjectEntry for the named class, or null if none exists
71       */
72      public DataObjectEntry getDataObjectEntry(DataDictionaryIndex index, String className );
73  
74  	/**
75  	 * @return Map of (classname, BusinessObjectEntry) pairs
76  	 */
77      @Deprecated
78  	public Map<String, BusinessObjectEntry> getBusinessObjectEntries(DataDictionaryIndex index);
79  	
80  	/**
81  	 * @param className
82  	 * @return DataDictionaryEntryBase for the named class, or null if none
83  	 *         exists
84  	 */
85  	public DataDictionaryEntry getDictionaryObjectEntry(DataDictionaryIndex index, String className);
86  	
87  	/**
88  	 * Returns the KNS document entry for the given lookup key.  The documentTypeDDKey is interpreted
89  	 * successively in the following ways until a mapping is found (or none if found):
90  	 * <ol>
91  	 * <li>KEW/workflow document type</li>
92  	 * <li>business object class name</li>
93  	 * <li>maintainable class name</li>
94  	 * </ol>
95  	 * This mapping is compiled when DataDictionary files are parsed on startup (or demand).  Currently this
96  	 * means the mapping is static, and one-to-one (one KNS document maps directly to one and only
97  	 * one key).
98  	 * 
99  	 * @param documentTypeDDKey the KEW/workflow document type name
100 	 * @return the KNS DocumentEntry if it exists
101 	 */
102 	public DocumentEntry getDocumentEntry(DataDictionaryIndex index, String documentTypeDDKey);
103 
104 	/**
105 	 * Note: only MaintenanceDocuments are indexed by businessObject Class
106 	 * 
107 	 * This is a special case that is referenced in one location. Do we need
108 	 * another map for this stuff??
109 	 * 
110 	 * @param businessObjectClass
111 	 * @return DocumentEntry associated with the given Class, or null if there
112 	 *         is none
113 	 */
114 	public MaintenanceDocumentEntry getMaintenanceDocumentEntryForBusinessObjectClass(DataDictionaryIndex index, Class<?> businessObjectClass);
115 		
116 	public Map<String, DocumentEntry> getDocumentEntries(DataDictionaryIndex index);
117 
118 	public Set<InactivationBlockingMetadata> getAllInactivationBlockingMetadatas(DataDictionaryIndex index, Class<?> blockedClass);
119 	
120 	/**
121 	 * Returns mapped document type based on the given document type.
122 	 * 
123 	 * @param documentType
124 	 * @return new document type or null if given documentType was not found.
125 	 */
126 	public String getDocumentTypeName(DataDictionaryIndex index, String documentTypeName);
127 	
128 	/**
129 	 * Returns mapped document type class based on the given document type.
130 	 * 
131 	 * @param documentType
132 	 * @return the class of the mapped document type or null if given documentType was not found.
133 	 */
134 	//public Class getDocumentTypeClass(String documentTypeName);
135 	
136 	/**
137 	 * Returns the View entry identified by the given id
138 	 * 
139 	 * @param index - the view dictionary index
140 	 * @param viewId - unique id for view
141 	 * @return View instance associated with the id
142 	 */
143 	public View getViewById(UifDictionaryIndex index, String viewId);
144 	
145 	/**
146 	 * Called to retrieve a <code>View</code> instance that is of the given type
147 	 * based on the index key
148 	 * 
149 	 * @param index - the view dictionary index
150 	 * @param viewTypeName
151 	 *            - type name for the view
152 	 * @param indexKey
153 	 *            - Map of index key parameters, these are the parameters the
154 	 *            indexer used to index the view initially and needs to identify
155 	 *            an unique view instance
156 	 * @return View instance that matches the given index
157 	 */
158 	public View getViewByTypeIndex(UifDictionaryIndex index, ViewType viewTypeName, Map<String, String> indexKey);
159 
160     /**
161      * Indicates whether a <code>View</code> exists for the given view type and index information
162      *
163      * @param index - the view dictionary index
164      * @param viewTypeName - type name for the view
165      * @param indexKey - Map of index key parameters, these are the parameters the
166      * indexer used to index the view initially and needs to identify
167      * an unique view instance
168      * @return boolean true if view exists, false if not
169      */
170     public boolean viewByTypeExist(UifDictionaryIndex index, ViewType viewTypeName, Map<String, String> indexKey);
171 	
172 	/**
173 	 * Gets all <code>View</code> prototypes configured for the given view type
174 	 * name
175 	 * 
176 	 * @param index - the view dictionary index
177 	 * @param viewTypeName
178 	 *            - view type name to retrieve
179 	 * @return List<View> view prototypes with the given type name, or empty
180 	 *         list
181 	 */
182 	public List<View> getViewsForType(UifDictionaryIndex index, UifConstants.ViewType viewTypeName);
183 
184     /**
185      * Retrieves the configured property values for the view bean definition associated with the given id
186      *
187      * <p>
188      * Since constructing the View object can be expensive, when metadata only is needed this method can be used
189      * to retrieve the configured property values. Note this looks at the merged bean definition
190      * </p>
191      *
192      * @param index - the view dictionary index
193      * @param viewId - id for the view to retrieve
194      * @return PropertyValues configured on the view bean definition, or null if view is not found
195      */
196     public PropertyValues getViewPropertiesById(UifDictionaryIndex index, String viewId);
197 
198     /**
199      * Retrieves the configured property values for the view bean definition associated with the given type and
200      * index
201      *
202      * <p>
203      * Since constructing the View object can be expensive, when metadata only is needed this method can be used
204      * to retrieve the configured property values. Note this looks at the merged bean definition
205      * </p>
206      *
207      * @param index - the view dictionary index
208      * @param viewTypeName - type name for the view
209      * @param indexKey - Map of index key parameters, these are the parameters the indexer used to index
210      * the view initially and needs to identify an unique view instance
211      * @return PropertyValues configured on the view bean definition, or null if view is not found
212      */
213     public PropertyValues getViewPropertiesByType(UifDictionaryIndex index, UifConstants.ViewType viewTypeName,
214             Map<String, String> indexKey);
215 
216 }