001    /**
002     * Copyright 2005-2012 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.kns.datadictionary;
017    
018    import org.kuali.rice.kns.document.authorization.DocumentAuthorizer;
019    import org.kuali.rice.kns.document.authorization.DocumentPresentationController;
020    import org.kuali.rice.kns.document.authorization.TransactionalDocumentAuthorizerBase;
021    import org.kuali.rice.kns.document.authorization.TransactionalDocumentPresentationControllerBase;
022    import org.kuali.rice.kns.rule.PromptBeforeValidation;
023    import org.kuali.rice.kns.web.derivedvaluesetter.DerivedValuesSetter;
024    import org.kuali.rice.krad.datadictionary.ReferenceDefinition;
025    
026    import java.util.ArrayList;
027    import java.util.List;
028    
029    /**
030     * @author Kuali Rice Team (rice.collab@kuali.org)
031     */
032    @Deprecated
033    public class TransactionalDocumentEntry extends org.kuali.rice.krad.datadictionary.TransactionalDocumentEntry implements KNSDocumentEntry {
034    
035        protected Class<? extends PromptBeforeValidation> promptBeforeValidationClass;
036        protected Class<? extends DerivedValuesSetter> derivedValuesSetterClass;
037        protected List<String> webScriptFiles = new ArrayList<String>(3);
038        protected List<HeaderNavigation> headerNavigationList = new ArrayList<HeaderNavigation>();
039    
040        protected boolean sessionDocument = false;
041    
042        public TransactionalDocumentEntry() {
043            super();
044    
045        documentAuthorizerClass = TransactionalDocumentAuthorizerBase.class;
046        documentPresentationControllerClass = TransactionalDocumentPresentationControllerBase.class;
047        }
048    
049        @Override
050        public List<HeaderNavigation> getHeaderNavigationList() {
051            return headerNavigationList;
052        }
053    
054        @Override
055        public List<String> getWebScriptFiles() {
056            return webScriptFiles;
057        }
058    
059        /**
060         * @return Returns the preRulesCheckClass.
061         */
062        @Override
063        public Class<? extends PromptBeforeValidation> getPromptBeforeValidationClass() {
064            return promptBeforeValidationClass;
065        }
066    
067        /**
068         * The promptBeforeValidationClass element is the full class name of the java
069         * class which determines whether the user should be asked any questions prior to running validation.
070         *
071         * @see KualiDocumentActionBase#promptBeforeValidation(org.apache.struts.action.ActionMapping,
072         *      org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest,
073         *      javax.servlet.http.HttpServletResponse, String)
074         */
075        @Override
076        public void setPromptBeforeValidationClass(Class<? extends PromptBeforeValidation> preRulesCheckClass) {
077            this.promptBeforeValidationClass = preRulesCheckClass;
078        }
079    
080        /**
081         * The webScriptFile element defines the name of javascript files
082         * that are necessary for processing the document.  The specified
083         * javascript files will be included in the generated html.
084         */
085        @Override
086        public void setWebScriptFiles(List<String> webScriptFiles) {
087            this.webScriptFiles = webScriptFiles;
088        }
089    
090        /**
091         * The headerNavigation element defines a set of additional
092         * tabs which will appear on the document.
093         */
094        @Override
095        public void setHeaderNavigationList(List<HeaderNavigation> headerNavigationList) {
096            this.headerNavigationList = headerNavigationList;
097        }
098    
099        @Override
100        public boolean isSessionDocument() {
101            return this.sessionDocument;
102        }
103    
104        @Override
105        public void setSessionDocument(boolean sessionDocument) {
106            this.sessionDocument = sessionDocument;
107        }
108    
109        /**
110         * @return the derivedValuesSetter
111         */
112        @Override
113        public Class<? extends DerivedValuesSetter> getDerivedValuesSetterClass() {
114            return this.derivedValuesSetterClass;
115        }
116    
117        /**
118         * @param derivedValuesSetter the derivedValuesSetter to set
119         */
120        @Override
121        public void setDerivedValuesSetterClass(Class<? extends DerivedValuesSetter> derivedValuesSetter) {
122            this.derivedValuesSetterClass = derivedValuesSetter;
123        }
124    
125        /**
126         * Returns the document authorizer class for the document.  Only framework code should be calling this method.
127         * Client devs should use {@link DocumentTypeService#getDocumentAuthorizer(org.kuali.rice.krad.document.Document)}
128         * or
129         * {@link DocumentTypeService#getDocumentAuthorizer(String)}
130         *
131         * @return a document authorizer class
132         */
133        @Override
134        public Class<? extends DocumentAuthorizer> getDocumentAuthorizerClass() {
135            return (Class<? extends DocumentAuthorizer>) super.getDocumentAuthorizerClass();
136        }
137    
138        /**
139         * Returns the document presentation controller class for the document.  Only framework code should be calling
140         * this
141         * method.
142         * Client devs should use {@link DocumentTypeService#getDocumentPresentationController(org.kuali.rice.krad.document.Document)}
143         * or
144         * {@link DocumentTypeService#getDocumentPresentationController(String)}
145         *
146         * @return the documentPresentationControllerClass
147         */
148        @Override
149        public Class<? extends DocumentPresentationController> getDocumentPresentationControllerClass() {
150            return (Class<? extends DocumentPresentationController>) super.getDocumentPresentationControllerClass();
151        }
152    
153        /**
154         * @see org.kuali.rice.krad.datadictionary.DocumentEntry#completeValidation()
155         */
156        @Override
157        public void completeValidation() {
158            super.completeValidation();
159            for (ReferenceDefinition reference : defaultExistenceChecks) {
160                reference.completeValidation(documentClass, null);
161            }
162        }
163    
164        @Override
165        public String toString() {
166            return "TransactionalDocumentEntry for documentType " + getDocumentTypeName();
167        }
168    }