001 /** 002 * Copyright 2005-2013 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 */ 016 package org.kuali.rice.edl.impl.extract; 017 018 import org.hibernate.annotations.Fetch; 019 import org.hibernate.annotations.FetchMode; 020 import org.kuali.rice.core.api.util.RiceConstants; 021 import org.kuali.rice.core.framework.persistence.jpa.OrmUtils; 022 import org.kuali.rice.edl.framework.extract.DumpDTO; 023 import org.kuali.rice.edl.framework.extract.FieldDTO; 024 import org.kuali.rice.kew.api.KewApiConstants; 025 import org.kuali.rice.krad.service.KRADServiceLocator; 026 027 import javax.persistence.CascadeType; 028 import javax.persistence.Column; 029 import javax.persistence.Entity; 030 import javax.persistence.FetchType; 031 import javax.persistence.Id; 032 import javax.persistence.OneToMany; 033 import javax.persistence.Table; 034 import javax.persistence.Version; 035 import java.sql.Timestamp; 036 import java.text.DateFormat; 037 import java.text.SimpleDateFormat; 038 import java.util.ArrayList; 039 import java.util.Calendar; 040 import java.util.Date; 041 import java.util.List; 042 043 /** 044 * 045 * 046 * 047 * @author Kuali Rice Team (rice.collab@kuali.org) 048 * 049 */ 050 @Entity 051 @Table(name="KREW_EDL_DMP_T") 052 //@Sequence(name="KREW_EDL_DMP_T", property="docId") 053 public class Dump { 054 055 private static final long serialVersionUID = -6136544551121011531L; 056 057 @Id 058 @Column(name="DOC_HDR_ID") 059 private String docId; 060 @Column(name="DOC_TYP_NM") 061 private String docTypeName; 062 @Column(name="DOC_HDR_STAT_CD") 063 private String docRouteStatusCode; 064 @Column(name="DOC_HDR_MDFN_DT") 065 private Timestamp docModificationDate; 066 @Column(name="DOC_HDR_CRTE_DT") 067 private Timestamp docCreationDate; 068 @Column(name="DOC_HDR_TTL") 069 private String docDescription; 070 @Column(name="DOC_HDR_INITR_PRNCPL_ID") 071 private String docInitiatorId; 072 @Column(name="CRNT_NODE_NM") 073 private String docCurrentNodeName; 074 @Version 075 @Column(name="VER_NBR") 076 private Integer lockVerNbr; 077 078 @OneToMany(fetch=FetchType.EAGER,cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE},mappedBy="dump") 079 @Fetch(value = FetchMode.SELECT) 080 private List<Fields> fields = new ArrayList<Fields>(); 081 082 //@PrePersist 083 public void beforeInsert(){ 084 OrmUtils.populateAutoIncValue(this, KRADServiceLocator.getEntityManagerFactory().createEntityManager()); 085 } 086 087 088 public Timestamp getDocCreationDate() { 089 return docCreationDate; 090 } 091 public void setDocCreationDate(final Timestamp docCreationDate) { 092 this.docCreationDate = docCreationDate; 093 } 094 public String getDocCurrentNodeName() { 095 return docCurrentNodeName; 096 } 097 public void setDocCurrentNodeName(final String docCurrentNodeName) { 098 this.docCurrentNodeName = docCurrentNodeName; 099 } 100 public String getDocDescription() { 101 return docDescription; 102 } 103 public void setDocDescription(final String docDescription) { 104 this.docDescription = docDescription; 105 } 106 public String getDocId() { 107 return docId; 108 } 109 public String getDocInitiatorId() { 110 return docInitiatorId; 111 } 112 public void setDocInitiatorId(final String docInitiatorId) { 113 this.docInitiatorId = docInitiatorId; 114 } 115 public Timestamp getDocModificationDate() { 116 return docModificationDate; 117 } 118 public void setDocModificationDate(final Timestamp docModificationDate) { 119 this.docModificationDate = docModificationDate; 120 } 121 public String getDocRouteStatusCode() { 122 return docRouteStatusCode; 123 } 124 public void setDocRouteStatusCode(final String docRouteStatusCode) { 125 this.docRouteStatusCode = docRouteStatusCode; 126 } 127 public String getDocTypeName() { 128 return docTypeName; 129 } 130 public void setDocTypeName(final String docTypeName) { 131 this.docTypeName = docTypeName; 132 } 133 public Integer getLockVerNbr() { 134 return lockVerNbr; 135 } 136 public void setLockVerNbr(final Integer lockVerNbr) { 137 this.lockVerNbr = lockVerNbr; 138 } 139 public String getFormattedCreateDateTime() { 140 long time = getDocCreationDate().getTime(); 141 Calendar calendar = Calendar.getInstance(); 142 calendar.setTimeInMillis(time); 143 Date date = calendar.getTime(); 144 DateFormat dateFormat = new SimpleDateFormat(KewApiConstants.TIMESTAMP_DATE_FORMAT_PATTERN2); 145 return dateFormat.format(date); 146 } 147 148 public String getFormattedCreateDate() { 149 long time = getDocCreationDate().getTime(); 150 Calendar calendar = Calendar.getInstance(); 151 calendar.setTimeInMillis(time); 152 Date date = calendar.getTime(); 153 DateFormat dateFormat = RiceConstants.getDefaultDateFormat(); 154 return dateFormat.format(date); 155 } 156 public void setDocId(final String docId) { 157 this.docId = docId; 158 } 159 160 161 public List<Fields> getFields() { 162 return fields; 163 } 164 165 public void setFields(final List<Fields> fields) { 166 this.fields = fields; 167 } 168 169 public static DumpDTO to(Dump dump) { 170 if (dump == null) { 171 return null; 172 } 173 DumpDTO dumpDTO = new DumpDTO(); 174 dumpDTO.setDocCreationDate(dump.getDocCreationDate()); 175 dumpDTO.setDocCurrentNodeName(dump.getDocCurrentNodeName()); 176 dumpDTO.setDocDescription(dump.getDocDescription()); 177 dumpDTO.setDocId(dump.getDocId()); 178 dumpDTO.setDocInitiatorId(dump.getDocInitiatorId()); 179 dumpDTO.setDocModificationDate(dump.getDocModificationDate()); 180 dumpDTO.setDocRouteStatusCode(dump.getDocRouteStatusCode()); 181 dumpDTO.setDocTypeName(dump.getDocTypeName()); 182 dumpDTO.setLockVerNbr(dump.getLockVerNbr()); 183 List<FieldDTO> fields = new ArrayList<FieldDTO>(); 184 for (Fields field : dump.getFields()) { 185 fields.add(Fields.to(field)); 186 } 187 dumpDTO.setFields(fields); 188 return dumpDTO; 189 } 190 191 public static Dump from(DumpDTO dumpDTO) { 192 if (dumpDTO == null) { 193 return null; 194 } 195 Dump dump = new Dump(); 196 dump.setDocCreationDate(dumpDTO.getDocCreationDate()); 197 dump.setDocCurrentNodeName(dumpDTO.getDocCurrentNodeName()); 198 dump.setDocDescription(dumpDTO.getDocDescription()); 199 dump.setDocId(dumpDTO.getDocId()); 200 dump.setDocInitiatorId(dumpDTO.getDocInitiatorId()); 201 dump.setDocModificationDate(dumpDTO.getDocModificationDate()); 202 dump.setDocRouteStatusCode(dumpDTO.getDocRouteStatusCode()); 203 dump.setDocTypeName(dumpDTO.getDocTypeName()); 204 dump.setLockVerNbr(dumpDTO.getLockVerNbr()); 205 List<Fields> fields = new ArrayList<Fields>(); 206 for (FieldDTO fieldDTO : dumpDTO.getFields()) { 207 fields.add(Fields.from(fieldDTO, dump)); 208 } 209 dump.setFields(fields); 210 return dump; 211 } 212 213 } 214