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}