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         * The first name from the default name record for the entity.
039         */
040        String getFirstName();
041        String getFirstNameUnmasked();
042        String getMiddleName();
043        String getMiddleNameUnmasked();
044        String getLastName();
045        String getLastNameUnmasked();
046
047        /*
048         * Method which composites the first, middle and last names.
049         */
050        String getName();
051        String getNameUnmasked();
052
053        String getEmailAddress();
054        String getEmailAddressUnmasked();
055
056        /**
057         * Returns line1 of the default address for the Person.  Will lazy-load the information from the
058         * IdentityManagementService if requested.
059         */
060        String getAddressLine1();
061        String getAddressLine1Unmasked();
062        /**
063         * Returns line2 of the default address for the Person.  Will lazy-load the information from the
064         * IdentityManagementService if requested.
065         */
066        String getAddressLine2();
067        String getAddressLine2Unmasked();
068
069        /**
070         * Returns line3 of the default address for the Person.  Will lazy-load the information from the
071         * IdentityManagementService if requested.
072         */
073        String getAddressLine3();
074        String getAddressLine3Unmasked();
075        /**
076         * Returns the city name from the default address for the Person.  Will lazy-load the information from the
077         * IdentityManagementService if requested.
078         */
079        String getAddressCity();
080        String getAddressCityUnmasked();
081        /**
082         * Returns the state code from the default address for the Person.  Will lazy-load the information from the
083         * IdentityManagementService if requested.
084         */
085        String getAddressStateProvinceCode();
086        String getAddressStateProvinceCodeUnmasked();
087        /**
088         * Returns the postal code from the default address for the Person.  Will lazy-load the information from the
089         * IdentityManagementService if requested.
090         */
091        String getAddressPostalCode();
092        String getAddressPostalCodeUnmasked();
093        /**
094         * Returns the country code from the default address for the Person.  Will lazy-load the information from the
095         * IdentityManagementService if requested.
096         */
097        String getAddressCountryCode();
098        String getAddressCountryCodeUnmasked();
099
100        /** Returns the default phone number for the entity.
101         */
102        String getPhoneNumber();
103        String getPhoneNumberUnmasked();
104
105        String getCampusCode();
106
107        Map<String,String> getExternalIdentifiers();
108
109        /** Checks whether the person has an affiliation of a particular type: staff/faculty/student/etc... */
110        boolean hasAffiliationOfType( String affiliationTypeCode );
111
112        List<String> getCampusCodesForAffiliationOfType(String affiliationTypeCode);
113
114        String getEmployeeStatusCode();
115        String getEmployeeTypeCode();
116        KualiDecimal getBaseSalaryAmount();
117
118        String getExternalId( String externalIdentifierTypeCode );
119
120        String getPrimaryDepartmentCode();
121
122        String getEmployeeId();
123        boolean isActive();
124}