001    /**
002     * Copyright 2005-2012 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.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/ecl2.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.rice.krad.maintenance;
017    
018    import org.kuali.rice.krad.document.Document;
019    
020    /**
021     * Common interface for all maintenance documents.
022     */
023    public interface MaintenanceDocument extends Document {
024    
025        /**
026         * Get the XML representation of the maintenance document
027         *
028         * @return String containing the xml representation of the maintenance document
029         */
030        String getXmlDocumentContents();
031    
032        /**
033         * Get the new maintainable object
034         *
035         * @return Maintainable which holds the new maintenance record
036         */
037        Maintainable getNewMaintainableObject();
038    
039        /**
040         * Get the old maintainable object
041         *
042         * @return Maintainable which holds the old maintenance record
043         */
044        Maintainable getOldMaintainableObject();
045    
046        /**
047         * Sets the xml contents of the maintenance document
048         * 
049         * @param documentContents String xml
050         */
051        void setXmlDocumentContents(String documentContents);
052    
053        /**
054         * Set the new maintainable object
055         *
056         * @param newMaintainableObject maintainable with the new maintenance record
057         */
058        void setNewMaintainableObject(Maintainable newMaintainableObject);
059    
060        /**
061         * Set the old maintainable object
062         *
063         * @param oldMaintainableObject maintainable with the old maintenance record
064         */
065        void setOldMaintainableObject(Maintainable oldMaintainableObject);
066    
067        /**
068         * Return the data object that this MaintenanceDocument is maintaining
069         *
070         * @return document data object instance
071         */
072        Object getDocumentDataObject();
073        
074        /**
075         * Build the xml document string from the contents of the old and new maintainables.
076         */
077        void populateXmlDocumentContentsFromMaintainables();
078    
079        /**
080         * Populates the old and new maintainables from the xml document contents string.
081         */
082        void populateMaintainablesFromXmlDocumentContents();
083    
084        /**
085         * Check if maintenance document has old maintenance data
086    
087         * @return true if this maintenance document has old data, false otherwise
088         */
089        boolean isOldDataObjectInDocument();
090    
091        /**
092         * Check if maintenance document is creating a new Business Object
093         *
094         * @return true if this maintenance document is creating a new Business Object, false otherwise
095         */
096        boolean isNew();
097    
098        /**
099         * Check if maintenance document is editing an existing Business Object
100         *
101         * @return true if this maintenance document is editing an existing Business Object, false otherwise
102         */
103        boolean isEdit();
104    
105        /**
106         * Check if maintenance document is creating a new Business Object out of an existing Business Object
107         *
108         * <p>
109         * For example, a new division vendor out of an existing parent vendor.
110         * </p>
111         *
112         * @return true if maintenance document is creating a new Business Object out of an existing Business object, false otherwise
113         */
114        boolean isNewWithExisting();
115        
116        /**
117         * Check if fields are cleared on copy
118         *
119         * <p>
120         * For copy action the primary keys need to be cleared.  This flag indicates if the clearing has occurred.
121         * </p>
122         *
123         * @return true if the primary keys have been cleared already, false otherwise
124         */
125        boolean isFieldsClearedOnCopy();
126    
127        /**
128         * Set the keys cleared on copy flag
129         * 
130         * @param keysClearedOnCopy
131         * 
132         */
133        void setFieldsClearedOnCopy(boolean keysClearedOnCopy);
134    
135        /**
136         * Check if the topic field should be displayed in the notes section
137         *
138         * @return true if the topic field should be displayed in the notes section, false otherwise
139         */
140        boolean isDisplayTopicFieldInNotes();
141    
142        /**
143         * Set the display topic field in notes flag
144         *
145         * @parm displayTopicFieldInNotes
146         */
147        void setDisplayTopicFieldInNotes(boolean displayTopicFieldInNotes);
148    
149    }