View Javadoc

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 }