Java tutorial
/*** Copyright (c) 2012 - 2020 Hrcules S. S. Jos Este arquivo parte do programa Oramento Domstico. Oramento Domstico um software livre; voc pode redistribui-lo e/ou modific-lo dentro dos termos da Licena Pblica Geral Menor GNU como publicada pela Fundao do Software Livre (FSF); na verso 2.1 da Licena. Este programa distribudo na esperana que possa ser til, mas SEM NENHUMA GARANTIA; sem uma garantia implcita de ADEQUAO a qualquer MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica Geral Menor GNU em portugus para maiores detalhes. Voc deve ter recebido uma cpia da Licena Pblica Geral Menor GNU sob o nome de "LICENSE.TXT" junto com este programa, se no, acesse o site do projeto no endereco https://github.com/herculeshssj/orcamento ou escreva para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Para mais informaes sobre o programa Oramento Domstico e seu autor entre em contato pelo e-mail herculeshssj@outlook.com, ou ainda escreva para Hrcules S. S. Jos, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, Marco II - Nova Iguau, RJ, Brasil. ***/ package br.com.hslife.orcamento.model; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.TreeMap; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Restrictions; import br.com.hslife.orcamento.entity.Conta; import br.com.hslife.orcamento.enumeration.CadastroSistema; import br.com.hslife.orcamento.enumeration.StatusLancamentoConta; import br.com.hslife.orcamento.enumeration.TipoConta; public class CriterioBuscaLancamentoConta { // Atributo que armazena os critrios selecionados private Map<String, Criterion> hibernateCriterions = new TreeMap<String, Criterion>(); private Conta conta; private String descricao; private Date dataInicio; private Date dataFim; private Long idAgrupamento; private CadastroSistema cadastro; private TipoConta[] tipoConta; private StatusLancamentoConta[] statusLancamentoConta; private Integer limiteResultado = 0; public void limparCriterios() { this.setDescricao(null); this.setCadastro(null); this.setTipoConta(null); this.setStatusLancamentoConta(null); this.setCadastro(null); } public String getDescricao() { return descricao; } public void setDescricao(String descricao) { this.descricao = descricao; // Remove a descrio anteriormente setada hibernateCriterions.remove("descricao"); if (descricao != null && !descricao.isEmpty()) hibernateCriterions.put("descricao", Restrictions.ilike("lancamento.descricao", descricao, MatchMode.ANYWHERE)); } public Date getDataInicio() { return dataInicio; } public void setDataInicio(Date dataInicio) { this.dataInicio = dataInicio; // Remove a data de incio anteriormente setada hibernateCriterions.remove("dataInicio"); if (dataInicio != null) hibernateCriterions.put("dataInicio", Restrictions.ge("lancamento.dataPagamento", dataInicio)); } public Date getDataFim() { return dataFim; } public void setDataFim(Date dataFim) { this.dataFim = dataFim; // Remove a data final anteriormente setada hibernateCriterions.remove("dataFim"); if (dataFim != null) hibernateCriterions.put("dataFim", Restrictions.le("lancamento.dataPagamento", dataFim)); } public Conta getConta() { return conta; } public void setConta(Conta conta) { this.conta = conta; // Caso tipoConta esteja setado, remove para dar lugar a conta if (conta != null) { if (hibernateCriterions.containsKey("tipoConta")) hibernateCriterions.remove("tipoConta"); hibernateCriterions.put("conta", Restrictions.eq("lancamento.conta.id", conta.getId())); } } public CadastroSistema getCadastro() { return cadastro; } public void setCadastro(CadastroSistema cadastro) { this.cadastro = cadastro; this.atribuirParametrosAgrupamento(); } private void atribuirParametrosAgrupamento() { // Remove os agrupamentos anteriormente setados hibernateCriterions.remove("categoria"); hibernateCriterions.remove("favorecido"); hibernateCriterions.remove("meiopagamento"); hibernateCriterions.remove("moeda"); if (cadastro != null) { switch (cadastro) { case CATEGORIA: hibernateCriterions.put("categoria", Restrictions.eq("lancamento.categoria.id", idAgrupamento)); break; case FAVORECIDO: hibernateCriterions.put("favorecido", Restrictions.eq("lancamento.favorecido.id", idAgrupamento)); break; case MEIOPAGAMENTO: hibernateCriterions.put("meiopagamento", Restrictions.eq("lancamento.meioPagamento.id", idAgrupamento)); break; case MOEDA: hibernateCriterions.put("moeda", Restrictions.eq("lancamento.moeda.id", idAgrupamento)); break; default: } } } public TipoConta[] getTipoConta() { return tipoConta; } public void setTipoConta(TipoConta[] tipoConta) { this.tipoConta = tipoConta; // Caso conta esteja setado, remove para dar lugar a tipoConta if (tipoConta != null && tipoConta.length > 0 && this.containsValidObjects(tipoConta)) { if (hibernateCriterions.containsKey("conta")) hibernateCriterions.remove("conta"); hibernateCriterions.put("tipoConta", Restrictions.in("con.tipoConta", tipoConta)); } } private boolean containsValidObjects(Object[] array) { int countValidObjects = 0; for (int i = 0; i < array.length; i++) { if (array[i] != null) countValidObjects++; } return countValidObjects == 0 ? false : true; } public StatusLancamentoConta[] getStatusLancamentoConta() { return statusLancamentoConta; } public void setStatusLancamentoConta(StatusLancamentoConta[] statusLancamentoConta) { this.statusLancamentoConta = statusLancamentoConta; hibernateCriterions.remove("statusLancamentoConta"); if (statusLancamentoConta != null && statusLancamentoConta.length > 0 && this.containsValidObjects(statusLancamentoConta)) { hibernateCriterions.put("statusLancamentoConta", Restrictions.in("lancamento.statusLancamentoConta", statusLancamentoConta)); } } public List<Criterion> buildCriteria() { return new ArrayList<Criterion>(hibernateCriterions.values()); } public Long getIdAgrupamento() { return idAgrupamento; } public void setIdAgrupamento(Long idAgrupamento) { this.idAgrupamento = idAgrupamento; this.atribuirParametrosAgrupamento(); } public Integer getLimiteResultado() { return limiteResultado; } public void setLimiteResultado(Integer limiteResultado) { this.limiteResultado = limiteResultado; } public int quantCriteriosDefinidos() { return hibernateCriterions.size(); } }