org.fam.ejb.model.FamPlayer.java Source code

Java tutorial

Introduction

Here is the source code for org.fam.ejb.model.FamPlayer.java

Source

package org.fam.ejb.model;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */

import lombok.Getter;
import lombok.Setter;
import org.eclipse.persistence.annotations.Multitenant;
import org.eclipse.persistence.annotations.MultitenantType;
import org.eclipse.persistence.annotations.TenantDiscriminatorColumn;
import org.fam.common.constant.FamConstantes;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.joda.time.DateMidnight;
import org.joda.time.DateTime;
import org.joda.time.Years;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author gbougear
 */
@Getter
@Setter
@Entity
@Table(name = FamPlayer.TABLE_NAME)
@Multitenant(MultitenantType.SINGLE_TABLE)
@TenantDiscriminatorColumn(name = FamClub.COL_ID, contextProperty = FamConstantes.PROP_CLUB_TENANT)
@NamedQueries({ @NamedQuery(name = FamPlayer.FIND_ALL, query = "SELECT f FROM FamPlayer f"),
        @NamedQuery(name = FamPlayer.FIND_BY_ID_PLAYER, query = "SELECT f FROM FamPlayer f WHERE f.idPlayer = :idPlayer"),
        @NamedQuery(name = FamPlayer.FIND_POSSIBLE_PLAYERS, query = "SELECT f FROM FamPlayer f WHERE (f.email = :email) OR (f.lastName = :lastName AND f.firstName = :firstName)"),
        @NamedQuery(name = FamPlayer.FIND_BY_FAM_USER, query = "SELECT f FROM FamPlayer f WHERE f.famUser = :famUser"),
        @NamedQuery(name = FamPlayer.FIND_BY_DT_CREAT, query = "SELECT f FROM FamPlayer f WHERE f.dtCreat = :dtCreat"),
        @NamedQuery(name = FamPlayer.FIND_BY_DT_MODIF, query = "SELECT f FROM FamPlayer f WHERE f.dtModif = :dtModif") })
@XmlRootElement
public class FamPlayer extends FamEntity implements Serializable {

    private static final long serialVersionUID = 1122084647103216448L;
    /**
     *
     */
    public static final String TABLE_NAME = "fam_player";
    //
    public static final String FIND_ALL = "FamPlayer.findAll";
    public static final String FIND_BY_ID_PLAYER = "FamPlayer.findByIdPlayer";
    public static final String FIND_POSSIBLE_PLAYERS = "FamPlayer.findPossiblePlayers";
    public static final String FIND_BY_FAM_USER = "FamPlayer.findByFamUser";
    public static final String FIND_BY_DT_CREAT = "FamPlayer.findByDtCreat";
    public static final String FIND_BY_DT_MODIF = "FamPlayer.findByDtModif";
    /**
     *
     */
    public static final String COL_ID = "id_player";
    /**
     *
     */
    public static final String PROP_ID = "idPlayer";

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = COL_ID)
    private Long idPlayer;

    @Override
    public Long getId() {
        return this.getIdPlayer();
    }

    /**
     *
     */
    public static final String PROP_FIRST_NAME = "firstName";
    /**
     *
     */
    public static final String COL_FIRST_NAME = "first_name";
    @Basic(optional = false)
    @NotEmpty(message = "Prnom obligatoire")
    //    @Pattern(regexp = "[A-Za-z ]*", message = "must contain only letters and spaces")
    @Column(name = COL_FIRST_NAME)
    private String firstName;
    //
    /**
     *
     */
    public static final String PROP_LAST_NAME = "lastName";
    /**
     *
     */
    public static final String COL_LAST_NAME = "last_name";
    @Basic(optional = false)
    @NotEmpty(message = "Nom obligatoire")
    //    @Pattern(regexp = "[A-Za-z ]*", message = "must contain only letters and spaces")
    @Column(name = COL_LAST_NAME)
    private String lastName;
    //
    @Transient
    private String displayName;
    //
    /**
     *
     */
    public static final String PROP_EMAIL = "email";
    /**
     *
     */
    public static final String COL_EMAIL = "email";
    @Basic(optional = false)
    @Column(name = COL_EMAIL)
    @Email
    private String email;
    //
    /**
     *
     */
    public static final String PROP_NUM_LICENSE = "numLicense";
    /**
     *
     */
    public static final String COL_NUM_LICENSE = "num_license";
    @Basic(optional = false)
    //    @NotNull(message = "Numero licence obligatoire")
    @Column(name = COL_NUM_LICENSE)
    private Long numLicense;
    //
    /**
     *
     */
    public static final String COL_ID_USER = "id_user";
    /**
     *
     */
    public static final String PROP_USER = "famUser";
    @OneToOne //(optional = false)
    @JoinColumn(name = COL_ID_USER, referencedColumnName = FamUser.COL_ID)
    //    @NotNull
    private FamUser famUser;
    //
    /**
     *
     */
    public static final String PROP_DT_BIRTH = "dtBirth";
    /**
     *
     */
    public static final String COL_DT_BIRTH = "dt_birth";
    @Basic(optional = false)
    @Column(name = COL_DT_BIRTH)
    @Temporal(TemporalType.DATE)
    private Date dtBirth;
    //
    @Transient
    private Integer age;
    //
    /**
     *
     */
    public static final String PROP_DT_ARRIVAL = "dtArrival";
    /**
     *
     */
    public static final String COL_DT_ARRIVAL = "dt_arrival";
    @Basic(optional = false)
    @Column(name = COL_DT_ARRIVAL)
    @Temporal(TemporalType.DATE)
    private Date dtArrival;
    //
    @Transient
    private Integer seniority;
    //
    /**
     *
     */
    public static final String PROP_TEL = "tel";
    @Basic(optional = false)
    @Column(name = PROP_TEL)
    //    @Digits(fraction = 0, integer = 10)
    private String tel;
    /**
     *
     */
    public static final String PROP_ADDRESS = "address";
    @Basic(optional = false)
    @Column(name = PROP_ADDRESS)
    private String address;
    /**
     *
     */
    public static final String PROP_ZIPCODE = "zipcode";
    @Basic(optional = false)
    @Column(name = PROP_ZIPCODE)
    private String zipcode;
    /**
     *
     */
    public static final String PROP_CITY = "city";
    @Basic(optional = false)
    @Column(name = PROP_CITY)
    private String city;
    /**
     *
     */
    public static final String PROP_ICE_CONTACT = "iceContact";
    public static final String COL_ICE_CONTACT = "ice_contact";
    @Basic(optional = true)
    @Column(name = COL_ICE_CONTACT)
    private String iceContact;
    /**
     *
     */
    public static final String PROP_ICE_TEL = "iceTel";
    public static final String COL_ICE_TEL = "ice_tel";
    @Basic(optional = false)
    @Column(name = COL_ICE_TEL)
    private String iceTel;
    /**
     *
     */
    public static final String PROP_ICE_COMMENT = "iceComment";
    public static final String COL_ICE_COMMENT = "ice_comment";
    @Lob
    @Column(name = COL_ICE_COMMENT)
    private String iceComment;
    //
    //    @ManyToMany
    //    @JoinTable(name = FamPlayerSeason.TABLE_NAME,
    //    joinColumns = {
    //        @JoinColumn(name = COL_ID)},
    //    inverseJoinColumns = {
    //        @JoinColumn(name = FamSeason.COL_ID)})
    //    private List<FamSeason> famSeasonList;
    public static final String PROP_PLAYERSEASONS = "famPlayerSeasons";
    @OneToMany(mappedBy = FamPlayerSeason.PROP_PLAYER, cascade = CascadeType.ALL)
    private List<FamPlayerSeason> famPlayerSeasons;
    //
    //    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.)
    //    @JoinTable(name = "fam_player_position",
    //    joinColumns = {
    //        @JoinColumn(name = COL_ID)},
    //    inverseJoinColumns = {
    //        @JoinColumn(name = FamPosition.COL_ID)})
    public static final String PROP_POSITIONS = "famPlayerPositionList";
    @OneToMany(mappedBy = FamPlayerPosition.PROP_PLAYER, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @OrderBy(FamPlayerPosition.PROP_NUM_ORDER)
    private List<FamPlayerPosition> famPlayerPositionList;
    /**
     *
     */
    public static final String PROP_MATCHES = "famMatchTeamList";
    @OneToMany(mappedBy = FamMatchPlayer.PROP_PLAYER)
    private List<FamMatchPlayer> famMatchPlayer;
    //    /**
    //     *
    //     */
    //    public static final String PROP_CLUB = "famClub";
    //    /**
    //     *
    //     */
    //    public static final String COL_ID_CLUB = "id_club";
    //    @ManyToOne
    //    @JoinColumn(name = COL_ID_CLUB, referencedColumnName = FamClub.COL_ID)
    //    private FamClub famClub;
    //    //
    //    /**
    //     *
    //     */
    //    public static final String PROP_DEFAULT_TEAM = "famDefaultTeam";
    //    /**
    //     *
    //     */
    //    public static final String COL_ID_DEFAULT_TEAM = "id_default_team";
    //    @ManyToOne
    //    @JoinColumn(name = COL_ID_DEFAULT_TEAM, referencedColumnName = FamTeam.COL_ID)
    //    private FamTeam famDefaultTeam;

    /**
     *
     */
    public FamPlayer() {
    }

    public FamPlayerProfile getCurrentProfile() {
        return (getCurrentPlayerSeason() == null) ? null : getCurrentPlayerSeason().getFamPlayerProfile();
    }

    public FamPlayerStat getCurrentStat() {
        return (getCurrentPlayerSeason() == null) ? null : getCurrentPlayerSeason().getFamPlayerStat();
    }

    public FamPlayerSeason getCurrentPlayerSeason() {
        if (famPlayerSeasons != null) {
            for (FamPlayerSeason item : famPlayerSeasons) {
                if (item.getFamSeason().getCurrentSeason()) {
                    return item;
                }
            }
        }
        return null;
    }

    public FamClub getCurrentClub() {
        if (getCurrentPlayerSeason() == null) {
            return null;
        } else {
            return getCurrentPlayerSeason().getFamClub();
        }
    }

    public FamClub getClubForSeason(FamSeason season) {
        if (famPlayerSeasons != null) {
            for (FamPlayerSeason item : famPlayerSeasons) {
                if (item.getFamSeason().equals(season)) {
                    return item.getFamClub();
                }
            }
        }
        return null;
    }

    public FamTeam getCurrentTeam() {
        if (getCurrentPlayerSeason() == null) {
            return null;
        } else {
            return getCurrentPlayerSeason().getFamTeam();
        }
    }

    public FamTeam getTeamForSeason(FamSeason season) {
        if (famPlayerSeasons != null) {
            for (FamPlayerSeason item : famPlayerSeasons) {
                if (item.getFamSeason().equals(season)) {
                    return item.getFamTeam();
                }
            }
        }
        return null;
    }

    public FamPosition getPrincipalPosition() {
        if (famPlayerPositionList == null || famPlayerPositionList.isEmpty()) {
            return null;
        } else {
            return famPlayerPositionList.get(0).getFamPosition();
        }
    }

    @PostLoad
    @PostPersist
    @PostUpdate
    void afterLoad() {
        StringBuilder builder = new StringBuilder();
        if (firstName != null) {
            builder.append(firstName);
        }
        if (lastName != null) {
            builder.append(" ").append(lastName);
        }
        displayName = builder.toString();

        if (this.getDtBirth() != null) {
            DateMidnight date = new DateMidnight(this.getDtBirth());
            DateTime now = new DateTime();
            Years y = Years.yearsBetween(date, now);
            age = y.getYears();
        }
        if (this.getDtArrival() != null) {
            DateMidnight date = new DateMidnight(this.getDtArrival());
            DateTime now = new DateTime();
            Years y = Years.yearsBetween(date, now);
            seniority = y.getYears();
        }
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        if (!super.equals(o)) {
            return false;
        }

        FamPlayer famPlayer = (FamPlayer) o;

        return idPlayer.equals(famPlayer.idPlayer);

    }

    @Override
    public int hashCode() {
        int result = super.hashCode();
        result = 31 * result + idPlayer.hashCode();
        return result;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder();
        sb.append("FamPlayer");
        sb.append("{idPlayer=").append(idPlayer);
        sb.append(", firstName='").append(firstName).append('\'');
        sb.append(", lastName='").append(lastName).append('\'');
        sb.append(", displayName='").append(displayName).append('\'');
        sb.append(", email='").append(email).append('\'');
        sb.append(", numLicense=").append(numLicense);
        if (famUser != null) {
            sb.append(", famUser=").append(famUser.getDisplayName());
        }
        sb.append(", dtBirth=").append(dtBirth);
        sb.append(", age=").append(age);
        sb.append(", dtArrival=").append(dtArrival);
        sb.append(", seniority=").append(seniority);
        sb.append(", tel='").append(tel).append('\'');
        sb.append(", address='").append(address).append('\'');
        sb.append(", zipcode='").append(zipcode).append('\'');
        sb.append(", city='").append(city).append('\'');
        sb.append(", iceContact='").append(iceContact).append('\'');
        sb.append(", iceTel='").append(iceTel).append('\'');
        sb.append(", iceComment='").append(iceComment).append('\'');
        //        sb.append(", famPlayerSeasons=").append(famPlayerSeasons);
        //        sb.append(", famPlayerPositionList=").append(famPlayerPositionList);
        //        sb.append(", famMatchPlayer=").append(famMatchPlayer);
        sb.append('}');
        return sb.toString();
    }
}