org.projectforge.business.fibu.AuftragsPositionVO.java Source code

Java tutorial

Introduction

Here is the source code for org.projectforge.business.fibu.AuftragsPositionVO.java

Source

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition 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 General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.business.fibu;

import java.io.Serializable;
import java.math.BigDecimal;

import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.builder.HashCodeBuilder;

/**
 * Reprsentiert einee Position innerhalb eines Auftrags als bersichtsobject (value object) zur Verwendung z. B. im TaskTree.
 * @author Kai Reinhard (k.reinhard@micromata.de)
 */
public class AuftragsPositionVO implements Comparable<AuftragsPositionVO>, Serializable {
    private static final long serialVersionUID = 5425767060569257885L;

    private short number;

    private Integer auftragId;

    private Integer auftragNummer;

    private String auftragTitle;

    private AuftragsStatus auftragsStatus;

    private BigDecimal auftragsPersonDays;

    private Integer taskId;

    private AuftragsPositionsArt art;

    private AuftragsPositionsStatus status;

    private String titel;

    private BigDecimal nettoSumme;

    private BigDecimal personDays;

    private boolean vollstaendigFakturiert;

    public AuftragsPositionVO(final AuftragsPositionDO auftragsPosition) {
        final AuftragDO auftrag = auftragsPosition.getAuftrag();
        this.number = auftragsPosition.getNumber();
        if (auftrag != null) { // Should be always true.
            this.auftragId = auftrag.getId();
            this.auftragNummer = auftrag.getNummer();
            this.auftragTitle = auftrag.getTitel();
            this.auftragsStatus = auftrag.getAuftragsStatus();
            this.auftragsPersonDays = auftrag.getPersonDays();
        }
        this.taskId = auftragsPosition.getTaskId();
        this.art = auftragsPosition.getArt();
        this.status = auftragsPosition.getStatus();
        this.titel = auftragsPosition.getTitel();
        this.nettoSumme = auftragsPosition.getNettoSumme();
        this.personDays = auftragsPosition.getPersonDays();
        if (this.personDays == null) {
            this.personDays = BigDecimal.ZERO;
        }
        this.vollstaendigFakturiert = auftragsPosition.isVollstaendigFakturiert();
    }

    public short getNumber() {
        return number;
    }

    public BigDecimal getNettoSumme() {
        return nettoSumme;
    }

    public BigDecimal getPersonDays() {
        return personDays;
    }

    public AuftragsPositionsStatus getStatus() {
        return status;
    }

    public AuftragsPositionsArt getArt() {
        return art;
    }

    public String getTitel() {
        return titel;
    }

    public boolean isVollstaendigFakturiert() {
        return vollstaendigFakturiert;
    }

    public Integer getAuftragId() {
        return auftragId;
    }

    public Integer getAuftragNummer() {
        return auftragNummer;
    }

    /**
     * @see AuftragDO#getTitel()
     */
    public String getAuftragTitle() {
        return auftragTitle;
    }

    /**
     * @see AuftragDO#getAuftragsStatus()
     */
    public AuftragsStatus getAuftragsStatus() {
        return auftragsStatus;
    }

    /**
     * @see AuftragDO#getPersonDays()
     */
    public BigDecimal getAuftragsPersonDays() {
        return auftragsPersonDays;
    }

    public Integer getTaskId() {
        return taskId;
    }

    @Override
    public boolean equals(Object o) {
        if (o instanceof AuftragsPositionVO) {
            AuftragsPositionVO other = (AuftragsPositionVO) o;
            if (ObjectUtils.equals(this.getNumber(), other.getNumber()) == false)
                return false;
            if (ObjectUtils.equals(this.getAuftragId(), other.getAuftragId()) == false)
                return false;
            return true;
        }
        return false;
    }

    @Override
    public int hashCode() {
        HashCodeBuilder hcb = new HashCodeBuilder();
        hcb.append(getNumber());
        hcb.append(getAuftragId());
        return hcb.toHashCode();
    }

    public int compareTo(final AuftragsPositionVO o) {
        if (this.auftragNummer.equals(o.auftragNummer) == false) {
            return this.auftragNummer.compareTo(o.auftragNummer);
        }
        if (this.number < o.number) {
            return -1;
        } else if (this.number == o.number) {
            return 0;
        } else {
            return +1;
        }
    }
}