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 }