001 package org.kuali.ole.patron.api; 002 003 import org.apache.commons.collections.CollectionUtils; 004 import org.apache.commons.lang.StringUtils; 005 import org.kuali.api.jaxb.DateAdapter; 006 import org.kuali.ole.patron.bo.OlePatronDocument; 007 import org.kuali.rice.core.api.CoreConstants; 008 import org.kuali.rice.core.api.mo.AbstractDataTransferObject; 009 import org.kuali.rice.core.api.mo.ModelBuilder; 010 import org.kuali.rice.kim.api.KimConstants; 011 import org.kuali.rice.kim.api.identity.address.EntityAddress; 012 import org.kuali.rice.kim.api.identity.address.EntityAddressContract; 013 import org.kuali.rice.kim.api.identity.email.EntityEmail; 014 import org.kuali.rice.kim.api.identity.email.EntityEmailContract; 015 import org.kuali.rice.kim.api.identity.entity.Entity; 016 import org.kuali.rice.kim.api.identity.name.EntityName; 017 import org.kuali.rice.kim.api.identity.phone.EntityPhone; 018 import org.kuali.rice.kim.api.identity.phone.EntityPhoneContract; 019 import org.w3c.dom.Element; 020 021 import javax.xml.bind.annotation.*; 022 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; 023 import java.io.Serializable; 024 import java.util.ArrayList; 025 import java.util.Collection; 026 import java.util.Date; 027 import java.util.List; 028 029 /** 030 * Created with IntelliJ IDEA. 031 * User: ? 032 * Date: 5/24/12 033 * Time: 8:26 PM 034 * To change this template use File | Settings | File Templates. 035 */ 036 @XmlRootElement(name = OleProxyPatronDefinition.Constants.ROOT_ELEMENT_NAME) 037 @XmlAccessorType(XmlAccessType.NONE) 038 @XmlType(name = OleProxyPatronDefinition.Constants.TYPE_NAME, propOrder = { 039 OleProxyPatronDefinition.Elements.OLE_PROXY_PATRON_DOC_ID, 040 OleProxyPatronDefinition.Elements.OLE_PROXY_PATRON_ID, 041 OleProxyPatronDefinition.Elements.OLE_PATRON_ID, 042 OleProxyPatronDefinition.Elements.OLE_PROXY_PATRON_EXP_DT, 043 OleProxyPatronDefinition.Elements.OLE_PROXY_PATRON_ACT_DT, 044 OleProxyPatronDefinition.Elements.OLE_PATRON_DOC, 045 OleProxyPatronDefinition.Elements.ACTIVE_INDICATOR, 046 047 CoreConstants.CommonElements.VERSION_NUMBER, 048 //CoreConstants.CommonElements.OBJECT_ID, 049 CoreConstants.CommonElements.FUTURE_ELEMENTS 050 }) 051 public final class OleProxyPatronDefinition extends AbstractDataTransferObject implements OleProxyPatronContract{ 052 053 private static final long serialVersionUID = 1L; 054 055 056 057 @XmlElement(name = Elements.OLE_PROXY_PATRON_DOC_ID, required = false) 058 private final String oleProxyPatronDocumentId; 059 060 @XmlElement(name = Elements.OLE_PROXY_PATRON_ID, required = false) 061 private final String proxyPatronId; 062 063 @XmlElement(name = Elements.OLE_PATRON_ID, required = false) 064 private final String olePatronId; 065 066 @XmlElement(name = Elements.ACTIVE_INDICATOR, required = false) 067 private final boolean active; 068 069 @XmlElement(name = Elements.OLE_PROXY_PATRON_EXP_DT, required = false) 070 @XmlJavaTypeAdapter(value=DateAdapter.class, type=Date.class) 071 private final Date proxyPatronExpirationDate; 072 073 @XmlElement(name = Elements.OLE_PROXY_PATRON_ACT_DT, required = false) 074 @XmlJavaTypeAdapter(value=DateAdapter.class, type=Date.class) 075 private final Date proxyPatronActivationDate; 076 077 @XmlElement(name = Elements.OLE_PATRON_DOC, required = false) 078 private final OlePatronDefinition olePatronDocument; 079 080 @XmlElement(name = CoreConstants.CommonElements.VERSION_NUMBER, required = false) 081 private final Long versionNumber; 082 083 /*@XmlElement(name = CoreConstants.CommonElements.OBJECT_ID, required = false) 084 private final String objectId;*/ 085 @SuppressWarnings("unused") 086 @XmlAnyElement 087 private final Collection<Element> _futureElements = null; 088 089 public OleProxyPatronDefinition() { 090 this.olePatronId = null; 091 this.oleProxyPatronDocumentId = null; 092 this.proxyPatronId = null; 093 this.active = false; 094 this.proxyPatronExpirationDate = null; 095 this.proxyPatronActivationDate = null; 096 this.olePatronDocument = null; 097 this.versionNumber = null; 098 //this.objectId = null; 099 } 100 101 102 private OleProxyPatronDefinition(Builder builder) { 103 this.oleProxyPatronDocumentId = builder.getOleProxyPatronDocumentId(); 104 this.proxyPatronId = builder.getProxyPatronId(); 105 this.olePatronId = builder.getOlePatronId(); 106 this.proxyPatronExpirationDate = builder.getProxyPatronExpirationDate(); 107 this.proxyPatronActivationDate =builder.getProxyPatronActivationDate(); 108 this.active = builder.isActive(); 109 110 this.olePatronDocument = builder.getOlePatronDocument().build(); 111 112 this.versionNumber = builder.getVersionNumber(); 113 //this.objectId = builder.getObjectId(); 114 } 115 116 @Override 117 public String getOlePatronId() { 118 return this.olePatronId; 119 } 120 @Override 121 public String getOleProxyPatronDocumentId(){ 122 return this.oleProxyPatronDocumentId; 123 }; 124 @Override 125 public String getProxyPatronId(){ 126 return this.proxyPatronId; 127 }; 128 129 @Override 130 public OlePatronDefinition getOlePatronDocument(){ 131 return this.olePatronDocument; 132 }; 133 @Override 134 public Date getProxyPatronExpirationDate(){ 135 return this.proxyPatronExpirationDate; 136 }; 137 @Override 138 public Date getProxyPatronActivationDate(){ 139 return this.proxyPatronActivationDate; 140 }; 141 @Override 142 public boolean isActive() { 143 return this.active; 144 }; 145 146 147 @Override 148 public String getId() { 149 return this.oleProxyPatronDocumentId; 150 } 151 152 153 @Override 154 public Long getVersionNumber() { 155 return this.versionNumber; 156 } 157 158 159 //@Override 160 /*public OleBorrowerTypeDefinition getOleBorrowerType() { 161 return this.oleBorrowerType; 162 }*/ 163 164 public static class Builder 165 implements Serializable, ModelBuilder, OleProxyPatronContract 166 { 167 private String oleProxyPatronDocumentId; 168 private String proxyPatronId; 169 private String olePatronId; 170 private Date proxyPatronExpirationDate; 171 private Date proxyPatronActivationDate; 172 private boolean active; 173 //private OlePatronDocument proxyPatron; 174 private OlePatronDefinition.Builder olePatronDocument; 175 private Long versionNumber; 176 private String objectId; 177 178 private Builder() { } 179 180 public static Builder create() { 181 return new Builder(); 182 } 183 184 public static Builder create(OleProxyPatronContract contract) { 185 if(contract == null) { 186 throw new IllegalArgumentException("contract was null"); 187 } 188 Builder builder = create(); 189 if (contract.getOlePatronId() != null) { 190 builder.setOlePatronId(contract.getOlePatronId()); 191 } 192 if(contract.getOleProxyPatronDocumentId() != null) { 193 builder.setOleProxyPatronDocumentId(contract.getOleProxyPatronDocumentId()); 194 } 195 if(contract.getProxyPatronId() != null) { 196 builder.setProxyPatronId(contract.getProxyPatronId()); 197 } 198 if(contract.isActive()) { 199 builder.setActive(contract.isActive()); 200 } 201 if(contract.getProxyPatronExpirationDate() != null) { 202 builder.setProxyPatronExpirationDate(contract.getProxyPatronExpirationDate()); 203 } 204 205 if(contract.getProxyPatronActivationDate() != null) { 206 builder.setProxyPatronActivationDate(contract.getProxyPatronActivationDate()); 207 } 208 209 if (contract.getOlePatronDocument() != null) { 210 builder.setOlePatronDocument(OlePatronDefinition.Builder.create(contract.getOlePatronDocument())); 211 } 212 213 builder.setVersionNumber(contract.getVersionNumber()); 214 /*builder.setObjectId(contract.getObjectId()); 215 builder.setActive(contract.isActive());*/ 216 builder.setId(contract.getId()); 217 return builder; 218 } 219 220 221 public OleProxyPatronDefinition build() { 222 return new OleProxyPatronDefinition(this); 223 } 224 225 public String getOleProxyPatronDocumentId() { 226 return oleProxyPatronDocumentId; 227 } 228 229 public void setOleProxyPatronDocumentId(String oleProxyPatronDocumentId) { 230 this.oleProxyPatronDocumentId = oleProxyPatronDocumentId; 231 } 232 233 public String getProxyPatronId() { 234 return proxyPatronId; 235 } 236 237 public void setProxyPatronId(String proxyPatronId) { 238 this.proxyPatronId = proxyPatronId; 239 } 240 241 public String getOlePatronId() { 242 return olePatronId; 243 } 244 245 public void setOlePatronId(String olePatronId) { 246 this.olePatronId = olePatronId; 247 } 248 249 public Date getProxyPatronExpirationDate() { 250 return proxyPatronExpirationDate; 251 } 252 253 public void setProxyPatronExpirationDate(Date proxyPatronExpirationDate) { 254 this.proxyPatronExpirationDate = proxyPatronExpirationDate; 255 } 256 257 public Date getProxyPatronActivationDate() { 258 return proxyPatronActivationDate; 259 } 260 261 public void setProxyPatronActivationDate(Date proxyPatronActivationDate) { 262 this.proxyPatronActivationDate = proxyPatronActivationDate; 263 } 264 265 public boolean isActive() { 266 return active; 267 } 268 269 public void setActive(boolean active) { 270 this.active = active; 271 } 272 273 public OlePatronDefinition.Builder getOlePatronDocument() { 274 return olePatronDocument; 275 } 276 277 public void setOlePatronDocument(OlePatronDefinition.Builder olePatronDocument) { 278 this.olePatronDocument = olePatronDocument; 279 } 280 281 @Override 282 public Long getVersionNumber() { 283 return versionNumber; 284 } 285 286 public void setVersionNumber(Long versionNumber) { 287 this.versionNumber = versionNumber; 288 } 289 290 /*@Override 291 public String getObjectId() { 292 return objectId; 293 }*/ 294 295 public void setObjectId(String objectId) { 296 this.objectId = objectId; 297 } 298 299 @Override 300 public String getId() { 301 return this.oleProxyPatronDocumentId; 302 } 303 304 305 306 public void setId(String id) { 307 if (StringUtils.isWhitespace(id)) { 308 throw new IllegalArgumentException("id is blank"); 309 } 310 this.oleProxyPatronDocumentId = id; 311 } 312 } 313 314 static class Constants { 315 316 final static String ROOT_ELEMENT_NAME = "oleProxyPatron"; 317 final static String TYPE_NAME = "OleProxyPatronType"; 318 final static String[] HASH_CODE_EQUALS_EXCLUDE = new String[] {CoreConstants.CommonElements.FUTURE_ELEMENTS }; 319 } 320 321 static class Elements { 322 final static String OLE_PROXY_PATRON_DOC_ID = "oleProxyPatronDocumentId"; 323 final static String OLE_PROXY_PATRON_ID = "proxyPatronId"; 324 final static String OLE_PATRON_ID = "olePatronId"; 325 final static String OLE_PROXY_PATRON_EXP_DT = "proxyPatronExpirationDate"; 326 final static String OLE_PROXY_PATRON_ACT_DT = "proxyPatronActivationDate"; 327 final static String OLE_PATRON_DOC = "olePatronDocument"; 328 final static String ACTIVE_INDICATOR = "active"; 329 //final static String ENTITY_ID = "entityId"; 330 331 332 } 333 public static class Cache { 334 public static final String NAME = KimConstants.Namespaces.KIM_NAMESPACE_2_0 + "/" + Constants.TYPE_NAME; 335 } 336 }