01: /*
02: * Copyright 2007 The Kuali Foundation.
03: *
04: * Licensed under the Educational Community License, Version 1.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.opensource.org/licenses/ecl1.php
09: *
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.core.document.authorization;
17:
18: import org.apache.commons.logging.Log;
19: import org.apache.commons.logging.LogFactory;
20: import org.kuali.core.bo.user.UniversalUser;
21: import org.kuali.core.document.AmountTotaling;
22: import org.kuali.core.document.Document;
23: import org.kuali.core.document.TransactionalDocument;
24: import org.kuali.core.workflow.service.KualiWorkflowDocument;
25:
26: /**
27: * Base class for all TransactionalDocumentAuthorizers.
28: */
29: public class TransactionalDocumentAuthorizerBase extends
30: DocumentAuthorizerBase implements
31: TransactionalDocumentAuthorizer {
32: private static Log LOG = LogFactory
33: .getLog(TransactionalDocumentAuthorizerBase.class);
34:
35: /**
36: * Adds settings for transactional-document-specific flags.
37: *
38: * @see org.kuali.core.document.authorization.DocumentAuthorizer#getDocumentActionFlags(Document, UniversalUser)
39: */
40: @Override
41: public DocumentActionFlags getDocumentActionFlags(
42: Document document, UniversalUser user) {
43: LOG
44: .debug("calling TransactionalDocumentAuthorizerBase.getDocumentActionFlags for document '"
45: + document.getDocumentNumber()
46: + "'. user '"
47: + user.getPersonUserIdentifier() + "'");
48: TransactionalDocumentActionFlags flags = new TransactionalDocumentActionFlags(
49: super .getDocumentActionFlags(document, user));
50:
51: TransactionalDocument transactionalDocument = (TransactionalDocument) document;
52: KualiWorkflowDocument workflowDocument = transactionalDocument
53: .getDocumentHeader().getWorkflowDocument();
54:
55: LOG.debug("calling canInitiate from getDocumentActionFlags()");
56:
57: // if a user can't initiate a document of this type then they can't copy or error-correct one, either
58: if (!canCopy(workflowDocument.getDocumentType(), user)) {
59: flags.setCanCopy(false);
60: flags.setCanErrorCorrect(false);
61: } else {
62: flags.setCanCopy(transactionalDocument.getAllowsCopy()
63: && !workflowDocument.stateIsInitiated());
64: flags
65: .setCanErrorCorrect(transactionalDocument
66: .getAllowsErrorCorrection()
67: && (workflowDocument.stateIsApproved()
68: || workflowDocument
69: .stateIsProcessed() || workflowDocument
70: .stateIsFinal()));
71: }
72:
73: // if document implements AmountTotaling interface, then we should display the total
74: if (document instanceof AmountTotaling) {
75: flags.setHasAmountTotal(true);
76: } else {
77: flags.setHasAmountTotal(false);
78: }
79:
80: return flags;
81: }
82: }
|