Java tutorial
/** * 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; } }