001/**
002 * Copyright 2005-2014 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 */
016package org.kuali.rice.krad.maintenance;
017
018import org.kuali.rice.krad.document.Document;
019
020/**
021 * Common interface for all maintenance documents.
022 */
023public 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}