blob: 8d432572199c5aab65611db3cb50e9d9086588a7 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.directory.fortress.core.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
/**
* This entity is stored on {@link User} and is used to store postal address information in LDAP.
* <p>
* Contains data retrieved from the following LDAP attributes:
* <p>
* <ul>
* <li> ------------------------------------------</li>
* <li> <code>postalAddress</code></li>
* <li> <code>st</code></li>
* <li> <code>postalCode</code></li>
* <li> <code>postOfficeBox</code></li>
* <li> <code>c</code></li>
* <li> ------------------------------------------</li>
* </ul>
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
@XmlRootElement(name = "fortAddress")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "address", propOrder =
{
"addresses",
"city",
"state",
"country",
"postalCode",
"postOfficeBox",
"building",
"departmentNumber",
"roomNumber"
})
public class Address implements Serializable
{
private static final long serialVersionUID = 1L;
//@XmlElement(nillable = true)
private List<String> addresses;
private String city;
private String state;
private String country;
private String postalCode;
private String postOfficeBox;
private String building;
private String departmentNumber;
private String roomNumber;
/**
* This attribute is bound for {@code postalAddress} attribute on {@code organizationalPerson} object class.
*
* @param address contains a String value containing address line that is bound for multi-occurring {@code postalAddress} attribute.
*/
public void setAddress( String address )
{
if ( addresses == null )
{
addresses = new ArrayList<>();
}
addresses.add( address );
}
/**
* Return an ArrayList of type String that contains zero or more values retrieved from {@code postalAddress} attribute from {@code organizationalPerson} object class.
*
* @return a non-null ArrayList of type String that contains zero or more address lines associated with the user.
*/
public List<String> getAddresses()
{
if ( addresses == null )
{
addresses = new ArrayList<>();
}
return addresses;
}
/**
* Set an ArrayList of type String that contains one or more values bound for {@code postalAddress} attribute on {@code organizationalPerson} object class.
*
* @param addresses contains ArrayList of type String with one or more address lines associated with the user.
*/
public void setAddresses( List<String> addresses )
{
this.addresses = addresses;
}
/**
* Return a String that contains a value retrieved from {@code l} (location) attribute from {@code organizationalPerson} object class.
*
* @return a String that contains city associated with the user.
*/
public String getCity()
{
return city;
}
/**
* Accept a String that contains a value {@code l} (location) bound for {@code organizationalPerson} object class.
*
* @param city associated with the user.
*/
public void setCity( String city )
{
this.city = city;
}
/**
* Return a String that contains a value retrieved from {@code st} (state) attribute from {@code organizationalPerson} object class.
*
* @return a String that contains state associated with the user.
*/
public String getState()
{
return state;
}
/**
* Accept a String that contains a value {@code st} (state) bound for {@code organizationalPerson} object class.
*
* @param state associated with the user.
*/
public void setState( String state )
{
this.state = state;
}
/**
* TODO: Add support for this attribute:
* Return a String that contains a value retrieved from {@code c} (country) attribute from {@code c} object class.
*
* @return a String that contains country associated with the user.
*/
public String getCountry()
{
return country;
}
/**
* TODO: Add support for this attribute:
* Accept a String that contains a value {@code c} (country) bound for {@code c} object class.
*
* @param country associated with the user.
*/
public void setCountry( String country )
{
this.country = country;
}
/**
* Return a String that contains a value retrieved from {@code postalCode} attribute from {@code organizationalPerson} object class.
*
* @return a String that contains postalCode associated with the user.
*/
public String getPostalCode()
{
return postalCode;
}
/**
* Accept a String that contains a value {@code postalCode} bound for {@code organizationalPerson} object class.
*
* @param postalCode associated with the user.
*/
public void setPostalCode( String postalCode )
{
this.postalCode = postalCode;
}
/**
* Return a String that contains a value retrieved from {@code postOfficeBox} attribute from {@code organizationalPerson} object class.
*
* @return a String that contains postOfficeBox associated with the user.
*/
public String getPostOfficeBox()
{
return postOfficeBox;
}
/**
* Accept a String that contains a value {@code postOfficeBox} bound for {@code organizationalPerson} object class.
*
* @param postOfficeBox associated with the user.
*/
public void setPostOfficeBox( String postOfficeBox )
{
this.postOfficeBox = postOfficeBox;
}
/**
* Return a String that contains a value retrieved from {@code building} attribute from {@code organizationalPerson} object class.
*
* @return a String that contains building associated with the user.
*/
public String getBuilding()
{
return building;
}
/**
* Accept a String that contains a value {@code building} bound for {@code organizationalPerson} object class.
*
* @param building associated with the user.
*/
public void setBuilding( String building )
{
this.building = building;
}
/**
* Return a String that contains a value retrieved from {@code departmentNumber} attribute from {@code organizationalPerson} object class.
*
* @return a String that contains departmentNumber associated with the user.
*/
public String getDepartmentNumber()
{
return departmentNumber;
}
/**
* Accept a String that contains a value {@code departmentNumber} bound for {@code inetOrgperson} object class.
*
* @param departmentNumber associated with the user.
*/
public void setDepartmentNumber( String departmentNumber )
{
this.departmentNumber = departmentNumber;
}
/**
* Return a String that contains a value retrieved from {@code roomNumber} attribute from {@code organizationalPerson} object class.
*
* @return a String that contains roomNumber associated with the user.
*/
public String getRoomNumber()
{
return roomNumber;
}
/**
* Accept a String that contains a value {@code roomNumber} bound for {@code inetOrgperson} object class.
*
* @param roomNumber associated with the user.
*/
public void setRoomNumber( String roomNumber )
{
this.roomNumber = roomNumber;
}
/**
* Override the standard equals on object to use the attributes of this class.
*
* @param o
* @return boolean value
*/
@Override
public boolean equals( Object o )
{
if ( this == o )
{
return true;
}
if ( ( o == null ) || ( getClass() != o.getClass() ) )
{
return false;
}
Address address = ( Address ) o;
if ( addresses != null ? !addresses.equals( address.addresses ) : address.addresses != null )
{
return false;
}
if ( building != null ? !building.equals( address.building ) : address.building != null )
{
return false;
}
if ( city != null ? !city.equals( address.city ) : address.city != null )
{
return false;
}
if ( country != null ? !country.equals( address.country ) : address.country != null )
{
return false;
}
if ( departmentNumber != null ? !departmentNumber.equals( address.departmentNumber )
: address.departmentNumber != null )
{
return false;
}
if ( postOfficeBox != null ? !postOfficeBox.equals( address.postOfficeBox ) : address.postOfficeBox != null )
{
return false;
}
if ( postalCode != null ? !postalCode.equals( address.postalCode ) : address.postalCode != null )
{
return false;
}
if ( roomNumber != null ? !roomNumber.equals( address.roomNumber ) : address.roomNumber != null )
{
return false;
}
return !( state != null ? !state.equals( address.state ) : address.state != null );
}
/**
* Override the standard hashCode on object to use attributes of class.
*
* @return int
*/
@Override
public int hashCode()
{
int result = addresses != null ? addresses.hashCode() : 0;
result = 31 * result + ( city != null ? city.hashCode() : 0 );
result = 31 * result + ( state != null ? state.hashCode() : 0 );
result = 31 * result + ( country != null ? country.hashCode() : 0 );
result = 31 * result + ( postalCode != null ? postalCode.hashCode() : 0 );
result = 31 * result + ( postOfficeBox != null ? postOfficeBox.hashCode() : 0 );
result = 31 * result + ( building != null ? building.hashCode() : 0 );
result = 31 * result + ( departmentNumber != null ? departmentNumber.hashCode() : 0 );
result = 31 * result + ( roomNumber != null ? roomNumber.hashCode() : 0 );
return result;
}
/**
* @see Object#toString()
*/
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append( "Address object: \n" );
if ( roomNumber != null )
{
sb.append( " roomNumber :" ).append( roomNumber ).append( '\n' );
}
if ( departmentNumber != null )
{
sb.append( " departmentNumber :" ).append( departmentNumber ).append( '\n' );
}
if ( building != null )
{
sb.append( " building :" ).append( building ).append( '\n' );
}
if ( addresses != null )
{
sb.append( " addresses : " );
boolean isFirst = true;
for ( String addr : addresses )
{
if ( isFirst )
{
isFirst = false;
}
else
{
sb.append( ", " );
}
sb.append( addr );
}
sb.append( '\n' );
}
if ( city != null )
{
sb.append( " city :" ).append( city ).append( '\n' );
}
if ( postalCode != null )
{
sb.append( " postalCode :" ).append( postalCode ).append( '\n' );
}
if ( postOfficeBox != null )
{
sb.append( " postOfficeBox :" ).append( postOfficeBox ).append( '\n' );
}
if ( state != null )
{
sb.append( " state :" ).append( state ).append( '\n' );
}
if ( country != null )
{
sb.append( " country :" ).append( country ).append( '\n' );
}
return sb.toString();
}
}