001/**
002 * Copyright 2005-2015 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.dao;
017
018import java.util.List;
019
020import org.kuali.rice.krad.maintenance.MaintenanceLock;
021
022/**
023 * This interface defines basic methods that MaintenanceDocument Dao's must provide
024 * 
025 * 
026 */
027public interface MaintenanceDocumentDao {
028
029//    public Collection getPendingDocumentsForClass(Class dataObjectClass);
030
031    /**
032     * 
033     * This method looks for a document that is locking the given lockingRepresentation. If one is found, then it
034     * retrieves the documentNumber, and returns it.
035     * 
036     * @param lockingRepresentation - locking representation to check for
037     * @param documentNumber - document number to ignore, optional argument
038     * @return returns an empty string if no locking document is found, otherwise returns the documentNumber of the locking document
039     * 
040     */
041    public String getLockingDocumentNumber(String lockingRepresentation, String documentNumber);
042
043    /**
044     * This method deletes the locks for the given document number.  It is called when the document is final,
045     * thus it can be unlocked, or when the locks need to be regenerated (thus they get cleared first).
046     * 
047     * @param documentNumber - document number whose locks should be deleted
048     */
049    public void deleteLocks(String documentNumber);
050
051    /**
052     * This method stores the given list of maintenance locks.  Typically these will all be for the same document.
053     * 
054     * @param maintenanceLocks - the list of maintenance locks to be stored
055     */
056    public void storeLocks(List<MaintenanceLock> maintenanceLocks);
057
058}