LocalizacaoUtil.java 11.7 KB
package br.gov.mc.arquitetura.util;

import java.util.Collection;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import br.gov.mc.arquitetura.persistencia.impl.UniversalDaoImpl;
import br.gov.mc.corporativo.entidade.CrpDistrito;
import br.gov.mc.corporativo.entidade.CrpMunicipio;
import br.gov.mc.corporativo.entidade.CrpPais;
import br.gov.mc.corporativo.entidade.CrpRegiao;
import br.gov.mc.corporativo.entidade.CrpSubdistrito;
import br.gov.mc.corporativo.entidade.CrpUf;

@Repository("localizacaoUtil")
public class LocalizacaoUtil extends UniversalDaoImpl {

	public Collection<CrpPais> pesquisar(CrpPais pais) {
		Criteria c = getCurrentSession().createCriteria(pais.getClass());

		if (pais != null) {
			if (pais.getAtivo() != null) {
				c.add(Restrictions.eq("ativo", pais.getAtivo()));
			}
			if (pais.getId() != null) {
				c.add(Restrictions.idEq(pais.getId()));
			}
			if (pais.getNome() != null && !"".equals(pais.getNome())) {
				c.add(Restrictions.ilike("nome", "%" + pais.getNome() + "%"));
			}
			if (pais.getSigla() != null && !"".equals(pais.getSigla())) {
				c.add(Restrictions.ilike("sigla", "%" + pais.getSigla() + "%"));
			}
		}

		return listByExample(c);
	}

	public Collection<CrpRegiao> pesquisar(CrpRegiao regiao) {
		Criteria c = getCurrentSession().createCriteria(regiao.getClass());

		if (regiao != null) {
			if (regiao.getId() != null) {
				c.add(Restrictions.idEq(regiao.getId()));
			}
			if (regiao.getNome() != null && !"".equals(regiao.getNome())) {
				c.add(Restrictions.ilike("nome", "%" + regiao.getNome() + "%"));
			}
			if (regiao.getSigla() != null && !"".equals(regiao.getSigla())) {
				c.add(Restrictions.ilike("sigla", "%" + regiao.getSigla() + "%"));
			}
		}

		return listByExample(c);
	}

	public Collection<CrpUf> pesquisar(CrpUf uf) {
		Criteria c = getCurrentSession().createCriteria(uf.getClass());

		if (uf != null) {
			if (uf.getId() != null) {
				c.add(Restrictions.idEq(uf.getId()));
			}
			if (uf.getNome() != null && !"".equals(uf.getNome())) {
				c.add(Restrictions.ilike("nome", "%" + uf.getNome() + "%"));
			}
			if (uf.getSigla() != null && !"".equals(uf.getSigla())) {
				c.add(Restrictions.ilike("sigla", "%" + uf.getSigla() + "%"));
			}
			if (uf.getRegiao() != null) {

				if (uf.getRegiao().getId() != null) {
					c.createCriteria("regiao").add(Restrictions.idEq(uf.getRegiao().getId()));
				}
				if (uf.getRegiao().getNome() != null && !"".equals(uf.getRegiao().getNome())) {
					c.createCriteria("regiao").add(Restrictions.ilike("nome", "%" + uf.getRegiao().getNome() + "%"));
				}
				if (uf.getRegiao().getSigla() != null && !"".equals(uf.getRegiao().getSigla())) {
					c.createCriteria("regiao").add(Restrictions.ilike("sigla", "%" + uf.getRegiao().getSigla() + "%"));
				}
			}
			if (uf.getPais() != null && !"".equals(uf.getPais())) {
				c.createCriteria("pais").add(Restrictions.idEq(uf.getPais().getId()));
			}
		}

		return c.list();
	}

	public Collection<CrpDistrito> pesquisar(CrpDistrito distrito) {
		Criteria c = getCurrentSession().createCriteria(distrito.getClass());

		if (distrito != null) {
			if (distrito.getId() != null) {
				c.add(Restrictions.idEq(distrito.getId()));
			}
			if (distrito.getLatitude() != null && !"".equals(distrito.getLatitude())) {
				c.add(Restrictions.eq("latitude", distrito.getLatitude()));
			}
			if (distrito.getLongitude() != null && !"".equals(distrito.getLongitude())) {
				c.add(Restrictions.eq("longitude", distrito.getLongitude()));
			}
			if (distrito.getMunicipio() != null) {
				if (distrito.getMunicipio() != null) {
					Criteria cm = c.createCriteria("municipio");

					if (distrito.getMunicipio().getId() != null && !"".equals(distrito.getMunicipio().getId())) {
						cm.add(Restrictions.idEq(distrito.getMunicipio().getId()));
					}
					if (distrito.getMunicipio().getUf() != null) {
						Criteria cuf = cm.createCriteria("uf");

						if (distrito.getMunicipio().getUf().getId() != null) {
							cuf.add(Restrictions.idEq(distrito.getMunicipio().getUf().getId()));
						}
						if (distrito.getMunicipio().getUf().getNome() != null
										&& !"".equals(distrito.getMunicipio().getUf().getNome())) {
							cuf.add(Restrictions.ilike("nome", "%" + distrito.getMunicipio().getUf().getNome() + "%"));
						}
						if (distrito.getMunicipio().getUf().getSigla() != null
										&& !"".equals(distrito.getMunicipio().getUf().getSigla())) {
							cuf
											.add(Restrictions.ilike("sigla", "%"
															+ distrito.getMunicipio().getUf().getSigla() + "%"));
						}
						if (distrito.getMunicipio().getUf().getRegiao() != null) {

							if (distrito.getMunicipio().getUf().getRegiao().getId() != null) {
								cuf.createCriteria("regiao").add(
												Restrictions.idEq(distrito.getMunicipio().getUf().getRegiao().getId()));
							}
							if (distrito.getMunicipio().getUf().getRegiao().getNome() != null
											&& !"".equals(distrito.getMunicipio().getUf().getRegiao().getNome())) {
								cuf.createCriteria("regiao").add(
												Restrictions.ilike("nome", "%"
																+ distrito.getMunicipio().getUf().getRegiao().getNome()
																+ "%"));
							}
							if (distrito.getMunicipio().getUf().getRegiao().getSigla() != null
											&& !"".equals(distrito.getMunicipio().getUf().getRegiao().getSigla())) {
								cuf.createCriteria("regiao").add(
												Restrictions.ilike("sigla", "%"
																+ distrito.getMunicipio().getUf().getRegiao()
																				.getSigla() + "%"));
							}
						}
					}
				}
			}
			if (distrito.getNome() != null && !"".equals(distrito.getNome())) {
				c.add(Restrictions.ilike("nome", "%" + distrito.getNome() + "%"));
			}
		}

		return listByExample(c);
	}

	public Collection<CrpSubdistrito> pesquisar(CrpSubdistrito subDistrito) {
		Criteria c = getCurrentSession().createCriteria(subDistrito.getClass());

		if (subDistrito != null) {
			if (subDistrito.getId() != null) {
				c.add(Restrictions.idEq(subDistrito.getId()));
			}
			if (subDistrito.getLatitude() != null && !"".equals(subDistrito.getLatitude())) {
				c.add(Restrictions.eq("latitude", subDistrito.getLatitude()));
			}
			if (subDistrito.getLongitude() != null && !"".equals(subDistrito.getLongitude())) {
				c.add(Restrictions.eq("longitude", subDistrito.getLongitude()));
			}
			if (subDistrito.getNome() != null && !"".equals(subDistrito.getNome())) {
				c.add(Restrictions.ilike("nome", "%" + subDistrito.getNome() + "%"));
			}
			if (subDistrito.getDistrito() != null) {

				Criteria cd = c.createCriteria("distrito");
				if (subDistrito.getDistrito().getId() != null && !subDistrito.getDistrito().getId().equals("")) {
					cd.add(Restrictions.idEq(subDistrito.getDistrito().getId()));
				}
				if (subDistrito.getDistrito().getLatitude() != null
								&& !"".equals(subDistrito.getDistrito().getLatitude())) {
					cd.createCriteria("distrito").add(
									Restrictions.eq("latitude", subDistrito.getDistrito().getLatitude()));
				}
				if (subDistrito.getDistrito().getLongitude() != null
								&& !"".equals(subDistrito.getDistrito().getLongitude())) {
					cd.createCriteria("distrito").add(
									Restrictions.eq("longitude", subDistrito.getDistrito().getLongitude()));
				}
				if (subDistrito.getDistrito().getMunicipio() != null) {
					Criteria cm = cd.createCriteria("municipio");

					if (subDistrito.getDistrito().getMunicipio().getId() != null
									&& !"".equals(subDistrito.getDistrito().getMunicipio().getId())) {
						cm.add(Restrictions.idEq(subDistrito.getDistrito().getMunicipio().getId()));
					}
					if (subDistrito.getDistrito().getMunicipio().getUf() != null) {
						Criteria cuf = cm.createCriteria("uf");

						if (subDistrito.getDistrito().getMunicipio().getUf().getId() != null) {
							cuf.add(Restrictions.idEq(subDistrito.getDistrito().getMunicipio().getUf().getId()));
						}
						if (subDistrito.getDistrito().getMunicipio().getUf().getNome() != null
										&& !"".equals(subDistrito.getDistrito().getMunicipio().getUf().getNome())) {
							cuf.add(Restrictions.ilike("nome", "%"
											+ subDistrito.getDistrito().getMunicipio().getUf().getNome() + "%"));
						}
						if (subDistrito.getDistrito().getMunicipio().getUf().getSigla() != null
										&& !"".equals(subDistrito.getDistrito().getMunicipio().getUf().getSigla())) {
							cuf.add(Restrictions.ilike("sigla", "%"
											+ subDistrito.getDistrito().getMunicipio().getUf().getSigla() + "%"));
						}
						if (subDistrito.getDistrito().getMunicipio().getUf().getRegiao() != null) {

							if (subDistrito.getDistrito().getMunicipio().getUf().getRegiao().getId() != null) {
								cuf.createCriteria("regiao").add(
												Restrictions.idEq(subDistrito.getDistrito().getMunicipio().getUf()
																.getRegiao().getId()));
							}
							if (subDistrito.getDistrito().getMunicipio().getUf().getRegiao().getNome() != null
											&& !"".equals(subDistrito.getDistrito().getMunicipio().getUf().getRegiao()
															.getNome())) {
								cuf.createCriteria("regiao").add(
												Restrictions.ilike("nome", "%"
																+ subDistrito.getDistrito().getMunicipio().getUf()
																				.getRegiao().getNome() + "%"));
							}
							if (subDistrito.getDistrito().getMunicipio().getUf().getRegiao().getSigla() != null
											&& !"".equals(subDistrito.getDistrito().getMunicipio().getUf().getRegiao()
															.getSigla())) {
								cuf.createCriteria("regiao").add(
												Restrictions.ilike("sigla", "%"
																+ subDistrito.getDistrito().getMunicipio().getUf()
																				.getRegiao().getSigla() + "%"));
							}
						}
					}
				}
				if (subDistrito.getDistrito().getNome() != null && !"".equals(subDistrito.getDistrito().getNome())) {
					c.createCriteria("distrito").add(
									Restrictions.ilike("nome", "%" + subDistrito.getDistrito().getNome() + "%"));
				}
			}
		}

		return listByExample(c);
	}

	public Collection<CrpMunicipio> pesquisar(CrpMunicipio municipio) {
		Criteria c = getCurrentSession().createCriteria(municipio.getClass());

		if (municipio != null) {
			if (municipio.getId() != null && !"".equals(municipio.getId())) {
				c.add(Restrictions.idEq(municipio.getId()));
			}
			
			if(municipio.getNome() != null && !municipio.getNome().equals("")){
				c.add(Restrictions.like("nome", municipio.getNome()));
			}
			
			if (municipio.getUf() != null) {
				Criteria cuf = c.createCriteria("uf");

				if (municipio.getUf().getId() != null) {
					cuf.add(Restrictions.idEq(municipio.getUf().getId()));
				}
				if (municipio.getUf().getNome() != null && !"".equals(municipio.getUf().getNome())) {
					cuf.add(Restrictions.ilike("nome", "%" + municipio.getUf().getNome() + "%"));
				}
				if (municipio.getUf().getSigla() != null && !"".equals(municipio.getUf().getSigla())) {
					cuf.add(Restrictions.ilike("sigla", "%" + municipio.getUf().getSigla() + "%"));
				}
				if (municipio.getUf().getRegiao() != null) {
					
					Criteria cRegiao = cuf.createCriteria("regiao");
					
					if (municipio.getUf().getRegiao().getId() != null) {
						cRegiao.add(Restrictions.idEq(municipio.getUf().getRegiao().getId()));
					}
					if (municipio.getUf().getRegiao().getNome() != null
									&& !"".equals(municipio.getUf().getRegiao().getNome())) {
						cRegiao.add(
														Restrictions
																		.ilike("nome", "%"
																						+ municipio.getUf().getRegiao()
																										.getNome()
																						+ "%"));
					}
					if (municipio.getUf().getRegiao().getSigla() != null
									&& !"".equals(municipio.getUf().getRegiao().getSigla())) {
						cRegiao.add(
										Restrictions.ilike("sigla", "%" + municipio.getUf().getRegiao().getSigla()
														+ "%"));
					}
				}
			}
		}

		return listByExample(c);
	}

}