001: /*
002: * Copyright 2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.opensource.org/licenses/ecl1.php
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.kuali.core.bo;
017:
018: import java.util.List;
019:
020: import org.apache.ojb.broker.PersistenceBrokerAware;
021:
022: /**
023: * Declares common methods for all persistable objects.
024: */
025: public interface PersistableBusinessObject extends BusinessObject,
026: PersistenceBrokerAware {
027:
028: /**
029: * @return object versionm number, used by optimistic locking
030: */
031: public Long getVersionNumber();
032:
033: /**
034: * Sets object's version number, used by optimistic locking
035: *
036: * @param versionNumber
037: */
038: public void setVersionNumber(Long versionNumber);
039:
040: /**
041: * @return objectID, the unique identifier for the object
042: */
043: public String getObjectId();
044:
045: /**
046: * Sets the unique identifer for the object
047: *
048: * @param objectId
049: */
050: public void setObjectId(String objectId);
051:
052: public abstract boolean isBoNotesSupport();
053:
054: /**
055: * @return Returns the boNotes List.
056: */
057: public abstract List getBoNotes();
058:
059: /**
060: * @see org.kuali.core.bo.BusinessObject#refreshNonUpdateableReferences()
061: */
062: public abstract void refreshNonUpdateableReferences();
063:
064: /**
065: * Refreshes the reference objects and non-key fields using the primitive values; only if the object is "empty" - i.e. objectId
066: * is null or empty string.
067: */
068: public abstract void refreshIfEmpty();
069:
070: /**
071: * This method is used to refresh a reference object that hangs off of a document. For example, if the attribute's keys were
072: * updated for a reference object, but the reference object wasn't, this method would go out and retrieve the reference object.
073: *
074: * @param referenceObjectName
075: */
076: public abstract void refreshReferenceObject(
077: String referenceObjectName);
078:
079: /**
080: * If this method is not implemented appropriately for PersistableBusinessObject with collections, then PersistableBusinessObject with collections will not persist deletions correctly.
081: * Elements that have been deleted will reappear in the DB after retrieval.
082: *
083: * @return List of collections which need to be monitored for changes by OJB
084: */
085: public List buildListOfDeletionAwareLists();
086:
087: /**
088: * Returns the boolean indicating whether this record is a new record of a maintenance document collection.
089: * Used to determine whether the record can be deleted on the document.
090: */
091: public boolean isNewCollectionRecord();
092:
093: /**
094: * Sets the boolean indicating this record is a new record of a maintenance document collection.
095: * Used to determine whether the record can be deleted on the document.
096: */
097: public void setNewCollectionRecord(boolean isNewCollectionRecord);
098:
099: /**
100: * Hook to link in any editable user fields.
101: */
102: public void linkEditableUserFields();
103:
104: public Note getBoNote(int nbr);
105:
106: public boolean addNote(Note note);
107:
108: public boolean deleteNote(Note note);
109:
110: public PersistableBusinessObjectExtension getExtension();
111: }
|