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    }