001    /**
002     * Copyright 2005-2013 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.address;
017    
018    import org.joda.time.DateTime;
019    import org.kuali.rice.core.api.mo.common.Defaultable;
020    import org.kuali.rice.core.api.mo.common.GloballyUnique;
021    import org.kuali.rice.core.api.mo.common.Identifiable;
022    import org.kuali.rice.core.api.mo.common.Versioned;
023    import org.kuali.rice.core.api.mo.common.active.Inactivatable;
024    import org.kuali.rice.kim.api.identity.CodedAttributeContract;
025    
026    /**
027     * address information for a KIM identity
028     * 
029     * @author Kuali Rice Team (rice.collab@kuali.org)
030     *
031     */
032    public interface EntityAddressContract extends Versioned, GloballyUnique, Defaultable, Inactivatable, Identifiable {
033    
034        /**
035         * Gets this id of the parent identity object.
036         * @return the identity id for this {@link EntityAddressContract}
037         */
038        String getEntityId();
039    
040        /**
041         * Gets this entityTypeCode of the {@link EntityAddressContract}'s object.
042         * @return the identity type code for this {@link EntityAddressContract}
043         */
044        String getEntityTypeCode();
045    
046        /**
047         * Gets this {@link EntityAddressContract}'s address type code.
048         * @return the address type for this {@link EntityAddressContract}, or null if none has been assigned.
049         */
050            CodedAttributeContract getAddressType();
051    
052        /**
053         * Returns the attention line for this {@link EntityAddressContract}
054         * Corresponds to PESC AttentionLine
055         * @return the attention line
056         */
057        String getAttentionLine();
058    
059        /**
060         * Gets this {@link EntityAddressContract}'s first line.
061         * @return the first line for this {@link EntityAddressContract}, or null if none has been assigned.
062         */
063            String getLine1();
064            
065            /**
066             * Gets this {@link EntityAddressContract}'s second line.
067             * @return the second line for this {@link EntityAddressContract}, or null if none has been assigned.
068             */
069            String getLine2();
070            
071            /**
072         * Gets this {@link EntityAddressContract}'s third line.
073         * @return the third line for this {@link EntityAddressContract}, or null if none has been assigned.
074         */
075            String getLine3();
076            
077            /**
078         * Gets this {@link EntityAddressContract}'s city name.
079         * Corresponds to PESC City.
080         * @return the city name for this {@link EntityAddressContract}, or null if none has been assigned.
081         */
082            String getCity();
083            
084            /**
085         * Gets this {@link EntityAddressContract}'s state code.
086         * Corresponds to PESC StateProvinceCode.
087         * @return the state code for this {@link EntityAddressContract}, or null if none has been assigned.
088         */
089            String getStateProvinceCode();
090            
091            /**
092         * Gets this {@link EntityAddressContract}'s postal code.
093         * @return the postal code for this {@link EntityAddressContract}, or null if none has been assigned.
094         */
095            String getPostalCode();
096            
097            /**
098         * Gets this {@link EntityAddressContract}'s country code.
099         * @return the country code for this {@link EntityAddressContract}, or null if none has been assigned.
100         */
101            String getCountryCode();
102    
103        /**
104         * Returns the unmasked attention line for this {@link EntityAddressContract}
105         * @return the unmasked attention line
106         */
107        String getAttentionLineUnmasked();
108    
109            /**
110         * Gets this {@link EntityAddressContract}'s unmasked first line.
111         * @return the unmasked first line for this {@link EntityAddressContract}, or null if none has been assigned.
112         */
113            String getLine1Unmasked();
114            
115            /**
116         * Gets this {@link EntityAddressContract}'s unmasked second line.
117         * @return the unmasked second line for this {@link EntityAddressContract}, or null if none has been assigned.
118         */
119        String getLine2Unmasked();
120        
121        /**
122         * Gets this {@link EntityAddressContract}'s unmasked third line.
123         * @return the unmasked third line for this {@link EntityAddressContract}, or null if none has been assigned.
124         */
125        String getLine3Unmasked();
126        
127        /**
128         * Gets this {@link EntityAddressContract}'s unmasked city name.
129         * @return the unmasked city name for this {@link EntityAddressContract}, or null if none has been assigned.
130         */
131        String getCityUnmasked();
132        
133        /**
134         * Gets this {@link EntityAddressContract}'s unmasked state code.
135         * @return the unmasked state code for this {@link EntityAddressContract}, or null if none has been assigned.
136         */
137        String getStateProvinceCodeUnmasked();
138        
139        /**
140         * Gets this {@link EntityAddressContract}'s unmasked postal code.
141         * @return the unmasked postal code for this {@link EntityAddressContract}, or null if none has been assigned.
142         */
143        String getPostalCodeUnmasked();
144        
145        /**
146         * Gets this {@link EntityAddressContract}'s unmasked country code.
147         * @return the unmasked country code for this {@link EntityAddressContract}, or null if none has been assigned.
148         */
149        String getCountryCodeUnmasked();
150    
151        /**
152         * Returns the {@link EntityAddressContract}'s address format
153         * Corresponds to PESC AddressFormat
154         * @return the address format or null if none is set
155         */
156        String getAddressFormat();
157    
158        /**
159         * Returns the {@link EntityAddressContract}'s modification date
160         * Corresponds to PESC ModifiedDate
161         * @return the modification date
162         */
163        DateTime getModifiedDate();
164    
165        /**
166         * Returns the {@link EntityAddressContract}'s validation date
167         * Corresponds to PESC ValidatedDate
168         * @return the validation date or null if none is set
169         */
170        DateTime getValidatedDate();
171    
172        /**
173         * Returns whether the {@link EntityAddressContract} is validated
174         * Corresponds to PESC Validated
175         * @return whether the address is validated
176         */
177        boolean isValidated();
178    
179        /**
180         * Returns the {@link EntityAddressContract}'s note/message
181         * Corresponds to PESC NoteMessage
182         * @return the note/message or null if none is set
183         */
184        String getNoteMessage();
185    
186        /**
187         * Returns a boolean value that determines if address fields should be suppressed.
188         * @return boolean value that determines if address should be suppressed.
189         */
190        boolean isSuppressAddress();
191    }