001/**
002 * Copyright 2005-2016 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.edl.impl.extract;
017
018import org.kuali.rice.core.api.util.RiceConstants;
019import org.kuali.rice.edl.framework.extract.DumpDTO;
020import org.kuali.rice.edl.framework.extract.FieldDTO;
021import org.kuali.rice.kew.api.KewApiConstants;
022
023import javax.persistence.CascadeType;
024import javax.persistence.Column;
025import javax.persistence.Entity;
026import javax.persistence.FetchType;
027import javax.persistence.Id;
028import javax.persistence.OneToMany;
029import javax.persistence.Table;
030import javax.persistence.Version;
031import java.io.Serializable;
032import java.sql.Timestamp;
033import java.text.DateFormat;
034import java.text.SimpleDateFormat;
035import java.util.ArrayList;
036import java.util.Calendar;
037import java.util.Date;
038import java.util.List;
039
040/**
041 * @author Kuali Rice Team (rice.collab@kuali.org)
042 *
043 */
044@Entity
045@Table(name="KREW_EDL_DMP_T")
046public class Dump implements Serializable {
047
048    //  private static final long serialVersionUID = -6136544551121011531L;
049
050    @Id
051    @Column(name="DOC_HDR_ID", nullable = false)
052    private String docId;
053
054    @Column(name="DOC_TYP_NM", nullable = false)
055    private String docTypeName;
056
057    @Column(name="DOC_HDR_STAT_CD", nullable = false)
058    private String docRouteStatusCode;
059
060    @Column(name="DOC_HDR_MDFN_DT", nullable = false)
061    private Timestamp docModificationDate;
062
063    @Column(name="DOC_HDR_CRTE_DT", nullable = false)
064    private Timestamp docCreationDate;
065
066    @Column(name="DOC_HDR_TTL")
067    private String docDescription;
068
069    @Column(name="DOC_HDR_INITR_PRNCPL_ID", nullable = false)
070    private String docInitiatorId;
071
072    @Column(name="CRNT_NODE_NM", nullable = false)
073    private String docCurrentNodeName;
074
075    @Version
076    @Column(name="VER_NBR", nullable = false)
077    private Integer lockVerNbr;
078
079    @OneToMany(fetch=FetchType.EAGER,cascade={CascadeType.ALL},mappedBy="dump")
080    private List<Fields> fields = new ArrayList<Fields>();
081
082    /**
083     * Returns the document creation timestamp.
084     * @return the doucment creation timestamp
085     */
086    public Timestamp getDocCreationDate() {
087        return docCreationDate;
088    }
089
090    /**
091     *
092     * @see #getDocCreationDate()
093     */
094    public void setDocCreationDate(final Timestamp docCreationDate) {
095        this.docCreationDate = docCreationDate;
096    }
097
098    /**
099     * Rreturns document current node nam.e
100     * @return document current node name
101     */
102    public String getDocCurrentNodeName() {
103        return docCurrentNodeName;
104    }
105
106    /**
107     *
108     * @see #getDocCurrentNodeName()
109     */
110    public void setDocCurrentNodeName(final String docCurrentNodeName) {
111        this.docCurrentNodeName = docCurrentNodeName;
112    }
113
114    /**
115     * Returns the description.
116     * @return the description
117     */
118    public String getDocDescription() {
119        return docDescription;
120    }
121
122    /**
123     *
124     * @see #getDocDescription()
125     */
126    public void setDocDescription(final String docDescription) {
127        this.docDescription = docDescription;
128    }
129
130    /**
131     * Returns the document id.
132     * @return the document id
133     */
134    public String getDocId() {
135        return docId;
136    }
137
138    /**
139     * Returns document initiator id.
140     * @return document initiator id
141     */
142    public String getDocInitiatorId() {
143        return docInitiatorId;
144    }
145
146    /**
147     *
148     * @see #getDocInitiatorId()
149     */
150    public void setDocInitiatorId(final String docInitiatorId) {
151        this.docInitiatorId = docInitiatorId;
152    }
153
154    /**
155     * Returns document modification date
156     * @return the document modification date
157     */
158    public Timestamp getDocModificationDate() {
159        return docModificationDate;
160    }
161
162    /**
163     *
164     * @see #getDocModificationDate()
165     */
166    public void setDocModificationDate(final Timestamp docModificationDate) {
167        this.docModificationDate = docModificationDate;
168    }
169
170    /**
171     * Returns document route status code.
172     * @return document route status code
173     */
174    public String getDocRouteStatusCode() {
175        return docRouteStatusCode;
176    }
177
178    /**
179     *
180     * @see #getDocRouteStatusCode()
181     */
182    public void setDocRouteStatusCode(final String docRouteStatusCode) {
183        this.docRouteStatusCode = docRouteStatusCode;
184    }
185
186    /**
187     * Returns the document type name.
188     * @return the document type name
189     */
190    public String getDocTypeName() {
191        return docTypeName;
192    }
193
194    /**
195     *
196     * @see #getDocTypeName()
197     */
198    public void setDocTypeName(final String docTypeName) {
199        this.docTypeName = docTypeName;
200    }
201
202    /**
203     * Returns the lock version number.
204     * @return the lock version number
205     */
206    public Integer getLockVerNbr() {
207        return lockVerNbr;
208    }
209
210    /**
211     *
212     * @see #getLockVerNbr()
213     */
214    public void setLockVerNbr(final Integer lockVerNbr) {
215        this.lockVerNbr = lockVerNbr;
216    }
217
218    /**
219     * Returns the creation timestamp specially formatted.
220     * @return the creation timestamp, specially formatted.
221     */
222    public String getFormattedCreateDateTime() {
223        long time = getDocCreationDate().getTime();
224        Calendar calendar = Calendar.getInstance();
225        calendar.setTimeInMillis(time);
226        Date date = calendar.getTime();
227        DateFormat dateFormat = new SimpleDateFormat(KewApiConstants.TIMESTAMP_DATE_FORMAT_PATTERN2);
228        return dateFormat.format(date);
229    }
230
231    /**
232     * Returns the date portion of the creation timestamp.
233     * @return the date portion of the creation timestamp.
234     */
235    public String getFormattedCreateDate() {
236        long time = getDocCreationDate().getTime();
237        Calendar calendar = Calendar.getInstance();
238        calendar.setTimeInMillis(time);
239        Date date = calendar.getTime();
240        DateFormat dateFormat = RiceConstants.getDefaultDateFormat();
241        return dateFormat.format(date);
242    }
243
244    /**
245     *
246     * @see #getDocId()
247     */
248    public void setDocId(final String docId) {
249        this.docId = docId;
250    }
251
252    /**
253     * Returns the {@link Fields}
254     * @return the {@link Fields}
255     */
256    public List<Fields> getFields() {
257        return fields;
258    }
259
260    /**
261     *
262     * @see #getFields()
263     */
264    public void setFields(final List<Fields> fields) {
265        this.fields = fields;
266    }
267
268    /**
269     * Converts a {@link Dump} to a {@link DumpDTO}
270     * @param dump the {@link Dump} to convert.
271     * @return a {@link DumpDTO}
272     */
273    public static DumpDTO to(Dump dump) {
274        if (dump == null) {
275            return null;
276        }
277        DumpDTO dumpDTO = new DumpDTO();
278        dumpDTO.setDocCreationDate(dump.getDocCreationDate());
279        dumpDTO.setDocCurrentNodeName(dump.getDocCurrentNodeName());
280        dumpDTO.setDocDescription(dump.getDocDescription());
281        dumpDTO.setDocId(dump.getDocId());
282        dumpDTO.setDocInitiatorId(dump.getDocInitiatorId());
283        dumpDTO.setDocModificationDate(dump.getDocModificationDate());
284        dumpDTO.setDocRouteStatusCode(dump.getDocRouteStatusCode());
285        dumpDTO.setDocTypeName(dump.getDocTypeName());
286        dumpDTO.setLockVerNbr(dump.getLockVerNbr());
287        List<FieldDTO> fields = new ArrayList<FieldDTO>();
288        for (Fields field : dump.getFields()) {
289            fields.add(Fields.to(field));
290        }
291        dumpDTO.setFields(fields);
292        return dumpDTO;
293    }
294
295    /**
296     * Converts a {@link DumpDTO} to a {@link Dump}
297     * @param dumpDTO the {@link DumpDTO} to convert
298     * @return a {@link Dump}
299     */
300    public static Dump from(DumpDTO dumpDTO) {
301        if (dumpDTO == null) {
302            return null;
303        }
304        Dump dump = new Dump();
305        dump.setDocCreationDate(dumpDTO.getDocCreationDate());
306        dump.setDocCurrentNodeName(dumpDTO.getDocCurrentNodeName());
307        dump.setDocDescription(dumpDTO.getDocDescription());
308        dump.setDocId(dumpDTO.getDocId());
309        dump.setDocInitiatorId(dumpDTO.getDocInitiatorId());
310        dump.setDocModificationDate(dumpDTO.getDocModificationDate());
311        dump.setDocRouteStatusCode(dumpDTO.getDocRouteStatusCode());
312        dump.setDocTypeName(dumpDTO.getDocTypeName());
313        dump.setLockVerNbr(dumpDTO.getLockVerNbr());
314        List<Fields> fields = new ArrayList<Fields>();
315        for (FieldDTO fieldDTO : dumpDTO.getFields()) {
316            fields.add(Fields.from(fieldDTO, dump));
317        }
318        dump.setFields(fields);
319        return dump;
320    }
321}
322