1 /** 2 * Copyright 2005-2015 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.krad.service; 17 18 import org.kuali.rice.krad.maintenance.MaintenanceDocument; 19 import org.kuali.rice.krad.maintenance.MaintenanceLock; 20 import org.kuali.rice.krad.maintenance.Maintainable; 21 22 import java.util.List; 23 import java.util.Map; 24 25 /** 26 * Provides methods for working with {@link org.kuali.rice.krad.maintenance.MaintenanceDocument}. 27 * 28 * @author Kuali Rice Team (rice.collab@kuali.org) 29 */ 30 public interface MaintenanceDocumentService { 31 32 /** 33 * Prepares the <code>MaintenanceDocument</code> on initial request. 34 * 35 * <p>This includes retrieving the data object for edit or copy, clearing fields</p> 36 * 37 * @param objectClassName class name for the object being maintained 38 * @param docTypeName workflow doc type for the maintenance document requested 39 * @param maintenanceAction indicates whether this is a new, copy, or edit maintenance action 40 * @return MaintenanceDocument prepared document instance 41 */ 42 MaintenanceDocument setupNewMaintenanceDocument( 43 String objectClassName, String docTypeName, String maintenanceAction); 44 45 /** 46 * Called to setup the object being maintained. 47 * 48 * <p>For edit and copy actions, the old record is retrieved and prepared for 49 * editing (in the case of a copy some fields are cleared). In addition some 50 * authorization checks are performed and hooks for custom 51 * <code>Maintainble</code> implementations are invoked.</p> 52 * 53 * @param document document instance for the maintenance object 54 * @param maintenanceAction the requested maintenance action (new, new with existing, 55 * copy, edit) 56 * @param requestParameters Map of parameters from the request 57 */ 58 void setupMaintenanceObject(MaintenanceDocument document, String maintenanceAction, 59 Map<String, String[]> requestParameters); 60 61 /** 62 * Attempts to find any other active documents that are pending on the same 63 * maintenance record. 64 * 65 * <p>If any are pending and locked, thereby blocking this document, then the 66 * docHeaderId/documentNumber of the blocking locked document is returned. 67 * Otherwise, if nothing is blocking, then null is returned.</p> 68 * 69 * @param document document to test 70 * @return A String representing the docHeaderId of any blocking document, 71 * or null if none are blocking 72 * 73 */ 74 String getLockingDocumentId(MaintenanceDocument document); 75 76 /** 77 * Attempts to find any other active documents that are pending on the same 78 * maintenance record. 79 * 80 * <p>If any are pending and locked, thereby blocking this document, then the 81 * docHeaderId/documentNumber of the blocking locked document is returned. * 82 * Otherwise, if nothing is blocking, then null is returned.</p> 83 * 84 * @param maintainable maintainable representing the document to test 85 * @param documentNumber the documentNumber/docHeaderId of the document to test 86 * @return A String representing the docHeaderId of any blocking document, 87 * or null if none are blocking 88 */ 89 String getLockingDocumentId(Maintainable maintainable, 90 String documentNumber); 91 92 /** 93 * Call the same-named method in the Dao, since the service has access to 94 * the Dao, but the caller doesn't. 95 * 96 * <p>This method deletes the locks for the given document number. It is called 97 * when the document is final, thus it can be unlocked, or when the locks 98 * need to be regenerated (thus they get cleared first).</p> 99 * 100 * @param documentNumber document number whose locks should be deleted 101 */ 102 void deleteLocks(String documentNumber); 103 104 /** 105 * Call the same-named method in the Dao, since the service has access to 106 * the Dao, but the caller doesn't. 107 * 108 * <p>This method stores the given list of maintenance locks. Typically these 109 * will all be for the same document.</p> 110 * 111 * @param maintenanceLocks the list of maintenance locks to be stored 112 */ 113 void storeLocks(List<MaintenanceLock> maintenanceLocks); 114 115 }