Coverage Report - org.kuali.rice.krad.maintenance.Maintainable
 
Classes in this File Line Coverage Branch Coverage Complexity
Maintainable
N/A
N/A
1
 
 1  
 /*
 2  
  * Copyright 2007 The Kuali Foundation
 3  
  *
 4  
  * Licensed under the Educational Community License, Version 1.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/ecl1.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.krad.maintenance;
 17  
 
 18  
 import org.kuali.rice.kim.bo.Person;
 19  
 import org.kuali.rice.krad.bo.BusinessObject;
 20  
 import org.kuali.rice.krad.bo.DocumentHeader;
 21  
 import org.kuali.rice.krad.document.MaintenanceDocument;
 22  
 import org.kuali.rice.krad.document.MaintenanceLock;
 23  
 import org.kuali.rice.krad.uif.service.ViewHelperService;
 24  
 
 25  
 import java.util.List;
 26  
 import java.util.Map;
 27  
 
 28  
 /**
 29  
  * Provides contract for implementing a maintenance object within the maintenance framework
 30  
  *
 31  
  * <p> Currently the <code>Maintainable</code> serves many purposes. First since all maintenance documents share the
 32  
  * same document class <code>MaintenanceDocumentBase</code> certain document callbacks such as workflow post processing
 33  
  * are invoked on the maintainable. Second the maintainable provides a hook for custom actions on the maintenance view.
 34  
  * Finally since the maintainable extends <code>ViewHelperService</code> it is used to customize <code>View</code>
 35  
  * configuration for <code>MaintenanceView</code> instances </p>
 36  
  *
 37  
  * @author Kuali Rice Team (rice.collab@kuali.org)
 38  
  */
 39  
 public interface Maintainable extends ViewHelperService, java.io.Serializable {
 40  
 
 41  
     /**
 42  
      * Sets the document number on this maintainable for referencing back to the containing
 43  
      * <code>MaintenanceDocument</code>
 44  
      *
 45  
      * @param documentNumber - document number for the containing maintenance document
 46  
      */
 47  
     public void setDocumentNumber(String documentNumber);
 48  
 
 49  
     /**
 50  
      * Invoked when setting the title for the document instance in workflow (doc search results)
 51  
      * to customize the title
 52  
      *
 53  
      * @param document - maintenance document instance to build title for
 54  
      * @return String document title
 55  
      */
 56  
     public String getDocumentTitle(MaintenanceDocument document);
 57  
 
 58  
     /**
 59  
      * Returns instance of the data object that is being maintained
 60  
      *
 61  
      * @return Object data object instance
 62  
      */
 63  
     public Object getDataObject();
 64  
 
 65  
     /**
 66  
      * Sets an instance of a data object that should be maintained
 67  
      *
 68  
      * @param object - data object instance
 69  
      */
 70  
     public void setDataObject(Object object);
 71  
 
 72  
     /**
 73  
      * Returns the class for the data object being maintained
 74  
      *
 75  
      * @return Class data object class
 76  
      */
 77  
     public Class getDataObjectClass();
 78  
 
 79  
     /**
 80  
      * Sets the class for the data object that will be maintained
 81  
      *
 82  
      * @param dataObjectClass - class for maintenance data object
 83  
      */
 84  
     public void setDataObjectClass(Class dataObjectClass);
 85  
 
 86  
     /**
 87  
      * Returns the type of maintenance action this maintainable has been configured with
 88  
      *
 89  
      * @return String maintenance action string
 90  
      */
 91  
     public String getMaintenanceAction();
 92  
 
 93  
     /**
 94  
      * Sets the type of maintenance action to be performed (new, edit, or copy)
 95  
      *
 96  
      * @param maintenanceAction - string identifying the action type
 97  
      */
 98  
     public void setMaintenanceAction(String maintenanceAction);
 99  
 
 100  
     /**
 101  
      * Invoked to generating the list of maintenance locks used to block other edits
 102  
      * of the same data object record
 103  
      *
 104  
      * @return the locking representation(s) of this document, which are reproducible
 105  
      *         given the same keys and the same maintainable object
 106  
      */
 107  
     public List<MaintenanceLock> generateMaintenanceLocks();
 108  
 
 109  
     /**
 110  
      * Invoked to persist changes to the data object being maintained
 111  
      *
 112  
      * <p>
 113  
      * Called after the maintenance document has become final indicating
 114  
      * the changes should be applied
 115  
      * </p>
 116  
      */
 117  
     public void saveDataObject();
 118  
 
 119  
     /**
 120  
      * Invokes to delete the data object being maintained
 121  
      *
 122  
      * <p>
 123  
      * Called after the maintenance document has become final indicating
 124  
      * the changes should be applied
 125  
      * </p>
 126  
      */
 127  
     public void deleteDataObject();
 128  
 
 129  
     /**
 130  
      * Invoked do perform custom processing when the route status for the containing
 131  
      * maintenance document changes
 132  
      *
 133  
      * <p>
 134  
      * Usually used for determining when the document has become final so further actions
 135  
      * can take place in addition to the usual persistence of the object changes
 136  
      * </p>
 137  
      *
 138  
      * @param documentHeader - document header instance for containing maintenance document which
 139  
      * can be used to check the new status
 140  
      */
 141  
     public void doRouteStatusChange(DocumentHeader documentHeader);
 142  
 
 143  
     /**
 144  
      * Retrieves the locking document id for the maintainable which is used to create the
 145  
      * maintenance lock string
 146  
      *
 147  
      * @return String locking id
 148  
      */
 149  
     public String getLockingDocumentId();
 150  
 
 151  
     /**
 152  
      * Return an array of document ids to lock prior to processing this document
 153  
      * in the workflow engine
 154  
      *
 155  
      * @return List<Long> list of document ids
 156  
      */
 157  
     public List<Long> getWorkflowEngineDocumentIdsToLock();
 158  
 
 159  
     /**
 160  
      * Indicates whether or not this maintainable supports custom lock
 161  
      * descriptors for pessimistic locking.
 162  
      *
 163  
      * @return boolean true if the maintainable can generate custom lock descriptors,
 164  
      *         false otherwise
 165  
      * @see #getCustomLockDescriptor(Map, org.kuali.rice.kim.bo.Person)
 166  
      */
 167  
     public boolean useCustomLockDescriptors();
 168  
 
 169  
     /**
 170  
      * Generates a custom lock descriptor for pessimistic locking. This method
 171  
      * should not be called unless {@link #useCustomLockDescriptors()} returns
 172  
      * true
 173  
      *
 174  
      * @param user - the user trying to establish the lock
 175  
      * @return String representing the lock descriptor
 176  
      * @see #useCustomLockDescriptors()
 177  
      * @see org.kuali.rice.krad.service.PessimisticLockService
 178  
      * @see org.kuali.rice.krad.service.impl.PessimisticLockServiceImpl
 179  
      */
 180  
     public String getCustomLockDescriptor(Person user);
 181  
 
 182  
     /**
 183  
      * Indicates whether this maintainable supports notes on the maintenance object
 184  
      *
 185  
      * <p>
 186  
      * Note this is only applicable if the data object is an instance of <code>BusinessObject</code>
 187  
      * </p>
 188  
      *
 189  
      * @return boolean true if notes are supported, false if they are not supported
 190  
      */
 191  
     public boolean isNotesEnabled();
 192  
 
 193  
     /**
 194  
      * Indicates whether the object being maintained is an instance of <code>ExternalizableBusinessObject</code>
 195  
      *
 196  
      * <p>
 197  
      * For the case when we want to maintain a business object that doesn't
 198  
      * necessarily map to a single table in the database or may doesn't map to a
 199  
      * database at all
 200  
      * </p>
 201  
      *
 202  
      * @return boolean true if the data object is an external business object, false if not
 203  
      */
 204  
     public boolean isExternalBusinessObject();
 205  
 
 206  
     /**
 207  
      * Invoked to prepare a new <code>BusinessObject</code> instance that is external
 208  
      *
 209  
      * @param businessObject - new business object instance to prepare
 210  
      */
 211  
     public void prepareExternalBusinessObject(BusinessObject businessObject);
 212  
 
 213  
     /**
 214  
      * Indicates whether their is an old data object for the maintainable
 215  
      *
 216  
      * @return boolean true if old data object exists, false if not
 217  
      */
 218  
     public boolean isOldDataObjectInDocument();
 219  
 
 220  
     /**
 221  
      * Hook for performing any custom processing before the maintenance object is saved
 222  
      */
 223  
     public void prepareForSave();
 224  
 
 225  
     /**
 226  
      * Hook for performing any custom processing after the maintenance object is retrieved from persistence storage
 227  
      */
 228  
     public void processAfterRetrieve();
 229  
 
 230  
     /**
 231  
      * Called during setupMaintenanceObject to retrieve the original dataObject that is being
 232  
      * edited or copied.  Override this method for non BusinessObject external persistence,
 233  
      * Maintainable objects that extend BO should override isExternalBusinessObject and
 234  
      * prepareBusinessObject instead.
 235  
      *
 236  
      * Do not override this method and isExternalBusinessObject.
 237  
      *
 238  
      * @param document document instance for the maintenance object
 239  
      * @param dataObjectKeys Map of keys for the requested object
 240  
      * @return the object identified by the dataObjectKeys
 241  
      */
 242  
     public Object retrieveObjectForEditOrCopy(MaintenanceDocument document, Map<String, String> dataObjectKeys);
 243  
 
 244  
     /**
 245  
      * Performs the setting of some attributes that might be necessary
 246  
      * if we're creating a new business object using on an existing business object.
 247  
      * For example, create a division Vendor based on an existing parent Vendor.
 248  
      * (Please see VendorMaintainableImpl.java)
 249  
      *
 250  
      * @param document - maintenance document instance this maintainable belong to
 251  
      * @param requestParameters - map of request parameters sent for the request
 252  
      */
 253  
     public void setupNewFromExisting(MaintenanceDocument document, Map<String, String[]> parameters);
 254  
 
 255  
     /**
 256  
      * Hook for performing any custom processing after the maintenance object has been setup for a copy action
 257  
      *
 258  
      * @param document - maintenance document instance this maintainable belong to
 259  
      * @param requestParameters - map of request parameters sent for the copy request
 260  
      */
 261  
     public void processAfterCopy(MaintenanceDocument document, Map<String, String[]> requestParameters);
 262  
 
 263  
     /**
 264  
      * Hook for performing any custom processing after the maintenance object has been setup for a edit action
 265  
      *
 266  
      * @param document - maintenance document instance this maintainable belong to
 267  
      * @param requestParameters - map of request parameters sent for the copy request
 268  
      */
 269  
     public void processAfterEdit(MaintenanceDocument document, Map<String, String[]> requestParameters);
 270  
 
 271  
     /**
 272  
      * Hook for performing any custom processing after the maintenance object has been setup for a new action
 273  
      *
 274  
      * @param document - maintenance document instance this maintainable belong to
 275  
      * @param requestParameters - map of request parameters sent for the copy request
 276  
      */
 277  
     public void processAfterNew(MaintenanceDocument document, Map<String, String[]> requestParameters);
 278  
 
 279  
     /**
 280  
      * Hook for performing any custom processing after each posting of the maintenance document (for various actions
 281  
      * like add line, refresh)
 282  
      *
 283  
      * @param document - maintenance document instance this maintainable belong to
 284  
      * @param requestParameters - map of request parameters from the post
 285  
      */
 286  
     public void processAfterPost(MaintenanceDocument document, Map<String, String[]> requestParameters);
 287  
 }