1 /**
2 * Copyright 2005-2013 The Kuali Foundation
3 *
4 * Licensed under the Educational Community License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.opensource.org/licenses/ecl2.php
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.kuali.rice.kim.api.identity.name;
17
18 import org.joda.time.DateTime;
19 import org.kuali.rice.core.api.mo.common.Defaultable;
20 import org.kuali.rice.core.api.mo.common.GloballyUnique;
21 import org.kuali.rice.core.api.mo.common.Identifiable;
22 import org.kuali.rice.core.api.mo.common.Versioned;
23 import org.kuali.rice.core.api.mo.common.active.Inactivatable;
24 import org.kuali.rice.kim.api.identity.CodedAttributeContract;
25
26 import java.util.Date;
27 /**
28 * This contract represents the name information associated with an Entity.
29 *
30 * @author Kuali Rice Team (rice.collab@kuali.org)
31 */
32 public interface EntityNameContract extends Versioned, GloballyUnique, Defaultable, Inactivatable, Identifiable {
33 public static final String NAME_CHANGED_DATE_FORMAT = "yyyy-MM-dd";
34
35 /**
36 * Gets this {@link Entity}'s id.
37 * @return the id for this {@link EntityNameContract}, or null if none has been assigned.
38 */
39 String getEntityId();
40
41 /**
42 * Gets this {@link EntityNameContract}'s TypeContract.
43 * @return the type for this {@link EntityNameContract}, or null if none has been assigned.
44 */
45 CodedAttributeContract getNameType();
46
47 /**
48 * Gets this {@link EntityNameContract}'s first name.
49 * @return the first name for this {@link EntityNameContract}, or null if none has been assigned.
50 */
51 String getFirstName();
52
53 /**
54 * Gets this {@link EntityNameContract}'s unmasked first name.
55 * @return the unmasked first name for this {@link EntityNameContract}, or null if none has been assigned.
56 */
57 String getFirstNameUnmasked();
58
59 /**
60 * Gets this {@link EntityNameContract}'s middle name.
61 * @return the middle name for this {@link EntityNameContract}, or null if none has been assigned.
62 */
63 String getMiddleName();
64
65 /**
66 * Gets this {@link EntityNameContract}'s unmasked middle name.
67 * @return the unmasked middle name for this {@link EntityNameContract}, or null if none has been assigned.
68 */
69 String getMiddleNameUnmasked();
70
71 /**
72 * Gets this {@link EntityNameContract}'s last name.
73 * @return the last name for this {@link EntityNameContract}, or null if none has been assigned.
74 */
75 String getLastName();
76
77 /**
78 * Gets this {@link EntityNameContract}'s unmasked last name.
79 * @return the unmasked last name for this {@link EntityNameContract}, or null if none has been assigned.
80 */
81 String getLastNameUnmasked();
82
83 /**
84 * Gets this {@link EntityNameContract}'s name prefix.
85 * Corresponds to PESC NamePrefix.
86 * @return the name prefix for this {@link EntityNameContract}, or null if none has been assigned.
87 */
88 String getNamePrefix();
89
90 /**
91 * Gets this {@link EntityNameContract}'s unmasked name prefix.
92 * Corresponds to PESC NamePrefix.
93 * @return the unmasked name prefix for this {@link EntityNameContract}, or null if none has been assigned.
94 */
95 String getNamePrefixUnmasked();
96
97 /**
98 * Gets this {@link EntityNameContract}'s name title.
99 * 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 }