001package org.kuali.ole.deliver.api;
002
003import org.apache.commons.lang.StringUtils;
004import org.kuali.rice.core.api.CoreConstants;
005import org.kuali.rice.core.api.mo.AbstractDataTransferObject;
006import org.kuali.rice.core.api.mo.ModelBuilder;
007import org.kuali.rice.kim.api.KimConstants;
008import org.w3c.dom.Element;
009
010import javax.xml.bind.annotation.*;
011import java.io.Serializable;
012import java.util.Collection;
013
014/**
015 * Created with IntelliJ IDEA.
016 * User: ?
017 * Date: 5/24/12
018 * Time: 8:26 PM
019 * To change this template use File | Settings | File Templates.
020 */
021@XmlRootElement(name = org.kuali.ole.deliver.api.OleSourceDefinition.Constants.ROOT_ELEMENT_NAME)
022@XmlAccessorType(XmlAccessType.NONE)
023@XmlType(name = org.kuali.ole.deliver.api.OleSourceDefinition.Constants.TYPE_NAME, propOrder = {
024        org.kuali.ole.deliver.api.OleSourceDefinition.Elements.OLE_SOURCE_ID,
025        org.kuali.ole.deliver.api.OleSourceDefinition.Elements.OLE_SOURCE_CODE,
026        org.kuali.ole.deliver.api.OleSourceDefinition.Elements.OLE_SOURCE_NAME,
027        org.kuali.ole.deliver.api.OleSourceDefinition.Elements.OLE_SOURCE_DESC,
028        org.kuali.ole.deliver.api.OleSourceDefinition.Elements.ACTIVE_INDICATOR,
029
030        CoreConstants.CommonElements.VERSION_NUMBER,
031        //CoreConstants.CommonElements.OBJECT_ID,
032        CoreConstants.CommonElements.FUTURE_ELEMENTS
033})
034public final class OleSourceDefinition extends AbstractDataTransferObject implements OleSourceContract {
035
036    private static final long serialVersionUID = 1L;
037
038
039    @XmlElement(name = Elements.OLE_SOURCE_ID, required = false)
040    private final String oleSourceId;
041
042    @XmlElement(name = Elements.OLE_SOURCE_CODE, required = false)
043    private final String oleSourceCode;
044
045    @XmlElement(name = Elements.OLE_SOURCE_NAME, required = false)
046    private final String oleSourceName;
047
048    @XmlElement(name = Elements.OLE_SOURCE_DESC, required = false)
049    private final String oleSourceDesc;
050
051    @XmlElement(name = Elements.ACTIVE_INDICATOR, required = false)
052    private final boolean active;
053
054    @XmlElement(name = CoreConstants.CommonElements.VERSION_NUMBER, required = false)
055    private final Long versionNumber;
056
057    /*@XmlElement(name = CoreConstants.CommonElements.OBJECT_ID, required = false)
058    private final String objectId;*/
059    @SuppressWarnings("unused")
060    @XmlAnyElement
061    private final Collection<Element> _futureElements = null;
062
063    public OleSourceDefinition() {
064        this.oleSourceId = null;
065        this.oleSourceCode = null;
066        this.oleSourceName = null;
067        this.active = false;
068        this.oleSourceDesc = null;
069        this.versionNumber = null;
070        //this.objectId = null;
071    }
072
073
074    private OleSourceDefinition(Builder builder) {
075        this.oleSourceId = builder.getOleSourceId();
076        this.oleSourceCode = builder.getOleSourceCode();
077        this.oleSourceName = builder.getOleSourceName();
078        this.oleSourceDesc = builder.getOleSourceDesc();
079        this.active = builder.isActive();
080
081        this.versionNumber = builder.getVersionNumber();
082        //this.objectId = builder.getObjectId();
083    }
084
085
086    @Override
087    public String getOleSourceId() {
088        return this.oleSourceId;
089    }
090
091    @Override
092    public String getOleSourceCode() {
093        return this.oleSourceCode;
094    }
095
096    @Override
097    public String getOleSourceName() {
098        return this.oleSourceName;
099    }
100
101    @Override
102    public String getOleSourceDesc() {
103        return this.oleSourceDesc;
104    }
105
106    @Override
107    public boolean isActive() {
108        return this.active;
109    }
110
111    ;
112
113
114    @Override
115    public String getId() {
116        return this.oleSourceId;
117    }
118
119
120    @Override
121    public Long getVersionNumber() {
122        return this.versionNumber;
123    }
124
125
126    //@Override
127    /*public OleBorrowerTypeDefinition getOleBorrowerType() {
128        return this.oleBorrowerType;
129    }*/
130
131    public static class Builder
132            implements Serializable, ModelBuilder, OleSourceContract {
133
134        private String oleSourceId;
135        private String oleSourceCode;
136        private String oleSourceName;
137        private String oleSourceDesc;
138        private boolean active;
139
140        private Long versionNumber;
141        private String objectId;
142
143        private Builder() {
144        }
145
146        public static Builder create() {
147            return new Builder();
148        }
149
150        public static Builder create(OleSourceContract contract) {
151            if (contract == null) {
152                throw new IllegalArgumentException("contract was null");
153            }
154            Builder builder = create();
155            if (contract.getOleSourceId() != null) {
156                builder.setOleSourceId(contract.getOleSourceId());
157            }
158            if (contract.getOleSourceCode() != null) {
159                builder.setOleSourceCode(contract.getOleSourceCode());
160            }
161            if (contract.getOleSourceName() != null) {
162                builder.setOleSourceName(contract.getOleSourceName());
163            }
164            if (contract.isActive()) {
165                builder.setActive(contract.isActive());
166            }
167            if (contract.getOleSourceDesc() != null) {
168                builder.setOleSourceDesc(contract.getOleSourceDesc());
169            }
170
171            builder.setVersionNumber(contract.getVersionNumber());
172            /*builder.setObjectId(contract.getObjectId());
173            builder.setActive(contract.isActive());*/
174            builder.setId(contract.getId());
175            return builder;
176        }
177
178
179        public org.kuali.ole.deliver.api.OleSourceDefinition build() {
180            return new org.kuali.ole.deliver.api.OleSourceDefinition(this);
181        }
182
183        public String getOleSourceId() {
184            return oleSourceId;
185        }
186
187        public void setOleSourceId(String oleSourceId) {
188            this.oleSourceId = oleSourceId;
189        }
190
191        public String getOleSourceCode() {
192            return oleSourceCode;
193        }
194
195        public void setOleSourceCode(String oleSourceCode) {
196            this.oleSourceCode = oleSourceCode;
197        }
198
199        public String getOleSourceName() {
200            return oleSourceName;
201        }
202
203        public void setOleSourceName(String oleSourceName) {
204            this.oleSourceName = oleSourceName;
205        }
206
207        public String getOleSourceDesc() {
208            return oleSourceDesc;
209        }
210
211        public void setOleSourceDesc(String oleSourceDesc) {
212            this.oleSourceDesc = oleSourceDesc;
213        }
214
215        public boolean isActive() {
216            return active;
217        }
218
219        public void setActive(boolean active) {
220            this.active = active;
221        }
222
223        @Override
224        public Long getVersionNumber() {
225            return versionNumber;
226        }
227
228        public void setVersionNumber(Long versionNumber) {
229            this.versionNumber = versionNumber;
230        }
231
232        /*@Override
233        public String getObjectId() {
234            return objectId;
235        }*/
236
237        public void setObjectId(String objectId) {
238            this.objectId = objectId;
239        }
240
241        @Override
242        public String getId() {
243            return this.oleSourceId;
244        }
245
246
247        public void setId(String id) {
248            if (StringUtils.isWhitespace(id)) {
249                throw new IllegalArgumentException("id is blank");
250            }
251            this.oleSourceId = id;
252        }
253    }
254
255    static class Constants {
256
257        final static String ROOT_ELEMENT_NAME = "oleSource";
258        final static String TYPE_NAME = "OleSourceType";
259        final static String[] HASH_CODE_EQUALS_EXCLUDE = new String[]{CoreConstants.CommonElements.FUTURE_ELEMENTS};
260    }
261
262    static class Elements {
263        final static String OLE_SOURCE_ID = "oleSourceId";
264        final static String OLE_SOURCE_CODE = "oleSourceCode";
265        final static String OLE_SOURCE_NAME = "oleSourceName";
266        final static String OLE_SOURCE_DESC = "oleSourceDesc";
267        final static String ACTIVE_INDICATOR = "active";
268        //final static String ENTITY_ID = "entityId";
269
270    }
271
272    public static class Cache {
273        public static final String NAME = KimConstants.Namespaces.KIM_NAMESPACE_2_0 + "/" + Constants.TYPE_NAME;
274    }
275}