001/**
002 * Copyright 2005-2018 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.krad.datadictionary;
017
018import org.apache.commons.lang.StringUtils;
019import org.kuali.rice.krad.bo.BusinessObject;
020import org.kuali.rice.krad.datadictionary.parse.BeanTag;
021import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
022import org.kuali.rice.krad.datadictionary.validator.ValidationTrace;
023
024/**
025 * This is a description of what this class does - wliang don't forget to fill this in.
026 *
027 * @author Kuali Rice Team (rice.collab@kuali.org)
028 */
029@BeanTag(name = "inactivationBlockingDefinition")
030public class InactivationBlockingDefinition extends DataDictionaryDefinitionBase implements InactivationBlockingMetadata {
031    private static final long serialVersionUID = -8765429636173190984L;
032
033    protected Class<?> blockingReferenceBusinessObjectClass;
034    protected String blockedReferencePropertyName;
035    protected Class<?> blockedBusinessObjectClass;
036    protected String inactivationBlockingDetectionServiceBeanName;
037    protected String relationshipLabel;
038    protected Class<?> businessObjectClass;
039
040    @Override
041    public void completeValidation(Class<?> rootDataObjectClass, Class<?> otherDataObjectClass, ValidationTrace tracer) {
042        if (StringUtils.isBlank(inactivationBlockingDetectionServiceBeanName)) {
043            if (StringUtils.isBlank(blockedReferencePropertyName)) {
044                // the default inactivation blocking detection service (used when inactivationBlockingDetectionServiceBeanName is blank) requires that the property name be set
045                String currentValues[] = {"rootDataObjectClass = " + rootDataObjectClass};
046                tracer.createError("inactivationBlockingDetectionServiceBeanName and  blockedReferencePropertyName can't both be blank in InactivationBlockingDefinition", currentValues);
047            }
048        }
049        if (getBlockedDataObjectClass() == null) {
050            String currentValues[] = {"rootDataObjectClass = " + rootDataObjectClass};
051            tracer.createError("Unable to determine blockedReferenceBusinessObjectClass in InactivationBlockingDefinition", currentValues);
052        }
053    }
054
055    @Override
056    @Deprecated
057    @BeanTagAttribute(name = "blockedReferencePropertyName")
058    public String getBlockedReferencePropertyName() {
059        return this.blockedReferencePropertyName;
060    }
061
062    /**
063     * @deprecated use {@link #setBlockedAttributeName(String)} instead
064     */
065    @Deprecated
066    public void setBlockedReferencePropertyName(String blockedReferencePropertyName) {
067        this.blockedReferencePropertyName = blockedReferencePropertyName;
068    }
069
070    @Override
071    @BeanTagAttribute(name = "blockedAttributeName")
072    public String getBlockedAttributeName() {
073        return this.blockedReferencePropertyName;
074    }
075
076    public void setBlockedAttributeName(String blockedAttributeName) {
077        this.blockedReferencePropertyName = blockedAttributeName;
078    }
079
080    @Override
081    @Deprecated
082    @SuppressWarnings("unchecked")
083    @BeanTagAttribute(name = "blockedBusinessObjectClass")
084    public Class<? extends BusinessObject> getBlockedBusinessObjectClass() {
085        return (Class<? extends BusinessObject>)blockedBusinessObjectClass;
086    }
087
088    /**
089     * @deprecated use {@link #setBlockedDataObjectClass(Class)} instead
090     */
091    @Deprecated
092    public void setBlockedBusinessObjectClass(Class<? extends BusinessObject> blockedBusinessObjectClass) {
093        this.blockedBusinessObjectClass = blockedBusinessObjectClass;
094    }
095
096    @Override
097    @BeanTagAttribute(name = "blockedDataObjectClass")
098    public Class<?> getBlockedDataObjectClass() {
099        return blockedBusinessObjectClass;
100    }
101
102    public void setBlockedDataObjectClass(Class<?> blockedDataObjectClass) {
103        this.blockedBusinessObjectClass = blockedDataObjectClass;
104    }
105
106    @Override
107    @BeanTagAttribute(name = "inactivationBlockingDetectionServiceBeanName")
108    public String getInactivationBlockingDetectionServiceBeanName() {
109        return this.inactivationBlockingDetectionServiceBeanName;
110    }
111
112    public void setInactivationBlockingDetectionServiceBeanName(String inactivationBlockingDetectionServiceImpl) {
113        this.inactivationBlockingDetectionServiceBeanName = inactivationBlockingDetectionServiceImpl;
114    }
115
116    @Override
117    @Deprecated
118    @SuppressWarnings("unchecked")
119    @BeanTagAttribute(name = "blockingReferenceBusinessObjectClass")
120    public Class<? extends BusinessObject> getBlockingReferenceBusinessObjectClass() {
121        return (Class<? extends BusinessObject>)this.blockingReferenceBusinessObjectClass;
122    }
123
124    /**
125     * @deprecated use {@link #setBlockingReferenceDataObjectClass(Class)}
126     */
127    @Deprecated
128    public void setBlockingReferenceBusinessObjectClass(
129            Class<? extends BusinessObject> blockingReferenceBusinessObjectClass) {
130        this.blockingReferenceBusinessObjectClass = blockingReferenceBusinessObjectClass;
131    }
132
133    @Override
134    @BeanTagAttribute(name = "blockingDataObjectClass")
135    public Class<?> getBlockingDataObjectClass() {
136        return blockingReferenceBusinessObjectClass;
137    }
138
139    public void setBlockingReferenceDataObjectClass(Class<?> blockingDataObjectClass) {
140        this.blockingReferenceBusinessObjectClass = blockingDataObjectClass;
141    }
142
143    @Override
144    @BeanTagAttribute(name = "relationshipLabel")
145    public String getRelationshipLabel() {
146        return this.relationshipLabel;
147    }
148
149    public void setRelationshipLabel(String relationshipLabel) {
150        this.relationshipLabel = relationshipLabel;
151    }
152
153    /**
154     * @deprecated the businessObjectClass does not appear to be used anywhere significantly internally or externally,
155     *             no replacement
156     */
157    @Deprecated
158    @SuppressWarnings("unchecked")
159    @BeanTagAttribute(name = "businessObjectClass")
160    public Class<? extends BusinessObject> getBusinessObjectClass() {
161        return (Class<? extends BusinessObject>)this.businessObjectClass;
162    }
163
164    /**
165     * @deprecated the businessObjectClass does not appear to be used anywhere significantly internally or externally,
166     *             no replacement
167     */
168    @Deprecated
169    public void setBusinessObjectClass(Class<? extends BusinessObject> businessObjectClass) {
170        this.businessObjectClass = businessObjectClass;
171    }
172
173    @Override
174    public String toString() {
175        return "InactivationBlockingDefinition: blockedClass="
176                + blockedBusinessObjectClass.getName()
177                + " /blockingReferenceProperty="
178                + blockedReferencePropertyName
179                + " /blockingClass="
180                + blockingReferenceBusinessObjectClass.getName();
181    }
182}