001 /*----------------------------------------------------------------------- 002 * Copyright (C) 2006 003 * Associated Universities, Inc. Washington DC, USA. 004 * This program is free software; you can redistribute it and/or 005 * modify it under the terms of the GNU General Public License as 006 * published by the Free Software Foundation; either version 2 of 007 * the License, or (at your option) any later version. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * Correspondence concerning this software should be addressed as follows: 015 * Internet email: switz@nrao.edu 016 * Postal address: User Database 017 * National Radio Astronomy Observatory 018 * Post Office Box 0 019 * Socorro, NM 87801 USA 020 *-----------------------------------------------------------------------*/ 021 package edu.nrao.sss.model.user; 022 023 import java.util.HashSet; 024 import java.util.Iterator; 025 import java.util.Set; 026 027 import edu.nrao.sss.xml.XMLTransform; 028 029 public class Address extends Contact implements XMLable { 030 031 private static final long serialVersionUID = 1L; 032 033 private AddressCountry addressCountry; 034 035 private AddressState addressState; 036 037 private Set<AddressType> addressTypes; 038 039 private String city; 040 041 private String postalCode; 042 043 private String region; 044 045 private String street1; 046 047 private String street2; 048 049 private String street3; 050 051 private String street4; 052 053 public Address() { 054 super(); 055 this.contactType = ContactType.ADDRESS; 056 } 057 058 public Address(Address address) { 059 copy(address); 060 } 061 062 public void addToAddressTypes(AddressType addressType) { 063 if (addressType == null) 064 return; 065 if (addressTypes == null) 066 addressTypes = new HashSet<AddressType>(); 067 addressTypes.add(addressType); 068 } 069 070 public void copy(Address address) { 071 super.copy(address); 072 set(address); 073 } 074 075 public boolean equals(Object obj) { 076 if (null == obj) 077 return false; 078 if (!(obj instanceof Address)) 079 return false; 080 else { 081 Address mObj = (Address) obj; 082 return (this.getId() == mObj.getId()); 083 } 084 } 085 086 public AddressCountry getAddressCountry() { 087 return addressCountry; 088 } 089 090 public AddressState getAddressState() { 091 return addressState; 092 } 093 094 public Set<AddressType> getAddressTypes() { 095 if (addressTypes == null) 096 addressTypes = new HashSet<AddressType>(); 097 return addressTypes; 098 } 099 100 public String getCity() { 101 return city; 102 } 103 104 public String getPostalCode() { 105 return postalCode; 106 } 107 108 public String getRegion() { 109 return region; 110 } 111 112 public String getStreet1() { 113 return street1; 114 } 115 116 public String getStreet2() { 117 return street2; 118 } 119 120 public String getStreet3() { 121 return street3; 122 } 123 124 public String getStreet4() { 125 return street4; 126 } 127 128 private void set(Address address) { 129 this.setAddressCountry(address.getAddressCountry()); 130 this.setAddressState(address.getAddressState()); 131 this.setPostalCode(address.getPostalCode()); 132 this.setRegion(address.getRegion()); 133 this.setCity(address.getCity()); 134 this.setStreet1(address.getStreet1()); 135 this.setStreet2(address.getStreet2()); 136 this.setStreet3(address.getStreet3()); 137 this.setStreet4(address.getStreet4()); 138 addressTypes = new HashSet<AddressType>(); 139 for (Iterator<AddressType> iter = address.getAddressTypes().iterator(); iter 140 .hasNext();) { 141 this.addToAddressTypes(iter.next()); 142 } 143 } 144 145 public void setAddressCountry(AddressCountry addressCountry) { 146 this.addressCountry = addressCountry; 147 } 148 149 public void setAddressState(AddressState addressState) { 150 this.addressState = addressState; 151 } 152 153 public void setAddressTypes(Set<AddressType> addressTypes) { 154 this.addressTypes = addressTypes; 155 } 156 157 public void setCity(String city) { 158 this.city = city; 159 } 160 161 public void setPostalCode(String postalCode) { 162 this.postalCode = postalCode; 163 } 164 165 public void setRegion(String region) { 166 this.region = region; 167 } 168 169 public void setStreet1(String street1) { 170 this.street1 = street1; 171 } 172 173 public void setStreet2(String street2) { 174 this.street2 = street2; 175 } 176 177 public void setStreet3(String street3) { 178 this.street3 = street3; 179 } 180 181 public void setStreet4(String street4) { 182 this.street4 = street4; 183 } 184 185 public final String toXML() { 186 StringBuffer result = new StringBuffer(); 187 String slines[] = { getStreet1(), getStreet2(), getStreet3(), 188 getStreet4() }; 189 AddressCountry aC = getAddressCountry(); 190 AddressState aS = getAddressState(); 191 192 if (isDefaultContact()) { 193 result.append("<default-postal-address>\n"); 194 } else { 195 result.append("<additional-postal-address>\n"); 196 } 197 198 for (AddressType at : getAddressTypes()) { 199 result.append("<address-type>" 200 + XMLTransform.encode(at.getAddressType()) 201 + "</address-type>\n"); 202 } 203 204 for (String sline : slines) { 205 if (sline != null && sline.trim().length() > 0) 206 result.append("<streetline>" + XMLTransform.encode(sline) 207 + "</streetline>\n"); 208 } 209 210 if (getCity() != null) 211 result.append("<city>" + XMLTransform.encode(getCity()) 212 + "</city>\n"); 213 214 if (aS != null) 215 result 216 .append("<state>" 217 + XMLTransform.encode(aS.getStateFullName()) 218 + "</state>\n"); 219 220 if (getRegion() != null && getRegion().trim().length() > 0) 221 result.append("<region>" + XMLTransform.encode(getRegion()) 222 + "</region>\n"); 223 224 if (aC != null) 225 result.append("<country>" 226 + XMLTransform.encode(aC.getAddressCountry()) 227 + "</country>\n"); 228 229 if (getPostalCode() != null && getPostalCode().trim().length() > 0) 230 result 231 .append("<postal-code>" 232 + XMLTransform.encode(getPostalCode()) 233 + "</postal-code>\n"); 234 235 if (isDefaultContact()) { 236 result.append("</default-postal-address>\n"); 237 } else { 238 result.append("</additional-postal-address>\n"); 239 } 240 return result.toString(); 241 } 242 243 }