001/** 002 * Copyright 2005-2016 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.kim.impl.identity.name; 017 018import org.apache.commons.lang.StringUtils; 019import org.joda.time.DateTime; 020import org.kuali.rice.kim.api.KimApiConstants; 021import org.kuali.rice.kim.api.identity.name.EntityNameContract; 022import org.kuali.rice.kim.api.identity.privacy.EntityPrivacyPreferences; 023import org.kuali.rice.kim.api.services.KimApiServiceLocator; 024import org.kuali.rice.krad.bo.DataObjectBase; 025import org.kuali.rice.krad.data.jpa.converters.BooleanYNConverter; 026 027import javax.persistence.Column; 028import javax.persistence.Convert; 029import javax.persistence.MappedSuperclass; 030import javax.persistence.Transient; 031import java.sql.Timestamp; 032 033@MappedSuperclass 034public abstract class EntityNameBase extends DataObjectBase implements EntityNameContract { 035 private static final long serialVersionUID = 7102034794623577359L; 036 037 @Column(name = "ENTITY_ID") 038 private String entityId; 039 040 @Column(name = "NM_TYP_CD") 041 private String nameCode; 042 043 @Column(name = "FIRST_NM") 044 private String firstName; 045 046 @Column(name = "MIDDLE_NM") 047 private String middleName; 048 049 @Column(name = "LAST_NM") 050 private String lastName; 051 052 @Column(name = "PREFIX_NM") 053 private String namePrefix; 054 055 @Column(name = "TITLE_NM") 056 private String nameTitle; 057 058 @Column(name = "SUFFIX_NM") 059 private String nameSuffix; 060 061 @Convert(converter=BooleanYNConverter.class) 062 @Column(name = "ACTV_IND") 063 private boolean active; 064 065 @Convert(converter=BooleanYNConverter.class) 066 @Column(name = "DFLT_IND") 067 private boolean defaultValue; 068 069 @Column(name = "NOTE_MSG") 070 private String noteMessage; 071 072 @Column(name = "NM_CHNG_DT") 073 private Timestamp nameChangedDate; 074 075 @Transient 076 private boolean suppressName; 077 078 079 @Override 080 public String getFirstName() { 081 if (isSuppressName()) { 082 return KimApiConstants.RestrictedMasks.RESTRICTED_DATA_MASK; 083 } 084 085 return this.firstName; 086 } 087 088 @Override 089 public String getMiddleName() { 090 if (isSuppressName()) { 091 return KimApiConstants.RestrictedMasks.RESTRICTED_DATA_MASK; 092 } 093 094 return this.middleName; 095 } 096 097 @Override 098 public String getLastName() { 099 if (isSuppressName()) { 100 return KimApiConstants.RestrictedMasks.RESTRICTED_DATA_MASK; 101 } 102 103 return this.lastName; 104 } 105 106 @Override 107 public String getNamePrefix() { 108 if (isSuppressName()) { 109 return KimApiConstants.RestrictedMasks.RESTRICTED_DATA_MASK; 110 } 111 112 return this.namePrefix; 113 } 114 115 @Override 116 public String getNameTitle() { 117 if (isSuppressName()) { 118 return KimApiConstants.RestrictedMasks.RESTRICTED_DATA_MASK; 119 } 120 121 return this.nameTitle; 122 } 123 124 @Override 125 public String getFirstNameUnmasked() { 126 return this.firstName; 127 } 128 129 @Override 130 public String getMiddleNameUnmasked() { 131 return this.middleName; 132 } 133 134 @Override 135 public String getLastNameUnmasked() { 136 return this.lastName; 137 } 138 139 @Override 140 public String getNamePrefixUnmasked() { 141 return this.namePrefix; 142 } 143 144 @Override 145 public String getNameTitleUnmasked() { 146 return this.nameTitle; 147 } 148 149 @Override 150 public String getNameSuffixUnmasked() { 151 return this.nameSuffix; 152 } 153 154 @Override 155 public String getCompositeName() { 156 if (isSuppressName()) { 157 return KimApiConstants.RestrictedMasks.RESTRICTED_DATA_MASK; 158 } 159 160 return getCompositeNameUnmasked(); 161 } 162 163 @Override 164 public String getCompositeNameUnmasked() { 165 return getLastName() + ", " + getFirstName() + (StringUtils.isBlank(getMiddleName()) ? "" : " " + getMiddleName()); 166 } 167 168 @Override 169 public DateTime getNameChangedDate() { 170 return nameChangedDate != null ? new DateTime(nameChangedDate.getTime()) : null; 171 } 172 173 public Timestamp getNameChangedTimestamp() { 174 return nameChangedDate; 175 } 176 177 @Override 178 public boolean isSuppressName() { 179 try { 180 EntityPrivacyPreferences privacy = KimApiServiceLocator.getIdentityService().getEntityPrivacyPreferences( 181 getEntityId()); 182 if (privacy != null) { 183 this.suppressName = privacy.isSuppressName(); 184 } else { 185 this.suppressName = false; 186 } 187 } catch (NullPointerException e) { 188 return false; 189 } catch (ClassCastException c) { 190 return false; 191 } 192 193 return this.suppressName; 194 } 195 196 @Override 197 public String getEntityId() { 198 return entityId; 199 } 200 201 public void setEntityId(String entityId) { 202 this.entityId = entityId; 203 } 204 205 public String getNameCode() { 206 return nameCode; 207 } 208 209 public void setNameCode(String nameCode) { 210 this.nameCode = nameCode; 211 } 212 213 public void setFirstName(String firstName) { 214 this.firstName = firstName; 215 } 216 217 public void setMiddleName(String middleName) { 218 this.middleName = middleName; 219 } 220 221 public void setLastName(String lastName) { 222 this.lastName = lastName; 223 } 224 225 public void setNamePrefix(String namePrefix) { 226 this.namePrefix = namePrefix; 227 } 228 229 public void setNameTitle(String nameTitle) { 230 this.nameTitle = nameTitle; 231 } 232 233 @Override 234 public String getNameSuffix() { 235 return nameSuffix; 236 } 237 238 public void setNameSuffix(String nameSuffix) { 239 this.nameSuffix = nameSuffix; 240 } 241 242 public boolean getActive() { 243 return active; 244 } 245 246 @Override 247 public boolean isActive() { 248 return active; 249 } 250 251 public void setActive(boolean active) { 252 this.active = active; 253 } 254 255 public boolean getDefaultValue() { 256 return defaultValue; 257 } 258 259 @Override 260 public boolean isDefaultValue() { 261 return defaultValue; 262 } 263 264 public void setDefaultValue(boolean defaultValue) { 265 this.defaultValue = defaultValue; 266 } 267 268 @Override 269 public String getNoteMessage() { 270 return noteMessage; 271 } 272 273 public void setNoteMessage(String noteMessage) { 274 this.noteMessage = noteMessage; 275 } 276 277 public void setNameChangedDate(DateTime nameChangedDate) { 278 if ( nameChangedDate != null ) { 279 this.nameChangedDate = new Timestamp( nameChangedDate.getMillis() ); 280 } else { 281 this.nameChangedDate = null; 282 } 283 } 284 285 public void setNameChangedTimestamp(Timestamp nameChangedDate) { 286 this.nameChangedDate = nameChangedDate; 287 } 288 289 public boolean getSuppressName() { 290 return suppressName; 291 } 292 293 public void setSuppressName(boolean suppressName) { 294 this.suppressName = suppressName; 295 } 296 297}