OrganisationalUnitTier.java

package com.tradecloud.domain.model.organisationalunit;

import com.tradecloud.common.base.StaticDataEntityBase;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

@Entity(name = "OrganisationalUnitTier")
@Table(name = "organisationalunittier")
@NamedQueries({
        @NamedQuery(name = "orgUnitTier.byName", query = "SELECT t FROM OrganisationalUnitTier t where lower(t.name) = lower(:name)"),
        @NamedQuery(name = "orgUnitTier.byLevel", query = "SELECT t FROM OrganisationalUnitTier t where t.level_ = :level"),
        @NamedQuery(name = "orgUnitTier.byCode", query = "SELECT t FROM OrganisationalUnitTier t where t.code = :code")})
@Access(AccessType.FIELD)
@XmlRootElement(name = "OrganisationalUnitTier")
@XmlAccessorType(XmlAccessType.FIELD)
public class OrganisationalUnitTier extends StaticDataEntityBase {

    private static final long serialVersionUID = 1L;

    //this field unfortunately has to be: parentLevel > childLevel
    //  e.g. BusinessUnit level 20, Division level_ 10
    //  we need to do it like this so that hibernate can orderBy Desc with Nulls last (only supported in Hibernate >4.2 to pass a nullsLast flag)
    @NotNull(message = "Level is required")
    private Integer level_;

    public OrganisationalUnitTier() {
    }

    public OrganisationalUnitTier(String name, int level_) {
        super(name, name);
        this.level_ = level_;
    }

    public OrganisationalUnitTier(String code, String name, int level_) {
        super(code, name);
        this.level_ = level_;
    }

    public Integer getLevel_() {
        return level_;
    }

    public void setLevel_(Integer level_) {
        this.level_ = level_;
    }

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