001    /**
002     * Copyright 2005-2013 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.service.impl;
017    
018    import java.util.Collection;
019    
020    import org.kuali.rice.kew.api.KewApiServiceLocator;
021    import org.kuali.rice.kew.api.doctype.DocumentType;
022    import org.kuali.rice.kns.service.TransactionalDocumentDictionaryService;
023    import org.kuali.rice.krad.datadictionary.DataDictionary;
024    import org.kuali.rice.krad.datadictionary.TransactionalDocumentEntry;
025    import org.kuali.rice.krad.document.TransactionalDocument;
026    import org.kuali.rice.krad.rules.rule.BusinessRule;
027    import org.kuali.rice.krad.service.DataDictionaryService;
028    
029    /**
030     * This class is the service implementation for the TransactionalDocumentDictionary structure. Defines the API for the interacting
031     * with Document-related entries in the data dictionary. This is the default implementation that gets delivered with Kuali.
032     */
033    @Deprecated
034    public class TransactionalDocumentDictionaryServiceImpl implements TransactionalDocumentDictionaryService {
035        private DataDictionaryService dataDictionaryService;
036    
037        /**
038         * @see org.kuali.rice.kns.service.TransactionalDocumentDictionaryService#getAllowsCopy(org.kuali.bo.TransactionalDocument)
039         */
040        public Boolean getAllowsCopy(TransactionalDocument document) {
041            Boolean allowsCopy = null;
042    
043            TransactionalDocumentEntry entry = getTransactionalDocumentEntry(document);
044            if (entry != null) {
045                allowsCopy = Boolean.valueOf(entry.getAllowsCopy());
046            }
047    
048            return allowsCopy;
049        }
050    
051        /**
052         * @see org.kuali.rice.kns.service.TransactionalDocumentDictionaryService#getDocumentClassByName(java.lang.String)
053         */
054        public Class getDocumentClassByName(String documentTypeName) {
055            Class documentClass = null;
056    
057            TransactionalDocumentEntry entry = getTransactionalDocumentEntryBydocumentTypeName(documentTypeName);
058            if (entry != null) {
059                documentClass = entry.getDocumentClass();
060            }
061    
062            return documentClass;
063        }
064    
065        /**
066         * @see org.kuali.rice.kns.service.TransactionalDocumentDictionaryService#getDescription(org.kuali.bo.TransactionalDocument)
067         */
068        public String getDescription(String transactionalDocumentTypeName) {
069            String description = null;
070    
071            DocumentType docType = getDocumentType(transactionalDocumentTypeName);
072            if (docType != null) {
073                description = docType.getDescription();
074            }
075    
076            return description;
077        }
078    
079        /**
080         * @see org.kuali.rice.kns.service.TransactionalDocumentDictionaryService#getDescription(org.kuali.bo.TransactionalDocument)
081         */
082        public String getLabel(String transactionalDocumentTypeName) {
083            String label = null;
084    
085            DocumentType docType = getDocumentType(transactionalDocumentTypeName);
086            if (docType != null) {
087                label = docType.getLabel();
088            }
089    
090            return label;
091        }
092    
093    
094        /**
095         * Sets the data dictionary instance.
096         * 
097         * @param dataDictionaryService
098         */
099        public void setDataDictionaryService(DataDictionaryService dataDictionaryService) {
100            this.dataDictionaryService = dataDictionaryService;
101        }
102    
103        /**
104         * Retrieves the data dictionary instance.
105         * 
106         * @return
107         */
108        public DataDictionary getDataDictionary() {
109            return this.dataDictionaryService.getDataDictionary();
110        }
111    
112        /**
113         * This method gets the workflow document type for the given documentTypeName
114         * 
115         * @param documentTypeName
116         * @return
117         */
118        protected DocumentType getDocumentType(String documentTypeName) {
119            return KewApiServiceLocator.getDocumentTypeService().getDocumentTypeByName(documentTypeName);
120        }
121    
122        /**
123         * Retrieves the document entry by transactional document class instance.
124         * 
125         * @param document
126         * @return TransactionalDocumentEntry
127         */
128        private TransactionalDocumentEntry getTransactionalDocumentEntry(TransactionalDocument document) {
129            if (document == null) {
130                throw new IllegalArgumentException("invalid (null) document");
131            }
132    
133            TransactionalDocumentEntry entry = (TransactionalDocumentEntry)getDataDictionary().getDocumentEntry(document.getClass().getName());
134    
135            return entry;
136        }
137    
138        /**
139         * Retrieves the document entry by transactional document type name.
140         * 
141         * @param documentTypeName
142         * @return
143         */
144        private TransactionalDocumentEntry getTransactionalDocumentEntryBydocumentTypeName(String documentTypeName) {
145            if (documentTypeName == null) {
146                throw new IllegalArgumentException("invalid (null) document type name");
147            }
148    
149            TransactionalDocumentEntry entry = (TransactionalDocumentEntry) getDataDictionary().getDocumentEntry(documentTypeName);
150    
151            return entry;
152        }
153    
154            /**
155             * This overridden method ...
156             * 
157             * @see org.kuali.rice.kns.service.TransactionalDocumentDictionaryService#getDefaultExistenceChecks(java.lang.String)
158             */
159            public Collection getDefaultExistenceChecks(String docTypeName) {
160            Collection defaultExistenceChecks = null;
161    
162            TransactionalDocumentEntry entry = getTransactionalDocumentEntryBydocumentTypeName(docTypeName);
163            if (entry != null) {
164                defaultExistenceChecks = entry.getDefaultExistenceChecks();
165            }
166    
167            return defaultExistenceChecks;
168            }
169    
170            /**
171             * This overridden method ...
172             * 
173             * @see org.kuali.rice.kns.service.TransactionalDocumentDictionaryService#getDefaultExistenceChecks(org.kuali.rice.krad.document.TransactionalDocument)
174             */
175            public Collection getDefaultExistenceChecks(TransactionalDocument document) {
176                    return getDefaultExistenceChecks(getTransactionalDocumentEntry(document).getDocumentTypeName());
177            }
178    }