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;
017
018import org.kuali.rice.core.api.util.type.KualiDecimal;
019import org.kuali.rice.krad.bo.ExternalizableBusinessObject;
020
021import java.util.List;
022import java.util.Map;
023
024/**
025 * Person object for use by the KNS and KNS-based applications.  This provides an abstraction layer
026 * between application code and the KIM objects to simplify use. 
027 * 
028 * @author Kuali Rice Team (rice.collab@kuali.org)
029 * 
030 */
031public interface Person extends ExternalizableBusinessObject {
032        
033        String getPrincipalId();
034        String getPrincipalName();
035        String getEntityId();
036        String getEntityTypeCode();
037
038        /**
039         * The first name from the default name record for the entity.
040         */
041        String getFirstName();
042        String getFirstNameUnmasked();
043        String getMiddleName();
044        String getMiddleNameUnmasked();
045        String getLastName();
046        String getLastNameUnmasked();
047
048        /*
049         * Method which composites the first, middle and last names.
050         */
051        String getName();
052        String getNameUnmasked();
053
054        String getEmailAddress();
055        String getEmailAddressUnmasked();
056
057        /**
058         * Returns line1 of the default address for the Person.  Will lazy-load the information from the
059         * IdentityManagementService if requested.
060         */
061        String getAddressLine1();
062        String getAddressLine1Unmasked();
063        /**
064         * Returns line2 of the default address for the Person.  Will lazy-load the information from the
065         * IdentityManagementService if requested.
066         */
067        String getAddressLine2();
068        String getAddressLine2Unmasked();
069
070        /**
071         * Returns line3 of the default address for the Person.  Will lazy-load the information from the
072         * IdentityManagementService if requested.
073         */
074        String getAddressLine3();
075        String getAddressLine3Unmasked();
076        /**
077         * Returns the city name from the default address for the Person.  Will lazy-load the information from the
078         * IdentityManagementService if requested.
079         */
080        String getAddressCity();
081        String getAddressCityUnmasked();
082        /**
083         * Returns the state code from the default address for the Person.  Will lazy-load the information from the
084         * IdentityManagementService if requested.
085         */
086        String getAddressStateProvinceCode();
087        String getAddressStateProvinceCodeUnmasked();
088        /**
089         * Returns the postal code from the default address for the Person.  Will lazy-load the information from the
090         * IdentityManagementService if requested.
091         */
092        String getAddressPostalCode();
093        String getAddressPostalCodeUnmasked();
094        /**
095         * Returns the country code from the default address for the Person.  Will lazy-load the information from the
096         * IdentityManagementService if requested.
097         */
098        String getAddressCountryCode();
099        String getAddressCountryCodeUnmasked();
100
101        /** Returns the default phone number for the entity.
102         */
103        String getPhoneNumber();
104        String getPhoneNumberUnmasked();
105
106        String getCampusCode();
107
108        Map<String,String> getExternalIdentifiers();
109
110        /** Checks whether the person has an affiliation of a particular type: staff/faculty/student/etc... */
111        boolean hasAffiliationOfType( String affiliationTypeCode );
112
113        List<String> getCampusCodesForAffiliationOfType(String affiliationTypeCode);
114
115        String getEmployeeStatusCode();
116        String getEmployeeTypeCode();
117        KualiDecimal getBaseSalaryAmount();
118
119        String getExternalId( String externalIdentifierTypeCode );
120
121        String getPrimaryDepartmentCode();
122
123        String getEmployeeId();
124        boolean isActive();
125}