001/**
002 * Copyright 2005-2016 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 */
016package org.kuali.rice.kns.kim.type;
017
018import org.apache.commons.lang.ClassUtils;
019import org.apache.commons.lang.builder.ToStringBuilder;
020import org.kuali.rice.core.api.util.ClassLoaderUtils;
021import org.kuali.rice.krad.bo.BusinessObject;
022import org.kuali.rice.krad.datadictionary.AttributeDefinition;
023import org.kuali.rice.krad.datadictionary.exception.ClassValidationException;
024
025import java.util.Map;
026
027/**
028 * @deprecated A krad integrated type service base class will be provided in the future.
029 * This is only used for the legacy {@link DataDictionaryTypeServiceBase}.
030 */
031@Deprecated
032public final class KimAttributeDefinition extends AttributeDefinition {
033        private static final long serialVersionUID = 7006569761728813805L;
034
035        protected Map<String, String> lookupInputPropertyConversions;
036        protected Map<String, String> lookupReturnPropertyConversions;
037        protected String lookupBoClass;
038    protected String sortCode;
039        protected String kimAttrDefnId;
040        protected String kimTypeId;
041
042        /**
043         * @return the sortCode
044         */
045        public String getSortCode() {
046                return this.sortCode;
047        }
048
049        /**
050         * @param sortCode
051         *            the sortCode to set
052         */
053        public void setSortCode(String sortCode) {
054                this.sortCode = sortCode;
055        }
056
057        public String getKimAttrDefnId() {
058                return this.kimAttrDefnId;
059        }
060
061        public void setKimAttrDefnId(String kimAttrDefnId) {
062                this.kimAttrDefnId = kimAttrDefnId;
063        }
064
065        /**
066         * @return the kimTypeId
067         */
068        public String getKimTypeId() {
069                return this.kimTypeId;
070        }
071
072        /**
073         * @param kimTypeId the kimTypeId to set
074         */
075        public void setKimTypeId(String kimTypeId) {
076                this.kimTypeId = kimTypeId;
077        }
078
079
080        /**
081         * @return the lookupInputPropertyConversions
082         */
083        public Map<String, String> getLookupInputPropertyConversions() {
084                return this.lookupInputPropertyConversions;
085        }
086
087        /**
088         * @param lookupInputPropertyConversions
089         *            the lookupInputPropertyConversions to set
090         */
091        public void setLookupInputPropertyConversions(Map<String, String> lookupInputPropertyConversions) {
092                this.lookupInputPropertyConversions = lookupInputPropertyConversions;
093        }
094
095        /**
096         * @return the lookupReturnPropertyConversions
097         */
098        public Map<String, String> getLookupReturnPropertyConversions() {
099                return this.lookupReturnPropertyConversions;
100        }
101
102        /**
103         * @param lookupReturnPropertyConversions
104         *            the lookupReturnPropertyConversions to set
105         */
106        public void setLookupReturnPropertyConversions(Map<String, String> lookupReturnPropertyConversions) {
107                this.lookupReturnPropertyConversions = lookupReturnPropertyConversions;
108        }
109
110        /**
111         * @see java.lang.Object#toString()
112         */
113        public String toString() {
114                return new ToStringBuilder( this )
115                        .append( "name", getName() )
116                        .append( "label", getLabel() )
117                        .append( "lookupBoClass", this.lookupBoClass )
118                        .append( "required", isRequired() )
119                        .append( "lookupInputPropertyConversions", this.lookupInputPropertyConversions )
120                        .append( "lookupReturnPropertyConversions", this.lookupReturnPropertyConversions )
121                        .toString();
122        }
123
124        public String getLookupBoClass() {
125                return this.lookupBoClass;
126        }
127
128        public void setLookupBoClass(String lookupBoClass) {
129                this.lookupBoClass = lookupBoClass;
130        }
131
132    public boolean isHasLookupBoDefinition() {
133        return true;
134    }
135
136
137        @SuppressWarnings("unchecked")
138        @Override
139        public void completeValidation(Class rootObjectClass, Class otherObjectClass) {
140                if (lookupBoClass != null) {
141                try {
142                        Class lookupBoClassObject = ClassUtils.getClass(ClassLoaderUtils.getDefaultClassLoader(), getLookupBoClass());
143                        if (!BusinessObject.class.isAssignableFrom(lookupBoClassObject)) {
144                                throw new ClassValidationException("lookupBoClass is not a valid instance of " + BusinessObject.class.getName() + " instead was: " + lookupBoClassObject.getName());
145                        }
146                } catch (ClassNotFoundException e) {
147                        throw new ClassValidationException("lookupBoClass could not be found: " + getLookupBoClass(), e);
148                }
149        }
150                super.completeValidation(rootObjectClass, otherObjectClass);
151        }
152    
153    
154
155        
156}