001    /**
002     * Copyright 2005-2011 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;
017    
018    import org.kuali.rice.core.api.util.type.KualiDecimal;
019    import org.kuali.rice.krad.bo.ExternalizableBusinessObject;
020    
021    import java.util.List;
022    import 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     */
031    public 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    }