001/**
002 * Copyright 2005-2015 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 */
016package org.kuali.rice.kim.api.identity.address;
017
018import org.joda.time.DateTime;
019import org.kuali.rice.core.api.mo.common.Defaultable;
020import org.kuali.rice.core.api.mo.common.GloballyUnique;
021import org.kuali.rice.core.api.mo.common.Identifiable;
022import org.kuali.rice.core.api.mo.common.Versioned;
023import org.kuali.rice.core.api.mo.common.active.Inactivatable;
024import 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 */
032public 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}