001 /**
002 * Copyright 2005-2014 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.kim.api.identity.name;
017
018 import org.joda.time.DateTime;
019 import org.kuali.rice.core.api.mo.common.Defaultable;
020 import org.kuali.rice.core.api.mo.common.GloballyUnique;
021 import org.kuali.rice.core.api.mo.common.Identifiable;
022 import org.kuali.rice.core.api.mo.common.Versioned;
023 import org.kuali.rice.core.api.mo.common.active.Inactivatable;
024 import org.kuali.rice.kim.api.identity.CodedAttributeContract;
025
026 import java.util.Date;
027 /**
028 * This contract represents the name information associated with an Entity.
029 *
030 * @author Kuali Rice Team (rice.collab@kuali.org)
031 */
032 public interface EntityNameContract extends Versioned, GloballyUnique, Defaultable, Inactivatable, Identifiable {
033 public static final String NAME_CHANGED_DATE_FORMAT = "yyyy-MM-dd";
034
035 /**
036 * Gets this {@link Entity}'s id.
037 * @return the id for this {@link EntityNameContract}, or null if none has been assigned.
038 */
039 String getEntityId();
040
041 /**
042 * Gets this {@link EntityNameContract}'s TypeContract.
043 * @return the type for this {@link EntityNameContract}, or null if none has been assigned.
044 */
045 CodedAttributeContract getNameType();
046
047 /**
048 * Gets this {@link EntityNameContract}'s first name.
049 * @return the first name for this {@link EntityNameContract}, or null if none has been assigned.
050 */
051 String getFirstName();
052
053 /**
054 * Gets this {@link EntityNameContract}'s unmasked first name.
055 * @return the unmasked first name for this {@link EntityNameContract}, or null if none has been assigned.
056 */
057 String getFirstNameUnmasked();
058
059 /**
060 * Gets this {@link EntityNameContract}'s middle name.
061 * @return the middle name for this {@link EntityNameContract}, or null if none has been assigned.
062 */
063 String getMiddleName();
064
065 /**
066 * Gets this {@link EntityNameContract}'s unmasked middle name.
067 * @return the unmasked middle name for this {@link EntityNameContract}, or null if none has been assigned.
068 */
069 String getMiddleNameUnmasked();
070
071 /**
072 * Gets this {@link EntityNameContract}'s last name.
073 * @return the last name for this {@link EntityNameContract}, or null if none has been assigned.
074 */
075 String getLastName();
076
077 /**
078 * Gets this {@link EntityNameContract}'s unmasked last name.
079 * @return the unmasked last name for this {@link EntityNameContract}, or null if none has been assigned.
080 */
081 String getLastNameUnmasked();
082
083 /**
084 * Gets this {@link EntityNameContract}'s name prefix.
085 * Corresponds to PESC NamePrefix.
086 * @return the name prefix for this {@link EntityNameContract}, or null if none has been assigned.
087 */
088 String getNamePrefix();
089
090 /**
091 * Gets this {@link EntityNameContract}'s unmasked name prefix.
092 * Corresponds to PESC NamePrefix.
093 * @return the unmasked name prefix for this {@link EntityNameContract}, or null if none has been assigned.
094 */
095 String getNamePrefixUnmasked();
096
097 /**
098 * Gets this {@link EntityNameContract}'s name title.
099 * Corresponds to PESC NameTitle.
100 * @return the name title for this {@link EntityNameContract}, or null if none has been assigned.
101 */
102 String getNameTitle();
103
104 /**
105 * Gets this {@link EntityNameContract}'s unmasked name title.
106 * Corresponds to PESC NameTitle.
107 * @return the unmasked name title for this {@link EntityNameContract}, or null if none has been assigned.
108 */
109 String getNameTitleUnmasked();
110
111
112 /**
113 * Gets this {@link EntityNameContract}'s suffix.
114 * Corresponds to PESC NameSuffix.
115 * @return the suffix for this {@link EntityNameContract}, or null if none has been assigned.
116 */
117 String getNameSuffix();
118
119 /**
120 * Gets this {@link EntityNameContract}'s unmasked suffix.
121 * Corresponds to PESC NameSuffix.
122 * @return the unmasked suffix for this {@link EntityNameContract}, or null if none has been assigned.
123 */
124 String getNameSuffixUnmasked();
125
126 /**
127 * Return the entire name as the person or system wants it displayed.
128 * Corresponds to PESC CompositeName.
129 * @return the complete name in the format of "lastName, firstName middleName"
130 */
131 String getCompositeName();
132
133 /**
134 * Gets this {@link EntityNameContract}'s unmasked formatted name.
135 * Corresponds to PESC CompositeName.
136 * @return the complete name in the format of "lastName, firstName middleName"
137 */
138 String getCompositeNameUnmasked();
139
140 /**
141 * Get the note associated with this {@link EntityNameContract}
142 * Corresponds to PESC NoteMessage
143 * @return the message associated with this EntityName
144 */
145 String getNoteMessage();
146
147 /**
148 * Get the name change date {@link EntityNameContract}
149 * Corresponds to PESC name changed date
150 * @return the name change date of this EntityName
151 */
152 DateTime getNameChangedDate();
153
154 /**
155 * Returns a boolean value that determines if email fields should be suppressed.
156 * @return boolean value that determines if email should be suppressed.
157 */
158 boolean isSuppressName();
159 }