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.krad.datadictionary; 017 018 import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute; 019 020 /** 021 * Common base for all objects that can be configured in the dictionary 022 * 023 * @author Kuali Rice Team (rice.collab@kuali.org) 024 */ 025 public abstract class DictionaryBeanBase implements DictionaryBean { 026 027 private String namespaceCode; 028 private String componentCode; 029 030 public DictionaryBeanBase() { 031 032 } 033 034 /** 035 * @see DictionaryBean#getNamespaceCode() 036 */ 037 @BeanTagAttribute(name = "namespaceCode") 038 public String getNamespaceCode() { 039 return namespaceCode; 040 } 041 042 /** 043 * Setter for the bean's associated namespace code 044 * 045 * @param namespaceCode 046 */ 047 public void setNamespaceCode(String namespaceCode) { 048 this.namespaceCode = namespaceCode; 049 } 050 051 /** 052 * @see DictionaryBean#getComponentCode() 053 */ 054 @BeanTagAttribute(name = "componentCode") 055 public String getComponentCode() { 056 return componentCode; 057 } 058 059 /** 060 * Setter for the bean's associated component code 061 * 062 * @param componentCode 063 */ 064 public void setComponentCode(String componentCode) { 065 this.componentCode = componentCode; 066 } 067 068 /** 069 * Copies object by value 070 * 071 * @return copiedClass 072 */ 073 public <T> T copy() { 074 T copiedClass = null; 075 try { 076 copiedClass = (T)this.getClass().newInstance(); 077 } 078 catch(Exception exception) { 079 throw new RuntimeException(); 080 } 081 082 copyProperties(copiedClass); 083 084 return copiedClass; 085 } 086 087 /** 088 * Copies properties for copy() 089 * 090 * @param dictionaryBeanBase base bean 091 */ 092 protected <T> void copyProperties(T dictionaryBeanBase) { 093 DictionaryBeanBase dictionaryBeanBaseCopy = (DictionaryBeanBase) dictionaryBeanBase; 094 dictionaryBeanBaseCopy.setComponentCode(this.componentCode); 095 dictionaryBeanBaseCopy.setNamespaceCode(this.namespaceCode); 096 } 097 }