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 }