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