1 /** 2 * Copyright 2005-2013 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.kns.service; 17 18 import org.kuali.rice.krad.bo.BusinessObject; 19 import org.kuali.rice.krad.bo.DataObjectRelationship; 20 import org.kuali.rice.krad.datadictionary.RelationshipDefinition; 21 import org.kuali.rice.krad.valuefinder.ValueFinder; 22 import org.kuali.rice.krad.service.DataObjectMetaDataService; 23 24 import java.util.Collection; 25 import java.util.List; 26 import java.util.Map; 27 28 /** 29 * Provides Metadata about a specific BusinessObject. Depending on the circumstance or type 30 * of BO it will retrieve the data it needs from either the DataDictionary or through the 31 * PersistenceStructureService 32 * 33 * @author Kuali Rice Team (rice.collab@kuali.org) 34 */ 35 public interface BusinessObjectMetaDataService extends DataObjectMetaDataService { 36 37 public DataObjectRelationship getBusinessObjectRelationship(RelationshipDefinition ddReference, 38 BusinessObject bo, Class boClass, String attributeName, String attributePrefix, boolean keysOnly); 39 40 public RelationshipDefinition getBusinessObjectRelationshipDefinition(Class c, String attributeName); 41 42 public RelationshipDefinition getBusinessObjectRelationshipDefinition(BusinessObject bo, String attributeName); 43 44 /** 45 * 46 * This method returns a list of inquirable field names 47 * 48 * @param bo 49 * @return a collection of inquirable field names 50 */ 51 public Collection<String> getInquirableFieldNames(Class boClass, String sectionTitle); 52 53 /** 54 * 55 * This method returns a list of lookupable fields 56 * 57 * @param bo 58 * @return a collection of lookupable fields 59 */ 60 public List<String> getLookupableFieldNames(Class boClass); 61 62 /** 63 * 64 * This method looks up the default value for a given attribute and returns 65 * it 66 * 67 * @param businessObjectClass 68 * @param attributeName 69 * @return default value for an attribute 70 */ 71 public String getLookupFieldDefaultValue(Class businessObjectClass, String attributeName); 72 73 /** 74 * 75 * This method returns the value finder class for a given attribute 76 * 77 * @param businessObjectClass 78 * @param attributeName 79 * @return value finder class 80 */ 81 public Class getLookupFieldDefaultValueFinderClass(Class businessObjectClass, String attributeName); 82 83 /** 84 * 85 * This method looks up the quickfinder parameter string for a given 86 * attribute and returns it. See 87 * {@link org.kuali.rice.kns.datadictionary.FieldDefinition#getQuickfinderParameterString()}. 88 * 89 * @param businessObjectClass 90 * @param attributeName 91 * @return default values for attributes 92 */ 93 public String getLookupFieldQuickfinderParameterString(Class businessObjectClass, String attributeName); 94 95 /** 96 * This method returns the quickfinder parameter string builder class for a 97 * given attribute. See 98 * {@link org.kuali.rice.kns.datadictionary.FieldDefinition#getQuickfinderParameterStringBuilderClass()}. 99 * 100 * @param businessObjectClass 101 * @param attributeName 102 * @return value finder class 103 */ 104 public Class<? extends ValueFinder> getLookupFieldQuickfinderParameterStringBuilderClass(Class businessObjectClass, 105 String attributeName); 106 107 /** 108 * 109 * This method returns a list of collection names a business object contains 110 * 111 * @param bo 112 * @return 113 */ 114 public Collection<String> getCollectionNames(BusinessObject bo); 115 116 /** 117 * 118 * This method determines if a given field(attribute) is inquirable or not 119 * This handles both nested and non-nested attributes 120 * 121 * @param bo 122 * @param attributeName 123 * @param sectionTitle 124 * @return true if field is inquirable 125 */ 126 public boolean isAttributeInquirable(Class boClass, String attributeName, String sectionTitle); 127 128 /** 129 * 130 * This method determines if a given business object is inquirable 131 * 132 * @param bo 133 * @return true if bo is inquirable 134 */ 135 public boolean isInquirable(Class boClass); 136 137 /** 138 * 139 * This method determines if a given field(attribute) is lookupable or not 140 * This handles both nested and non-nested attributes 141 * 142 * @param bo 143 * @param attributeName 144 * @return true if field is lookupable 145 */ 146 public boolean isAttributeLookupable(Class boClass, String attributeName); 147 148 /** 149 * 150 * This method determines if a given business object is lookupable 151 * 152 * @param bo 153 * @return true if bo is lookupable 154 */ 155 public boolean isLookupable(Class boClass); 156 157 /** 158 * 159 * This method will return a class that is related to the parent BO (either 160 * through the DataDictionary or through the PersistenceStructureService) 161 * 162 * @param bo 163 * @param attributes 164 * @return related class 165 */ 166 @Deprecated 167 public DataObjectRelationship getBusinessObjectRelationship(BusinessObject bo, String attributeName); 168 169 @Deprecated 170 public DataObjectRelationship getBusinessObjectRelationship(BusinessObject bo, Class boClass, 171 String attributeName, String attributePrefix, boolean keysOnly); 172 173 174 175 /** 176 * Get all the business object relationships for the given business object. 177 * These relationships may be defined at the ORM-layer or within the data 178 * dictionary. 179 */ 180 @Deprecated 181 public List<DataObjectRelationship> getBusinessObjectRelationships(BusinessObject bo); 182 183 /** 184 * Get all the business object relationships for the given class. These 185 * relationships may be defined at the ORM-layer or within the data 186 * dictionary. 187 */ 188 @Deprecated 189 public List<DataObjectRelationship> getBusinessObjectRelationships(Class<? extends BusinessObject> boClass); 190 191 /** 192 * This method accepts a business object and one of its foreign key 193 * attribute names. It returns a map that has a foreign key attribute name 194 * as a key and its respective related class as value. If the passed in 195 * attributeName is not a foreign key, this method will return an empty map. 196 * 197 * @param BusinessObject 198 * businessObject 199 * @param String 200 * attributeName 201 * @return Map<String, Class> 202 */ 203 @Deprecated 204 public Map<String, Class> getReferencesForForeignKey(BusinessObject businessObject, String attributeName); 205 206 /** 207 * 208 * This method ... 209 * 210 * @param businessObjectClass 211 * @param attributeName 212 * @param targetName 213 * @return 214 */ 215 @Deprecated 216 public String getForeignKeyFieldName(Class businessObjectClass, String attributeName, String targetName); 217 }