001    /*
002     * Copyright 2007-2008 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.service;
017    
018    import org.kuali.rice.krad.bo.DocumentHeader;
019    
020    /**
021     * This is an interface to allow for Rice client applications to override the
022     * DocumentHeader class being used. Originally written to facilitate the Kuali
023     * Financial System custom document header which included a 'total amount'
024     * field.
025     * 
026     * @author Kuali Rice Team (rice.collab@kuali.org)
027     * 
028     */
029    public interface DocumentHeaderService {
030    
031        /**
032         * This method returns the class to use to instantiate document header objects
033         * 
034         * @return the class to be used for new document header objects
035         */
036        public Class<? extends DocumentHeader> getDocumentHeaderBaseClass();
037    
038        /**
039         * This method retrieves a document header using the given documentHeaderId
040         * 
041         * @param documentHeaderId - the id of the document to retrieve the document header for
042         * @return the document header associated with the given document header id
043         */
044        public DocumentHeader getDocumentHeaderById(String documentHeaderId);
045        
046        
047        /**
048         * This method saves a document header object
049         * 
050         * @param documentHeader - the document header object to save
051         */
052        public void saveDocumentHeader(DocumentHeader documentHeader);
053        
054        /**
055         * This method deletes a document header object
056         * 
057         * @param documentHeader - the document header to be removed
058         */
059        public void deleteDocumentHeader(DocumentHeader documentHeader);
060    
061    }