com.sample.domain.entities.anagrafica.Contratto.java Source code

Java tutorial

Introduction

Here is the source code for com.sample.domain.entities.anagrafica.Contratto.java

Source

/**
 *   30/dic/2010
 *
 * Copyright (c) 2010 Alten Italia, All Rights Reserved.
 *
 * This software is the confidential and proprietary information of
 * Alten Italia ("Confidential Information").
 * You shall not disclose such Confidential Information and shall use it
 * only in accordance with the terms of the license agreement you entered 
 * into with Alten Italia.
 *
 * Alten Italia - MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY 
 * OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, 
 * OR NON-INFRINGEMENT. ALTEN ITALIA SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED
 * BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR 
 * ITS DERIVATIVES.
 */
package com.sample.domain.entities.anagrafica;

import static com.sample.common.util.CommonsUtil.formatDate;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.springframework.core.style.ToStringCreator;

import com.sample.common.util.CommonsUtil;
import com.sample.domain.entities.anagrafica.accessor.TipologiaRendicontazione;

/**
 * La classe di dominio che modella un Contratto
 * 
 * @author Massimo Ugues
 * 
 */
@Entity
@Access(AccessType.FIELD)
@Table(name = "S_MC_CC_CONTRATTI")
public class Contratto implements Serializable, Cloneable {
    private static final long serialVersionUID = 7486372927300252332L;
    private static int MULTICHANNLEID_LENGTH = 17;

    @Id
    @Column(name = "COD_MULTICHANNELID")
    private String multichannelId;

    @ManyToOne(optional = false, cascade = CascadeType.PERSIST)
    @JoinColumns({ @JoinColumn(name = "ANAG_UTENTE", referencedColumnName = "ANAG_UTENTE"),
            @JoinColumn(name = "COD_ABI", referencedColumnName = "COD_ABI") })
    private Cliente cliente;

    /*
    @OneToMany(mappedBy = "contratto", cascade = CascadeType.PERSIST)
    private Collection<ContrattoRapporto> contrattoRapporti = new ArrayList<ContrattoRapporto>();
    */

    @Column(name = "COD_CANALE")
    private String codiceCanale;

    @Column(name = "DESC_ATTRIBUTO")
    private String descrizioneAttributo;

    @Transient
    private CodiceStato codiceStato = CodiceStato.SBLOCCATO;

    @Column(name = "DATA_CONTRATTO")
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar dataContratto = Calendar.getInstance();

    @Column(name = "DESC_TIPOBLOCCO")
    private String descrizioneBlocco;

    @Column(name = "DATA_BLOCCO")
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar dataBlocco;

    @Column(name = "DATA_SBLOCCO")
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar dataSblocco;

    @Column(name = "NUM_INFORMATIVAMERCATI")
    private Integer codiceInformativaMercati;

    @Column(name = "COD_OPTELEFONICO")
    private String codiceOperatoreTelefonico;

    @Column(name = "TIMEST_AGGIORNAMENTO")
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar dataAggiornamento = Calendar.getInstance();

    @Column(name = "FLAG_PRESAVISIONE")
    private Boolean presaVisioneAbilitata;

    @Transient
    private TipologiaRendicontazione rendicontazione = TipologiaRendicontazione.DISATTIVATA;

    @Transient
    private FlagAlert flagAlert = FlagAlert.ATTIVATO;

    public Contratto() {
        super();
    }

    public Contratto(String multichannel) {
        super();
        this.setMultichannelId(multichannel);
    }

    public String getMultichannelId() {
        return multichannelId;
    }

    public void setMultichannelId(String multichannelId) {
        if (multichannelId == null || multichannelId.length() != MULTICHANNLEID_LENGTH) {
            throw new IllegalArgumentException(
                    "multichannelId nullo o di lunghezza diversa da " + MULTICHANNLEID_LENGTH);
        }
        this.multichannelId = multichannelId;
        this.setCodiceCanale(multichannelId.substring(7, 9));
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    /*
    public Collection<ContrattoRapporto> getContrattoRapporti() {
       return contrattoRapporti;
    }
        
    public void addContrattoRapporto(ContrattoRapporto contrattoRapporto) {
       contrattoRapporto.setContratto(this);
       this.contrattoRapporti.add(contrattoRapporto);
    }
        
    public void setContrattoRapporti(Collection<ContrattoRapporto> contrattiRapporti) {
       this.contrattoRapporti = contrattiRapporti;
    }
    */

    public String getCodiceCanale() {
        return codiceCanale;
    }

    public void setCodiceCanale(String codiceCanale) {
        this.codiceCanale = codiceCanale;
    }

    public String getDescrizioneAttributo() {
        return descrizioneAttributo;
    }

    public void setDescrizioneAttributo(String descrizioneAttributo) {
        this.descrizioneAttributo = descrizioneAttributo;
    }

    public CodiceStato getCodiceStato() {
        return codiceStato;
    }

    public void setCodiceStato(CodiceStato codiceStato) {
        this.codiceStato = codiceStato;
    }

    @Access(AccessType.PROPERTY)
    @Column(name = "COD_STATO")
    String getCodiceStatoCode() {
        return (codiceStato != null) ? codiceStato.getCodiceStato() : null;
    }

    void setCodiceStatoCode(String codiceStatoCode) {
        codiceStatoCode = (codiceStatoCode != null) ? codiceStatoCode.trim() : codiceStatoCode;
        this.codiceStato = CodiceStato.decode(codiceStatoCode);
    }

    public Calendar getDataContratto() {
        return dataContratto;
    }

    public void setDataContratto(Calendar dataContratto) {
        this.dataContratto = dataContratto;
    }

    public String getDescrizioneBlocco() {
        return descrizioneBlocco;
    }

    public void setDescrizioneBlocco(String descrizioneBlocco) {
        this.descrizioneBlocco = descrizioneBlocco;
    }

    public Calendar getDataBlocco() {
        return dataBlocco;
    }

    public void setDataBlocco(Calendar dataBlocco) {
        this.dataBlocco = dataBlocco;
    }

    public Calendar getDataSblocco() {
        return dataSblocco;
    }

    public void setDataSblocco(Calendar dataSblocco) {
        this.dataSblocco = dataSblocco;
    }

    public Integer getCodiceInformativaMercati() {
        return codiceInformativaMercati;
    }

    public void setCodiceInformativaMercati(Integer codiceInformativaMercati) {
        this.codiceInformativaMercati = codiceInformativaMercati;
    }

    public String getCodiceOperatoreTelefonico() {
        return codiceOperatoreTelefonico;
    }

    public void setCodiceOperatoreTelefonico(String codiceOperatoreTelefonico) {
        this.codiceOperatoreTelefonico = codiceOperatoreTelefonico;
    }

    public Calendar getDataAggiornamento() {
        return dataAggiornamento;
    }

    public void setDataAggiornamento(Calendar dataAggiornamento) {
        this.dataAggiornamento = dataAggiornamento;
    }

    public Boolean isPresaVisioneAbilitata() {
        return presaVisioneAbilitata;
    }

    public void setPresaVisioneAbilitata(Boolean presaVisioneAbilitata) {
        this.presaVisioneAbilitata = presaVisioneAbilitata;
    }

    public TipologiaRendicontazione getRendicontazione() {
        return rendicontazione;
    }

    public void setRendicontazione(TipologiaRendicontazione rendicontazione) {
        this.rendicontazione = rendicontazione;
    }

    @Access(AccessType.PROPERTY)
    @Column(name = "FLAG_RENDICONTAZIONE")
    String getTipologiaRendicontazioneCode() {
        return (rendicontazione != null) ? rendicontazione.getTipologiaRendicontazione() : null;
    }

    void setTipologiaRendicontazioneCode(String tipologiaRendicontazione) {
        tipologiaRendicontazione = (tipologiaRendicontazione != null) ? tipologiaRendicontazione.trim()
                : tipologiaRendicontazione;
        this.rendicontazione = TipologiaRendicontazione.decode(tipologiaRendicontazione);
    }

    public FlagAlert getFlagAlert() {
        return flagAlert;
    }

    public void setFlagAlert(FlagAlert flagAlert) {
        this.flagAlert = flagAlert;
    }

    @Access(AccessType.PROPERTY)
    @Column(name = "FLAG_ALERT")
    String getFlagAlertCode() {
        return (flagAlert != null) ? flagAlert.getFlagAlert() : null;
    }

    void setFlagAlertCode(String flagAlertCode) {
        flagAlertCode = (flagAlertCode != null) ? flagAlertCode.trim() : flagAlertCode;
        this.flagAlert = FlagAlert.decode(flagAlertCode);
    }

    @Override
    public String toString() {

        return new ToStringCreator(this).append("multichannelId=" + multichannelId)
                .append("codiceStato=" + codiceStato).append("dataContratto=" + formatDate(dataContratto))
                .append("dataAggiornamento=" + formatDate(dataAggiornamento)).append("codiceCanale=" + codiceCanale)
                .append("flagAlert=" + flagAlert).append("flagRendicontazione=" + rendicontazione)
                .append("informativaMercati=" + codiceInformativaMercati).toString();
    }

    @Override
    public boolean equals(Object o) {
        boolean equals = false;
        if (o != null && o.getClass() == getClass()) {
            equals = ((Contratto) o).getMultichannelId().equals(getMultichannelId());
        }
        return equals;
    }

    @Override
    public int hashCode() {
        return (int) Long.parseLong(multichannelId);
    }

    @Override
    public Contratto clone() {
        Contratto clonedInstance = null;
        try {
            clonedInstance = (Contratto) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return clonedInstance;
    }
}