package gcom.cadastro.imovel; import gcom.interceptor.ObjetoTransacao; import gcom.util.ConstantesSistema; import gcom.util.filtro.Filtro; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.Date; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; public class Categoria extends ObjetoTransacao { private static final long serialVersionUID = 1L; private Integer id; private String descricao; private String descricaoAbreviada; private Integer consumoMinimo; private Integer consumoEstouro; private Integer consumoMaximoEconomiasValidacao; private BigDecimal vezesMediaEstouro; private Integer mediaBaixoConsumo; private BigDecimal porcentagemMediaBaixoConsumo; private Integer consumoAlto; private BigDecimal vezesMediaAltoConsumo; private Short indicadorUso; private Date ultimaAlteracao; private Integer numeroConsumoMaximoEc; private Short indicadorCobrancaAcrescimos; private String descricaoComId; private Short fatorEconomias; private short indicadorPermissaoEspecial; private CategoriaTipo categoriaTipo; // constantes public final static int RESIDENCIAL_INT = 1; public final static int COMERCIAL_INT = 2; public final static int INDUSTRIAL_INT = 3; public final static int PUBLICO_INT = 4; public final static Integer RESIDENCIAL = new Integer(1); public final static Integer COMERCIAL = new Integer(2); public final static Integer INDUSTRIAL = new Integer(3); public final static Integer PUBLICO = new Integer(4); public final static String RESIDENCIAL_DESCRICAO_ABREVIADA = "RES"; public final static String COMERCIAL_DESCRICAO_ABREVIADA = "COM"; public final static String INDUSTRIAL_DESCRICAO_ABREVIADA = "IND"; public final static String PUBLICO_DESCRICAO_ABREVIADA = "PUB"; private Integer quantidadeEconomiasCategoria; public Categoria() { } public Categoria(Integer id) { this.id = id; } public Categoria(String descricao, String descricaoAbreviada, Integer consumoMinimo, Integer consumoEstouro, BigDecimal vezesMediaEstouro, Integer mediaBaixoConsumo, BigDecimal porcentagemMediaBaixoConsumo, Integer consumoAlto, BigDecimal vezesMediaAltoConsumo, Short indicadorUso, Date ultimaAlteracao) { this.descricao = descricao; this.descricaoAbreviada = descricaoAbreviada; this.consumoMinimo = consumoMinimo; this.consumoEstouro = consumoEstouro; this.vezesMediaEstouro = vezesMediaEstouro; this.mediaBaixoConsumo = mediaBaixoConsumo; this.porcentagemMediaBaixoConsumo = porcentagemMediaBaixoConsumo; this.consumoAlto = consumoAlto; this.vezesMediaAltoConsumo = vezesMediaAltoConsumo; this.indicadorUso = indicadorUso; this.ultimaAlteracao = ultimaAlteracao; } public Categoria(String descricao, String descricaoAbreviada, Integer consumoMinimo, Integer consumoEstouro, BigDecimal vezesMediaEstouro, Integer mediaBaixoConsumo, BigDecimal porcentagemMediaBaixoConsumo, Integer consumoAlto, BigDecimal vezesMediaAltoConsumo, Short indicadorUso, Date ultimaAlteracao, CategoriaTipo categoriaTipo) { this.descricao = descricao; this.descricaoAbreviada = descricaoAbreviada; this.consumoMinimo = consumoMinimo; this.consumoEstouro = consumoEstouro; this.vezesMediaEstouro = vezesMediaEstouro; this.mediaBaixoConsumo = mediaBaixoConsumo; this.porcentagemMediaBaixoConsumo = porcentagemMediaBaixoConsumo; this.consumoAlto = consumoAlto; this.vezesMediaAltoConsumo = vezesMediaAltoConsumo; this.indicadorUso = indicadorUso; this.ultimaAlteracao = ultimaAlteracao; this.categoriaTipo = categoriaTipo; } public Categoria(String descricao, String descricaoAbreviada, Integer consumoMinimo, Integer consumoEstouro, BigDecimal vezesMediaEstouro, Integer mediaBaixoConsumo, BigDecimal porcentagemMediaBaixoConsumo, Integer consumoAlto, BigDecimal vezesMediaAltoConsumo, Short indicadorUso, Date ultimaAlteracao, Integer numeroConsumoMaximoEc) { this.descricao = descricao; this.descricaoAbreviada = descricaoAbreviada; this.consumoMinimo = consumoMinimo; this.consumoEstouro = consumoEstouro; this.vezesMediaEstouro = vezesMediaEstouro; this.mediaBaixoConsumo = mediaBaixoConsumo; this.porcentagemMediaBaixoConsumo = porcentagemMediaBaixoConsumo; this.consumoAlto = consumoAlto; this.vezesMediaAltoConsumo = vezesMediaAltoConsumo; this.indicadorUso = indicadorUso; this.ultimaAlteracao = ultimaAlteracao; this.numeroConsumoMaximoEc = numeroConsumoMaximoEc; } public CategoriaTipo getCategoriaTipo() { return categoriaTipo; } public void setCategoriaTipo(CategoriaTipo categoriaTipo) { this.categoriaTipo = categoriaTipo; } public Categoria(String descricao, String descricaoAbreviada) { this.descricao = descricao; this.descricaoAbreviada = descricaoAbreviada; } public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getDescricao() { return this.descricao; } public void setDescricao(String descricao) { this.descricao = descricao; } public String getDescricaoAbreviada() { return this.descricaoAbreviada; } public void setDescricaoAbreviada(String descricaoAbreviada) { this.descricaoAbreviada = descricaoAbreviada; } public Integer getConsumoMinimo() { return this.consumoMinimo; } public void setConsumoMinimo(Integer consumoMinimo) { this.consumoMinimo = consumoMinimo; } public Integer getConsumoEstouro() { return this.consumoEstouro; } public void setConsumoEstouro(Integer consumoEstouro) { this.consumoEstouro = consumoEstouro; } public BigDecimal getVezesMediaEstouro() { return this.vezesMediaEstouro; } public void setVezesMediaEstouro(BigDecimal vezesMediaEstouro) { this.vezesMediaEstouro = vezesMediaEstouro; } public Integer getMediaBaixoConsumo() { return this.mediaBaixoConsumo; } public void setMediaBaixoConsumo(Integer mediaBaixoConsumo) { this.mediaBaixoConsumo = mediaBaixoConsumo; } public BigDecimal getPorcentagemMediaBaixoConsumo() { return this.porcentagemMediaBaixoConsumo; } public void setPorcentagemMediaBaixoConsumo( BigDecimal porcentagemMediaBaixoConsumo) { this.porcentagemMediaBaixoConsumo = porcentagemMediaBaixoConsumo; } public Integer getConsumoAlto() { return this.consumoAlto; } public void setConsumoAlto(Integer consumoAlto) { this.consumoAlto = consumoAlto; } public BigDecimal getVezesMediaAltoConsumo() { return this.vezesMediaAltoConsumo; } public void setVezesMediaAltoConsumo(BigDecimal vezesMediaAltoConsumo) { this.vezesMediaAltoConsumo = vezesMediaAltoConsumo; } public Short getIndicadorUso() { return this.indicadorUso; } public void setIndicadorUso(Short indicadorUso) { this.indicadorUso = indicadorUso; } public Date getUltimaAlteracao() { return this.ultimaAlteracao; } public void setUltimaAlteracao(Date ultimaAlteracao) { this.ultimaAlteracao = ultimaAlteracao; } public String toString() { return "Categoria [id=" + id + "]"; } public boolean equals(Object other) { if ((this == other)) { return true; } if (!(other instanceof Categoria)) { return false; } Categoria castOther = (Categoria) other; return new EqualsBuilder().append(this.getId(), castOther.getId()) .isEquals(); } public int hashCode() { return new HashCodeBuilder().append(getId()).append(getConsumoAlto()) .append(getConsumoEstouro()).append(getConsumoMinimo()) .append(getDescricao()).append(getDescricaoAbreviada()) .append(getIndicadorUso()).append(getMediaBaixoConsumo()) .append(getPorcentagemMediaBaixoConsumo()) .append(getVezesMediaAltoConsumo()) .append(getUltimaAlteracao()).append(getVezesMediaEstouro()) .toHashCode(); } public Integer getQuantidadeEconomiasCategoria() { return quantidadeEconomiasCategoria; } public void setQuantidadeEconomiasCategoria(Integer quantidadeEconomiasCategoria) { this.quantidadeEconomiasCategoria = quantidadeEconomiasCategoria; } public String[] retornaCamposChavePrimaria() { String[] retorno = new String[1]; retorno[0] = "id"; return retorno; } public Filtro retornaFiltro() { FiltroCategoria filtroCategoria = new FiltroCategoria(); filtroCategoria.adicionarParametro(new ParametroSimples( FiltroCategoria.CODIGO, this.getId())); return filtroCategoria; } public Integer getNumeroConsumoMaximoEc() { return numeroConsumoMaximoEc; } public void setNumeroConsumoMaximoEc(Integer numeroConsumoMaximoEc) { this.numeroConsumoMaximoEc = numeroConsumoMaximoEc; } public Short getIndicadorCobrancaAcrescimos() { return indicadorCobrancaAcrescimos; } public void setIndicadorCobrancaAcrescimos(Short indicadorCobrancaAcrescimos) { this.indicadorCobrancaAcrescimos = indicadorCobrancaAcrescimos; } public String getDescricaoComId() { if (this.getId().compareTo(10) == -1) { descricaoComId = "0" + getId() + " - " + getDescricao(); } else { descricaoComId = getId() + " - " + getDescricao(); } return descricaoComId; } @Override public String getDescricaoParaRegistroTransacao() { return this.getDescricao(); } @Override public void initializeLazy() { getDescricao(); } public Integer getConsumoMaximoEconomiasValidacao() { return consumoMaximoEconomiasValidacao; } public void setConsumoMaximoEconomiasValidacao( Integer consumoMaximoEconomiasValidacao) { this.consumoMaximoEconomiasValidacao = consumoMaximoEconomiasValidacao; } public Short getFatorEconomias() { return fatorEconomias; } public void setFatorEconomias(Short fatorEconomias) { this.fatorEconomias = fatorEconomias; } public short getIndicadorPermissaoEspecial() { return indicadorPermissaoEspecial; } public void setIndicadorPermissaoEspecial(short indicadorPermissaoEspecial) { this.indicadorPermissaoEspecial = indicadorPermissaoEspecial; } public boolean categoriaCobraAcrescimo() { return this != null && indicadorCobrancaAcrescimos.equals(ConstantesSistema.SIM); } public boolean categoriaCobraAcrescimoEncerramento() { return this != null && indicadorCobrancaAcrescimos.equals(ConstantesSistema.ENCERRAMENTO_ARRECADACAO); } public boolean isResidencial() { return id.intValue() == RESIDENCIAL.intValue(); } public boolean isComercial() { return id.intValue() == COMERCIAL.intValue(); } public boolean isIndustrial() { return id.intValue() == INDUSTRIAL.intValue(); } public boolean isPublico() { return id.intValue() == PUBLICO.intValue(); } }