View Javadoc
1   /*
2    * Copyright 2008 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.ole.sys.service;
17  
18  import java.util.List;
19  
20  import org.kuali.ole.sys.businessobject.ElectronicPaymentClaim;
21  import org.kuali.rice.kim.api.identity.Person;
22  
23  /**
24   * A set of methods that help the ElectronicPaymentClaimingService turn a list of ElectronicPaymentClaim records into a document
25   * used to claim those records.
26   * 
27   * @see org.kuali.ole.sys.service.ElectronicPaymentClaimingService
28   * @see org.kuali.ole.sys.businessobject.ElectronicPaymentClaim
29   */
30  public interface ElectronicPaymentClaimingDocumentGenerationStrategy {
31  
32      /**
33       * Returns the label which will identify the claiming document to users
34       * 
35       * @return a label
36       */
37      public abstract String getDocumentLabel();
38  
39      /**
40       * get the workflow document type code of the claiming document
41       * 
42       * @return the workflow document type code of the claiming document
43       */
44      public String getClaimingDocumentWorkflowDocumentType();
45  
46      /**
47       * Determines if the given user can use the document wrapped by this ElectronicPaymentClaimingDocumentGenerationStrategy
48       * implementaton to claim any ElectronicPaymentClaim records
49       * 
50       * @param claimingUser the user attempting to claim ElectronicPaymentClaim records with a document
51       * @return true if the user can use this kind of document to claim ElectronicPaymentClaim records, false otherwise
52       */
53      public abstract boolean userMayUseToClaim(Person claimingUser);
54  
55      /**
56       * Creates a document to claim a given list of ElectronicPaymentClaim records.
57       * 
58       * @param electronicPayments a List of ElectronicPaymentClaim records
59       * @param user the user doing the claiming
60       * @return the absolute URL that should be redirected to, so that the user can edit the document
61       */
62      public abstract String createDocumentFromElectronicPayments(List<ElectronicPaymentClaim> electronicPayments, Person user);
63  
64      /**
65       * Determines whether the given document number would be considered valid by the system that the document this strategy
66       * interacts with
67       * 
68       * @param referenceDocumentNumber the document number reference to validate
69       * @return true if the document reference is considered valid, false otherwise
70       */
71      public abstract boolean isDocumentReferenceValid(String referenceDocumentNumber);
72  }