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 javax.persistence.CascadeType;
019import javax.persistence.Column;
020import javax.persistence.Entity;
021import javax.persistence.FetchType;
022import javax.persistence.GeneratedValue;
023import javax.persistence.Id;
024import javax.persistence.JoinColumn;
025import javax.persistence.ManyToOne;
026import javax.persistence.Table;
027import javax.persistence.Version;
028
029import org.hibernate.annotations.GenericGenerator;
030import org.hibernate.annotations.Parameter;
031import org.kuali.rice.core.framework.persistence.jpa.OrmUtils;
032import org.kuali.rice.edl.framework.extract.FieldDTO;
033import org.kuali.rice.krad.service.KRADServiceLocator;
034
035/**
036 *
037 *
038 *
039 * @author Kuali Rice Team (rice.collab@kuali.org)
040 *
041 */
042@Entity
043@Table(name="KREW_EDL_FLD_DMP_T")
044//@Sequence(name="KREW_EDL_FLD_DMP_S", property="fieldId")
045public class Fields {
046
047        private static final long serialVersionUID = -6136544551121011531L;
048
049    @Id
050    @GeneratedValue(generator="KREW_EDL_FLD_DMP_S")
051        @GenericGenerator(name="KREW_EDL_FLD_DMP_S",strategy="org.hibernate.id.enhanced.SequenceStyleGenerator",parameters={
052                        @Parameter(name="sequence_name",value="KREW_EDL_FLD_DMP_S"),
053                        @Parameter(name="value_column",value="id")
054        })
055        @Column(name="EDL_FIELD_DMP_ID")
056        private Long fieldId;
057    @Column(name="DOC_HDR_ID")
058        private String docId;
059    @Column(name="FLD_NM")
060        private String fieldName;
061    @Column(name="FLD_VAL")
062        private String fieldValue;
063    @Version
064        @Column(name="VER_NBR")
065        private Integer lockVerNbr;
066
067    @ManyToOne(fetch=FetchType.EAGER, cascade={CascadeType.PERSIST})
068        @JoinColumn(name="DOC_HDR_ID", insertable=false, updatable=false)
069        private Dump dump;
070
071    //@PrePersist
072    public void beforeInsert(){
073        OrmUtils.populateAutoIncValue(this, KRADServiceLocator.getEntityManagerFactory().createEntityManager());
074    }
075
076
077        public Long getFieldId() {
078                return fieldId;
079        }
080        public String getDocId() {
081                return docId;
082        }
083        public void setDocId(final String docId) {
084                this.docId = docId;
085        }
086        public String getFieldValue() {
087                return fieldValue;
088        }
089        public void setFieldValue(final String fieldValue) {
090                this.fieldValue = fieldValue;
091        }
092        public String getFiledName() {
093                return fieldName;
094        }
095        public void setFieldName(final String filedName) {
096                this.fieldName = filedName;
097        }
098        public Integer getLockVerNbr() {
099                return lockVerNbr;
100        }
101        public void setLockVerNbr(final Integer lockVerNbr) {
102                this.lockVerNbr = lockVerNbr;
103        }
104        public Dump getDump() {
105                return dump;
106        }
107        public void setDump(final Dump dump) {
108                this.dump = dump;
109        }
110        
111        public static FieldDTO to(Fields field) {
112                if (field == null) {
113                        return null;
114                }
115                FieldDTO fieldDTO = new FieldDTO();
116                fieldDTO.setDocId(field.getDocId());
117                fieldDTO.setFieldName(field.getFiledName());
118                fieldDTO.setFieldValue(field.getFieldValue());
119                fieldDTO.setLockVerNbr(field.getLockVerNbr());
120                return fieldDTO;
121        }
122        
123        public static Fields from(FieldDTO fieldDTO, Dump dump) {
124                if (fieldDTO == null) {
125                        return null;
126                }
127                Fields fields = new Fields();
128                fields.setDump(dump);
129                fields.setDocId(fieldDTO.getDocId());
130                fields.setFieldName(fieldDTO.getFiledName());
131                fields.setFieldValue(fieldDTO.getFieldValue());
132                fields.setLockVerNbr(fieldDTO.getLockVerNbr());
133                return fields;
134        }
135}
136