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.entity; 17 18 import org.kuali.rice.core.api.mo.common.GloballyUnique; 19 import org.kuali.rice.core.api.mo.common.Historical; 20 import org.kuali.rice.core.api.mo.common.Identifiable; 21 import org.kuali.rice.core.api.mo.common.Versioned; 22 import org.kuali.rice.core.api.mo.common.active.Inactivatable; 23 import org.kuali.rice.kim.api.identity.affiliation.EntityAffiliationContract; 24 import org.kuali.rice.kim.api.identity.affiliation.EntityAffiliationHistoryContract; 25 import org.kuali.rice.kim.api.identity.citizenship.EntityCitizenshipContract; 26 import org.kuali.rice.kim.api.identity.citizenship.EntityCitizenshipHistoryContract; 27 import org.kuali.rice.kim.api.identity.employment.EntityEmploymentHistoryContract; 28 import org.kuali.rice.kim.api.identity.external.EntityExternalIdentifierHistoryContract; 29 import org.kuali.rice.kim.api.identity.name.EntityNameContract; 30 import org.kuali.rice.kim.api.identity.name.EntityNameHistoryContract; 31 import org.kuali.rice.kim.api.identity.personal.EntityBioDemographicsContract; 32 import org.kuali.rice.kim.api.identity.personal.EntityBioDemographicsHistoryContract; 33 import org.kuali.rice.kim.api.identity.personal.EntityEthnicityHistoryContract; 34 import org.kuali.rice.kim.api.identity.principal.PrincipalContract; 35 import org.kuali.rice.kim.api.identity.principal.PrincipalHistoryContract; 36 import org.kuali.rice.kim.api.identity.privacy.EntityPrivacyHistoryContract; 37 import org.kuali.rice.kim.api.identity.residency.EntityResidencyHistoryContract; 38 import org.kuali.rice.kim.api.identity.type.EntityTypeContactInfoHistoryContract; 39 import org.kuali.rice.kim.api.identity.visa.EntityVisaHistoryContract; 40 41 import java.util.List; 42 43 44 /** 45 * Represents an Entity (person/vendor/system) within the Rice system. 46 * 47 * @author Kuali Rice Team (rice.collab@kuali.org) 48 * 49 */ 50 public interface EntityHistoryContract extends EntityContract, Historical { 51 52 /** 53 * Gets this {@link EntityContract}'s identity types 54 * @return the List of {@link org.kuali.rice.kim.api.identity.type.EntityTypeContactInfoContract}S for this {@link EntityContract}. 55 * The returned List will never be null, an empty List will be assigned and returned if needed. 56 */ 57 List<? extends EntityTypeContactInfoHistoryContract> getEntityTypeContactInfos(); 58 59 /** 60 * Gets this {@link EntityContract}'s principals 61 * @return the List of {@link PrincipalContract}s for this {@link EntityContract}. 62 * The returned List will never be null, an empty List will be assigned and returned if needed. 63 */ 64 List<? extends PrincipalHistoryContract> getPrincipals(); 65 66 67 /** 68 * Gets this {@link EntityContract}'s external identifiers 69 * @return the List of {@link org.kuali.rice.kim.api.identity.external.EntityExternalIdentifierContract}S for this {@link EntityContract}. 70 * The returned List will never be null, an empty List will be assigned and returned if needed. 71 */ 72 List<? extends EntityExternalIdentifierHistoryContract> getExternalIdentifiers(); 73 74 /** 75 * Gets this {@link EntityContract}'s affiliations 76 * @return the List of {@link EntityAffiliationContract}S for this {@link EntityContract}. 77 * The returned List will never be null, an empty List will be assigned and returned if needed. 78 */ 79 List<? extends EntityAffiliationHistoryContract> getAffiliations(); 80 81 /** 82 * Gets this {@link EntityContract}'s names 83 * @return the List of {@link EntityNameContract}S for this {@link EntityContract}. 84 * The returned List will never be null, an empty List will be assigned and returned if needed. 85 */ 86 List<? extends EntityNameHistoryContract> getNames(); 87 88 89 /** 90 * Gets this {@link EntityContract}'s employment information List 91 * @return the List of {@link org.kuali.rice.kim.api.identity.employment.EntityEmploymentContract}S for this {@link EntityContract}. 92 * The returned List will never be null, an empty List will be assigned and returned if needed. 93 */ 94 List<? extends EntityEmploymentHistoryContract> getEmploymentInformation(); 95 96 /** 97 * Gets this {@link EntityContract}'s privacy preferences 98 * @return the {@link org.kuali.rice.kim.api.identity.privacy.EntityPrivacyPreferences} for this {@link EntityContract}, 99 * or null if none has been assigned. 100 */ 101 EntityPrivacyHistoryContract getPrivacyPreferences(); 102 103 /** 104 * Gets this {@link EntityContract}'s demographic information 105 * @return the {@link EntityBioDemographicsContract} for this {@link EntityContract}, 106 * or null if none has been assigned. 107 */ 108 EntityBioDemographicsHistoryContract getBioDemographics(); 109 110 /** 111 * Gets this {@link EntityContract}'s citizenship information 112 * @return the List of {@link EntityCitizenshipContract}s for this {@link EntityContract}. 113 * The returned List will never be null, an empty List will be assigned and returned if needed. 114 */ 115 List<? extends EntityCitizenshipHistoryContract> getCitizenships(); 116 117 /** 118 * Gets this {@link EntityContract}'s identity type for the given type code 119 * @param entityTypeCode the type code 120 * @return the EntityEntityType object corresponding to the given code or null if this 121 * identity does not have data for that type. 122 */ 123 EntityTypeContactInfoHistoryContract getEntityTypeContactInfoByTypeCode(String entityTypeCode); 124 125 /** 126 * Gets this {@link EntityContract}'s employment information 127 * @return the primary {@link org.kuali.rice.kim.api.identity.employment.EntityEmploymentContract} for this {@link EntityContract}, 128 * or null if none has been assigned. 129 */ 130 EntityEmploymentHistoryContract getPrimaryEmployment(); 131 132 /** 133 * Gets this {@link EntityContract}'s default affiliation 134 * @return the default {@link EntityAffiliationContract} for the identity. If no default is defined, then 135 * it returns the first one found. If none are defined, it returns null. 136 */ 137 EntityAffiliationHistoryContract getDefaultAffiliation(); 138 139 /** 140 * Gets this {@link EntityContract}'s external identifier for the given type code 141 * @param externalIdentifierTypeCode the type code 142 * @return the {@link org.kuali.rice.kim.api.identity.external.EntityExternalIdentifierContract} for this {@link EntityContract}, or null if none has been assigned. 143 */ 144 EntityExternalIdentifierHistoryContract getEntityExternalIdentifier( String externalIdentifierTypeCode ); 145 146 /** 147 * Gets this {@link EntityContract}'s default name 148 * @return the default {@link EntityNameContract} record for the identity. If no default is defined, then 149 * it returns the first one found. If none are defined, it returns null. 150 */ 151 EntityNameHistoryContract getDefaultName(); 152 153 /** 154 * Gets this {@link EntityContract}'s ethnicities 155 * @return the List of {@link org.kuali.rice.kim.api.identity.personal.EntityEthnicityContract}S for this {@link EntityContract}. 156 * The returned List will never be null, an empty List will be assigned and returned if needed. 157 */ 158 public List<? extends EntityEthnicityHistoryContract> getEthnicities(); 159 160 /** 161 * Gets this {@link EntityContract}'s residencies 162 * @return the List of {@link org.kuali.rice.kim.api.identity.residency.EntityResidencyContract}S for this {@link EntityContract}. 163 * The returned List will never be null, an empty List will be assigned and returned if needed. 164 */ 165 public List<? extends EntityResidencyHistoryContract> getResidencies(); 166 167 /** 168 * Gets this {@link EntityContract}'s visas 169 * @return the List of {@link org.kuali.rice.kim.api.identity.visa.EntityVisaContract}S for this {@link EntityContract}. 170 * The returned List will never be null, an empty List will be assigned and returned if needed. 171 */ 172 public List<? extends EntityVisaHistoryContract> getVisas(); 173 174 }