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.api.identity.name;
017
018import org.joda.time.DateTime;
019import org.kuali.rice.core.api.mo.common.Defaultable;
020import org.kuali.rice.core.api.mo.common.GloballyUnique;
021import org.kuali.rice.core.api.mo.common.Identifiable;
022import org.kuali.rice.core.api.mo.common.Versioned;
023import org.kuali.rice.core.api.mo.common.active.Inactivatable;
024import org.kuali.rice.kim.api.identity.CodedAttributeContract;
025
026import 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  */
032public 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}