001 /*
002 * Copyright 2005-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.bo;
017
018 import java.util.LinkedHashMap;
019
020 import javax.persistence.Column;
021 import javax.persistence.Id;
022 import javax.persistence.MappedSuperclass;
023
024 import org.apache.commons.lang.StringUtils;
025 import org.hibernate.annotations.Type;
026
027 @MappedSuperclass
028 public class KualiCodeBase extends PersistableBusinessObjectBase implements KualiCode {
029
030 private static final long serialVersionUID = 1194744068788100482L;
031 // Code and Name will be overridden by Column annotations in their children classes
032 @Id
033 @Column(name="CODE")
034 protected String code;
035 @Column(name="NM")
036 protected String name;
037 @Type(type="yes_no")
038 @Column(name="ACTV_IND")
039 protected boolean active;
040
041 public KualiCodeBase() {
042 this.active = true;
043 }
044
045 public KualiCodeBase(String code) {
046 this();
047 this.code = code;
048 }
049
050 /**
051 * @return Getter for the Code.
052 */
053 public String getCode() {
054 return code;
055 }
056
057 /**
058 * @param code - Setter for the Code.
059 */
060 public void setCode(String code) {
061 this.code = code;
062 }
063
064
065 /**
066 * @return Getter for the Name.
067 */
068 public String getName() {
069 return name;
070 }
071
072
073 /**
074 * @param name - Setter for the name.
075 */
076 public void setName(String name) {
077 this.name = name;
078 }
079
080
081 /**
082 * @return Getter for the active field.
083 */
084 public boolean isActive() {
085 return active;
086 }
087
088
089 /**
090 * @param name - Setter for the active field.
091 */
092 public void setActive(boolean a) {
093 this.active = a;
094 }
095
096 /**
097 * @return Returns the code and description in format: xx - xxxxxxxxxxxxxxxx
098 */
099 public String getCodeAndDescription() {
100 return KualiCodeBase.getCodeAndDescription(getCode(), getName());
101 }
102
103 /**
104 * Static helper method to allow other classes to provide consistent "code and description"
105 * behavior, even if not extending from this class.
106 */
107 public static String getCodeAndDescription(String code, String desc) {
108 if (code != null) {
109 if (desc == null) {
110 return code;
111 } else {
112 return code + " - " + desc;
113 }
114 }
115 return "";
116 }
117
118 /**
119 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
120 */
121 @SuppressWarnings("unchecked")
122 protected LinkedHashMap toStringMapper() {
123 LinkedHashMap m = new LinkedHashMap();
124
125 m.put("code", getCode());
126 m.put("name", getName());
127
128 return m;
129 }
130
131 /**
132 * Implements equals comparing code to code.
133 *
134 * @see java.lang.Object#equals(java.lang.Object)
135 */
136 public boolean equals(Object obj) {
137 if (obj instanceof KualiCodeBase) {
138 return StringUtils.equals(this.getCode(), ((KualiCodeBase) obj).getCode());
139 }
140 return false;
141 }
142
143 /**
144 * Overriding equals requires writing a hashCode method.
145 *
146 * @see java.lang.Object#hashCode()
147 */
148 public int hashCode() {
149 int hashCode = 0;
150
151 if (getCode() != null) {
152 hashCode = getCode().hashCode();
153 }
154
155 return hashCode;
156 }
157 }