org.kuali.coeus.propdev.impl.person.attachment.ProposalPersonBiography.java Source code

Java tutorial

Introduction

Here is the source code for org.kuali.coeus.propdev.impl.person.attachment.ProposalPersonBiography.java

Source

/*
 * Kuali Coeus, a comprehensive research administration system for higher education.
 * 
 * Copyright 2005-2015 Kuali, Inc.
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.kuali.coeus.propdev.impl.person.attachment;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.CompareToBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.kuali.coeus.common.framework.attachment.KcAttachmentDataDao;
import org.kuali.coeus.common.framework.attachment.KcAttachmentService;
import org.kuali.coeus.propdev.api.person.attachment.ProposalPersonBiographyContract;
import org.kuali.coeus.propdev.impl.attachment.ProposalDevelopmentAttachment;
import org.kuali.coeus.propdev.impl.core.DevelopmentProposal;
import org.kuali.coeus.sys.api.model.KcFile;
import org.kuali.coeus.sys.framework.model.KcPersistableBusinessObjectBase;
import org.kuali.coeus.sys.framework.service.KcServiceLocator;
import org.kuali.rice.core.api.CoreConstants;
import org.kuali.rice.core.api.datetime.DateTimeService;
import org.kuali.rice.krad.file.FileMeta;
import org.springframework.web.multipart.MultipartFile;

import javax.persistence.*;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;

/**
 * 
 * This is bo for eps_prop_person_bio.
 */
@Entity
@Table(name = "EPS_PROP_PERSON_BIO")
@IdClass(ProposalPersonBiography.ProposalPersonBiographyId.class)
public class ProposalPersonBiography extends KcPersistableBusinessObjectBase
        implements ProposalPersonBiographyContract, KcFile, FileMeta, ProposalDevelopmentAttachment {

    @Id
    @Column(name = "PROP_PERSON_NUMBER")
    private Integer proposalPersonNumber;

    @Column(name = "PERSON_ID")
    private String personId;

    @Id
    @ManyToOne(cascade = { CascadeType.REFRESH })
    @JoinColumn(name = "PROPOSAL_NUMBER")
    private DevelopmentProposal developmentProposal;

    @Id
    @Column(name = "BIO_NUMBER")
    private Integer biographyNumber;

    @Column(name = "ROLODEX_ID")
    private Integer rolodexId;

    @Column(name = "DESCRIPTION")
    private String description;

    @Column(name = "DOCUMENT_TYPE_CODE")
    private String documentTypeCode;

    @Column(name = "FILE_NAME")
    private String name;

    @Column(name = "CONTENT_TYPE")
    private String type;

    @ManyToOne(cascade = { CascadeType.REFRESH })
    @JoinColumn(name = "DOCUMENT_TYPE_CODE", referencedColumnName = "DOCUMENT_TYPE_CODE", insertable = false, updatable = false)
    private PropPerDocType propPerDocType;

    @OneToOne(mappedBy = "proposalPersonBiography", cascade = { CascadeType.ALL })
    private ProposalPersonBiographyAttachment personnelAttachment;

    @Transient
    private String proposalPersonNumberString;

    @Transient
    private String uploadUserFullName;

    @Transient
    private transient int positionNumber;

    @Transient
    private String id;

    @Transient
    private Long size;

    @Transient
    private Date dateUploaded;

    @Transient
    private String url;

    @Transient
    private transient DateTimeService dateTimeService;

    @Transient
    private transient KcAttachmentService kcAttachmentService;

    @Transient
    private transient MultipartFile multipartFile;

    @Override
    public void init(MultipartFile multipartFile) throws Exception {
        this.name = multipartFile.getOriginalFilename();
        this.size = multipartFile.getSize();

        ProposalPersonBiographyAttachment attachment = new ProposalPersonBiographyAttachment();
        attachment.setType(multipartFile.getContentType());
        attachment.setData(multipartFile.getBytes());
        attachment.setName(multipartFile.getOriginalFilename());
        setPersonnelAttachment(attachment);
    }

    @Override
    public String getId() {
        return id;
    }

    @Override
    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String getContentType() {
        if (personnelAttachment != null) {
            return this.getPersonnelAttachment().getType();
        }
        return null;
    }

    @Override
    public void setContentType(String contentType) {
        if (personnelAttachment != null) {
            this.getPersonnelAttachment().setType(contentType);
        }
    }

    @Override
    public Long getSize() {
        return size;
    }

    @Override
    public void setSize(Long size) {
        this.size = size;
    }

    @Override
    public Date getDateUploaded() {
        return dateUploaded;
    }

    @Override
    public void setDateUploaded(Date dateUploaded) {
        this.dateUploaded = dateUploaded;
    }

    @Override
    public String getUrl() {
        return url;
    }

    @Override
    public void setUrl(String url) {
        this.url = url;
    }

    @Override
    public String getSizeFormatted() {
        return getKcAttachmentService().formatFileSizeString(size);
    }

    @Override
    public String getDateUploadedFormatted() {
        if (this.getUpdateTimestamp() != null) {
            return getDateTimeService().toString(new Date(this.getUpdateTimestamp().getTime()),
                    CoreConstants.TIMESTAMP_TO_STRING_FORMAT_FOR_USER_INTERFACE_DEFAULT);
        }
        return StringUtils.EMPTY;
    }

    public MultipartFile getMultipartFile() {
        return multipartFile;
    }

    public void setMultipartFile(MultipartFile multipartFile) {
        this.multipartFile = multipartFile;
    }

    @Override
    public Integer getProposalPersonNumber() {
        return proposalPersonNumber;
    }

    public void setProposalPersonNumber(Integer proposalPersonNumber) {
        this.proposalPersonNumber = proposalPersonNumber;
        this.proposalPersonNumberString = proposalPersonNumber != null ? proposalPersonNumber.toString() : null;
    }

    public String getProposalPersonNumberString() {
        if (proposalPersonNumberString == null && proposalPersonNumber != null) {
            return proposalPersonNumber.toString();
        }
        return proposalPersonNumberString;
    }

    public void setProposalPersonNumberString(String proposalPersonNumberString) {
        this.proposalPersonNumberString = proposalPersonNumberString;
        this.proposalPersonNumber = proposalPersonNumberString != null
                ? Integer.parseInt(proposalPersonNumberString)
                : null;
    }

    @Override
    public String getPersonId() {
        return personId;
    }

    public void setPersonId(String personId) {
        this.personId = personId;
    }

    public DevelopmentProposal getDevelopmentProposal() {
        return developmentProposal;
    }

    public void setDevelopmentProposal(DevelopmentProposal developmentProposal) {
        this.developmentProposal = developmentProposal;
    }

    @Override
    public String getProposalNumber() {
        return this.getDevelopmentProposal().getProposalNumber();
    }

    public void setProposalNumber(String proposalNumber) {
        this.getDevelopmentProposal().setProposalNumber(proposalNumber);
    }

    @Override
    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getDocumentTypeCode() {
        return documentTypeCode;
    }

    public void setDocumentTypeCode(String documentTypeCode) {
        this.documentTypeCode = documentTypeCode;
    }

    @Override
    public ProposalPersonBiographyAttachment getPersonnelAttachment() {
        return personnelAttachment;
    }

    public void setPersonnelAttachment(ProposalPersonBiographyAttachment personnelAttachment) {
        this.personnelAttachment = personnelAttachment;
        if (personnelAttachment != null) {
            this.personnelAttachment.setProposalPersonBiography(this);
        }
    }

    @Override
    public PropPerDocType getPropPerDocType() {
        return propPerDocType;
    }

    public void setPropPerDocType(PropPerDocType propPerDocType) {
        this.propPerDocType = propPerDocType;
    }

    @Override
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public Integer getRolodexId() {
        return rolodexId;
    }

    public void setRolodexId(Integer rolodexId) {
        this.rolodexId = rolodexId;
    }

    @Override
    public Integer getBiographyNumber() {
        return biographyNumber;
    }

    public void setBiographyNumber(Integer biographyNumber) {
        this.biographyNumber = biographyNumber;
    }

    public Timestamp getTimestampDisplay() {
        if (getPersonnelAttachment() == null || getPersonnelAttachment().getUploadTimestamp() == null) {
            return getDateTimeService().getCurrentTimestamp();
        }
        return getPersonnelAttachment().getUploadTimestamp();
    }

    public String getUploadUserDisplay() {
        if (getPersonnelAttachment() == null || StringUtils.isBlank(getPersonnelAttachment().getUploadUser())) {
            return this.getUpdateUser();
        }

        return getPersonnelAttachment().getUploadUser();
    }

    public String getUploadUserFullName() {
        return uploadUserFullName;
    }

    public void setUploadUserFullName(String uploadUserFullName) {
        this.uploadUserFullName = uploadUserFullName;
    }

    @Override
    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public byte[] getData() {
        if (getPersonnelAttachment() == null) {
            return null;
        } else {
            return getPersonnelAttachment().getData();
        }
    }

    public int getPositionNumber() {
        return positionNumber;
    }

    public void setPositionNumber(int positionNumber) {
        this.positionNumber = positionNumber;
    }

    public static final class ProposalPersonBiographyId
            implements Serializable, Comparable<ProposalPersonBiographyId> {

        private Integer proposalPersonNumber;

        private Integer biographyNumber;

        private String developmentProposal;

        public ProposalPersonBiographyId(Integer proposalPersonNumber, Integer biographyNumber,
                String developmentProposal) {
            this.proposalPersonNumber = proposalPersonNumber;
            this.biographyNumber = biographyNumber;
            this.developmentProposal = developmentProposal;
        }

        public Integer getProposalPersonNumber() {
            return this.proposalPersonNumber;
        }

        public void setProposalPersonNumber(Integer proposalPersonNumber) {
            this.proposalPersonNumber = proposalPersonNumber;
        }

        public Integer getBiographyNumber() {
            return this.biographyNumber;
        }

        public void setBiographyNumber(Integer biographyNumber) {
            this.biographyNumber = biographyNumber;
        }

        public String getDevelopmentProposal() {
            return developmentProposal;
        }

        public void setDevelopmentProposal(String developmentProposal) {
            this.developmentProposal = developmentProposal;
        }

        @Override
        public String toString() {
            return new ToStringBuilder(this).append("proposalPersonNumber", this.proposalPersonNumber)
                    .append("biographyNumber", this.biographyNumber)
                    .append("developmentProposal", this.developmentProposal).toString();
        }

        @Override
        public boolean equals(Object other) {
            if (other == null)
                return false;
            if (other == this)
                return true;
            if (other.getClass() != this.getClass())
                return false;
            final ProposalPersonBiographyId rhs = (ProposalPersonBiographyId) other;
            return new EqualsBuilder().append(this.proposalPersonNumber, rhs.proposalPersonNumber)
                    .append(this.biographyNumber, rhs.biographyNumber)
                    .append(this.developmentProposal, rhs.developmentProposal).isEquals();
        }

        @Override
        public int hashCode() {
            return new HashCodeBuilder(17, 37).append(this.proposalPersonNumber).append(this.biographyNumber)
                    .append(this.developmentProposal).toHashCode();
        }

        @Override
        public int compareTo(ProposalPersonBiographyId other) {
            return new CompareToBuilder().append(this.proposalPersonNumber, other.proposalPersonNumber)
                    .append(this.biographyNumber, other.biographyNumber)
                    .append(this.developmentProposal, other.developmentProposal).toComparison();
        }
    }

    public DateTimeService getDateTimeService() {
        if (dateTimeService == null)
            dateTimeService = KcServiceLocator.getService(DateTimeService.class);
        return dateTimeService;
    }

    public void setDateTimeService(DateTimeService dateTimeService) {
        this.dateTimeService = dateTimeService;
    }

    public KcAttachmentService getKcAttachmentService() {
        if (kcAttachmentService == null)
            kcAttachmentService = KcServiceLocator.getService(KcAttachmentService.class);
        return kcAttachmentService;
    }

    public void setKcAttachmentService(KcAttachmentService kcAttachmentService) {
        this.kcAttachmentService = kcAttachmentService;
    }

    @PostRemove
    public void removeData() {
        if (getPersonnelAttachment() != null && getPersonnelAttachment().getFileDataId() != null) {
            getKcAttachmentDao().removeData(getPersonnelAttachment().getFileDataId());
        }
    }

    private KcAttachmentDataDao getKcAttachmentDao() {
        return KcServiceLocator.getService(KcAttachmentDataDao.class);
    }
}