1 /* 2 * Copyright 2005-2007 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 java.util.List; 19 import java.util.Map; 20 21 import org.kuali.rice.kns.bo.PersistableBusinessObject; 22 import org.kuali.rice.kns.exception.ClassNotPersistableException; 23 24 public interface PersistenceService { 25 // public void initialize(); 26 27 public void loadRepositoryDescriptor(String ojbRepositoryFilePath); 28 29 public void clearCache(); 30 31 public Object resolveProxy(Object o); 32 33 /** 34 * @param persistableObject object whose primary key field name,value pairs you want 35 * @return a Map containing the names and values of fields specified the given class which are designated as key fields in the 36 * OJB repository file 37 * @throws IllegalArgumentException if the given Object is null 38 * @throws ClassNotPersistableException if the given object is of a type not described in the OJB repository 39 */ 40 public Map getPrimaryKeyFieldValues(Object persistableObject); 41 42 /** 43 * @param persistableObject object whose primary key field name,value pairs you want 44 * @param sortFieldNames if true, the returned Map will iterate through its entries sorted by fieldName 45 * @return a Map containing the names and values of fields specified the given class which are designated as key fields in the 46 * OJB repository file 47 * @throws IllegalArgumentException if the given Object is null 48 * @throws ClassNotPersistableException if the given object is of a type not described in the OJB repository 49 */ 50 public Map getPrimaryKeyFieldValues(Object persistableObject, boolean sortFieldNames); 51 52 /** 53 * @param persistableObject object whose objects need to be filled in based on primary keys 54 * @return the object whose key fields have just been retrieved 55 * @throws IllegalArgumentException if the given Object is null 56 * @throws ClassNotPersistableException if the given object is of a type not described in the OJB repository 57 */ 58 public void retrieveNonKeyFields(Object persistableObject); 59 60 /** 61 * @param persistableObject object whose specified reference object needs to be filled in based on primary keys 62 * @param referenceObjectName the name of the reference object that will be filled in based on primary key values 63 * @throws IllegalArgumentException if the given Object is null 64 * @throws ClassNotPersistableException if the given object is of a type not described in the OJB repository 65 */ 66 public void retrieveReferenceObject(Object persistableObject, String referenceObjectName); 67 68 69 /** 70 * @param persistableObject object whose specified reference objects need to be filled in based on primary keys 71 * @param referenceObjectNames the names of the reference objects that will be filled in based on primary key values 72 * @throws IllegalArgumentException if either of the given lists is null or empty, or if any of the referenceObjectNames is 73 * blank 74 * @throws ClassNotPersistableException if the given object is of a type not described in the OJB repository 75 */ 76 public void retrieveReferenceObjects(Object persistableObject, List referenceObjectNames); 77 78 /** 79 * @param persistableObjects objects whose specified reference objects need to be filled in based on primary keys 80 * @param referenceObjectNames the names of the reference objects that will be filled in based on primary key values 81 * @throws IllegalArgumentException if either of the given lists is null or empty, or if any of the referenceObjectNames is 82 * blank 83 * @throws ClassNotPersistableException if the given object is of a type not described in the OJB repository 84 */ 85 public void retrieveReferenceObjects(List persistableObjects, List referenceObjectNames); 86 87 88 /** 89 * @param persistableObject object whose objects need to have keys filled 90 * @return the object whose key fields have just been filled 91 * @throws IllegalArgumentException if the given Object is null 92 * @throws ClassNotPersistableException if the given object is of a type not described in the OJB repository 93 */ 94 public void linkObjects(Object persistableObject); 95 96 97 /** 98 * Gets the value for the given field name from the object, works for anonymous fields as well as simple fields 99 * 100 * @param persistableObject object to get value from 101 * @param fieldName name of the field to get from the object 102 * @return Object value of field in object, or null 103 */ 104 // This method never called 105 //public Object getFieldValue(Object persistableObject, String fieldName); 106 107 /** 108 * @param persistableObject object whose primary key field name,value pairs you want 109 * @param bounded - whether to restrict the number of rows returned 110 * @return a String representation of the primary key fields and values for the given persistableObject 111 * @throws IllegalArgumentException if the given Object is null 112 * @throws ClassNotPersistableException if the given object is of a type not described in the OJB repository 113 */ 114 public String getFlattenedPrimaryKeyFieldValues(Object persistableObject); 115 116 /** 117 * 118 * This method examines whether all the foreign key fields for the specified reference contain values. 119 * 120 * @param bo 121 * @param referenceName 122 * @return true if they all are accessible and have values, false otherwise 123 * 124 */ 125 public boolean allForeignKeyValuesPopulatedForReference(PersistableBusinessObject bo, String referenceName); 126 127 /** 128 * 129 * This method refreshes all reference objects to this main object that are 'non-updateable'. In general, this means that if a 130 * reference object is configured to not be updated when the parent document is saved, then they are non-updated. 131 * 132 * This will not refresh updateable objects, which can cause problems when you're creating new objects. 133 * 134 * See PersistenceServiceImpl.isUpdateableReference() for the full logic. 135 * 136 * @param bo - the businessObject to be refreshed 137 * 138 */ 139 public void refreshAllNonUpdatingReferences(PersistableBusinessObject bo); 140 141 }