001 /*
002 * Copyright 2007-2008 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.apache.commons.lang.StringUtils;
019 import org.kuali.rice.kns.bo.BusinessObject;
020 import org.kuali.rice.kns.datadictionary.exception.AttributeValidationException;
021
022 /**
023 * This is a description of what this class does - wliang don't forget to fill this in.
024 *
025 * @author Kuali Rice Team (rice.collab@kuali.org)
026 *
027 */
028 public class InactivationBlockingDefinition extends DataDictionaryDefinitionBase implements InactivationBlockingMetadata {
029 private static final long serialVersionUID = -8765429636173190984L;
030
031 protected Class<? extends BusinessObject> blockingReferenceBusinessObjectClass;
032 protected String blockedReferencePropertyName;
033 protected Class<? extends BusinessObject> blockedBusinessObjectClass;
034 protected String inactivationBlockingDetectionServiceBeanName;
035 protected String relationshipLabel;
036 protected Class<? extends BusinessObject> businessObjectClass;
037
038 public InactivationBlockingDefinition() {
039 }
040
041 /**
042 * This overridden method ...
043 *
044 * @see org.kuali.rice.kns.datadictionary.DataDictionaryDefinition#completeValidation(java.lang.Class, java.lang.Class)
045 */
046 @SuppressWarnings("unchecked")
047 public void completeValidation(Class rootBusinessObjectClass, Class otherBusinessObjectClass) {
048 if (StringUtils.isBlank(inactivationBlockingDetectionServiceBeanName)) {
049 if (StringUtils.isBlank(blockedReferencePropertyName)) {
050 // the default inactivation blocking detection service (used when inactivationBlockingDetectionServiceBeanName is blank) requires that the property name be set
051 throw new AttributeValidationException("inactivationBlockingDetectionServiceBeanName and blockedReferencePropertyName can't both be blank in InactivationBlockingDefinition for class " +
052 rootBusinessObjectClass.getClass().getName());
053 }
054 }
055 if (getBlockedBusinessObjectClass() == null) {
056 throw new AttributeValidationException("Unable to determine blockedReferenceBusinessObjectClass in InactivationBlockingDefinition for class " +
057 rootBusinessObjectClass.getClass().getName());
058 }
059 if (!BusinessObject.class.isAssignableFrom(getBlockedBusinessObjectClass())) {
060 throw new AttributeValidationException("InactivationBlockingDefinitions must block a reference of type BusinessObject. Class name: " +
061 rootBusinessObjectClass.getClass().getName() + " blockedReferencePropertyName " + blockedReferencePropertyName +
062 " class that should have been a BusinessObject: " + getBlockedBusinessObjectClass());
063 }
064 }
065
066 /**
067 * This overridden method ...
068 *
069 * @see org.kuali.rice.kns.datadictionary.InactivationBlockingMetadata#getBlockedReferencePropertyName()
070 */
071 public String getBlockedReferencePropertyName() {
072 return this.blockedReferencePropertyName;
073 }
074
075 public void setBlockedReferencePropertyName(String blockedReferencePropertyName) {
076 this.blockedReferencePropertyName = blockedReferencePropertyName;
077 }
078
079 /**
080 * This overridden method ...
081 *
082 * @see org.kuali.rice.kns.datadictionary.InactivationBlockingMetadata#getBlockedBusinessObjectClass()
083 */
084 public Class<? extends BusinessObject> getBlockedBusinessObjectClass() {
085 return this.blockedBusinessObjectClass;
086 }
087
088 public void setBlockedBusinessObjectClass(Class<? extends BusinessObject> blockedBusinessObjectClass) {
089 this.blockedBusinessObjectClass = blockedBusinessObjectClass;
090 }
091
092 /**
093 * This overridden method ...
094 *
095 * @see org.kuali.rice.kns.datadictionary.InactivationBlockingMetadata#getInactivationBlockingDetectionServiceBeanName()
096 */
097 public String getInactivationBlockingDetectionServiceBeanName() {
098 return this.inactivationBlockingDetectionServiceBeanName;
099 }
100
101 public void setInactivationBlockingDetectionServiceBeanName(String inactivationBlockingDetectionServiceImpl) {
102 this.inactivationBlockingDetectionServiceBeanName = inactivationBlockingDetectionServiceImpl;
103 }
104
105 /**
106 * This overridden method ...
107 *
108 * @see org.kuali.rice.kns.datadictionary.InactivationBlockingMetadata#getBlockingReferenceBusinessObjectClass()
109 */
110 public Class<? extends BusinessObject> getBlockingReferenceBusinessObjectClass() {
111 return this.blockingReferenceBusinessObjectClass;
112 }
113
114 public void setBlockingReferenceBusinessObjectClass(Class<? extends BusinessObject> blockingReferenceBusinessObjectClass) {
115 this.blockingReferenceBusinessObjectClass = blockingReferenceBusinessObjectClass;
116 }
117
118 public String getRelationshipLabel() {
119 return this.relationshipLabel;
120 }
121
122 public void setRelationshipLabel(String relationshipLabel) {
123 this.relationshipLabel = relationshipLabel;
124 }
125
126 public Class<? extends BusinessObject> getBusinessObjectClass() {
127 return this.businessObjectClass;
128 }
129
130 public void setBusinessObjectClass(Class<? extends BusinessObject> businessObjectClass) {
131 this.businessObjectClass = businessObjectClass;
132 }
133
134 @Override
135 public String toString() {
136 return "InactivationBlockingDefinition: blockedClass=" + blockedBusinessObjectClass.getName()
137 + " /blockingReferenceProperty=" + blockedReferencePropertyName
138 + " /blockingClass=" + blockingReferenceBusinessObjectClass.getName();
139 }
140 }