/**
* CentralIT - CITSmart
*/
package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import br.com.centralit.citcorpore.bean.CategoriaServicoDTO;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.integracao.Condition;
import br.com.citframework.integracao.CrudDaoDefaultImpl;
import br.com.citframework.integracao.Field;
import br.com.citframework.integracao.Order;
import br.com.citframework.util.Constantes;
/**
* @author rosana.godinho
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class CategoriaServicoDao extends CrudDaoDefaultImpl {
public CategoriaServicoDao() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idCategoriaServico", "idCategoriaServico", true, true, false, false));
listFields.add(new Field("idCategoriaServicoPai", "idCategoriaServicoPai", false, false, false, false));
listFields.add(new Field("idEmpresa", "idEmpresa", false, false, false, false));
listFields.add(new Field("nomeCategoriaServico", "nomeCategoriaServico", false, false, false, false));
listFields.add(new Field("DataInicio", "dataInicio", false, false, false, false));
listFields.add(new Field("DataFim", "dataFim", false, false, false, false));
listFields.add(new Field("nomeCategoriaServicoConcatenado", "nomeCategoriaServicoConcatenado", false, false, false, false));
return listFields;
}
public String getTableName() {
return "CATEGORIASERVICO";
}
public Collection find(IDto obj) throws PersistenceException {
return null;
}
public Collection list() throws PersistenceException {
List list = new ArrayList();
list.add(new Order("nomeCategoriaServico"));
return super.list(list);
}
public Class getBean() {
return CategoriaServicoDTO.class;
}
public Collection findSemPai() throws PersistenceException {
String sql = "SELECT idCategoriaServico, idCategoriaServicoPai, idEmpresa, nomeCategoriaServico, DataInicio FROM CATEGORIASERVICO WHERE idCategoriaServicoPai IS NULL AND dataFim IS NULL ORDER BY nomeCategoriaServico ";
List colDados = this.execSQL(sql, null);
if (colDados != null) {
List fields = new ArrayList();
fields.add("idCategoriaServico");
fields.add("idCategoriaServicoPai");
fields.add("idEmpresa");
fields.add("nomeCategoriaServico");
fields.add("dataInicio");
return this.listConvertion(CategoriaServicoDTO.class, colDados, fields);
}
return null;
}
public Collection findByIdPai(Integer idCategoriaPaiParm) throws PersistenceException {
String sql = "SELECT idCategoriaServico, idCategoriaServicoPai, idEmpresa, nomeCategoriaServico, DataInicio FROM CATEGORIASERVICO WHERE idCategoriaServicoPai = ? AND dataFim IS NULL ORDER BY nomeCategoriaServico ";
List colDados = this.execSQL(sql, new Object[] { idCategoriaPaiParm });
if (colDados != null) {
List fields = new ArrayList();
fields.add("idCategoriaServico");
fields.add("idCategoriaServicoPai");
fields.add("idEmpresa");
fields.add("nomeCategoriaServico");
fields.add("dataInicio");
return this.listConvertion(CategoriaServicoDTO.class, colDados, fields);
}
return null;
}
/**
* Lista os nomes da empresa.
*
* @param idEmpresa
* @return
* @throws Exception
*/
public Collection listByEmpresa(Integer idEmpresa) throws PersistenceException {
List list = new ArrayList();
list.add(new Order("nomeCategoriaServico"));
CategoriaServicoDTO obj = new CategoriaServicoDTO();
obj.setIdEmpresa(idEmpresa);
return super.find(obj, list);
}
/**
* Retorna lista de Categoria Servi�o ativas.
*
* @return Collection
* @throws Exception
*/
public Collection listCategoriasAtivas() throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("dataFim", "is", null));
ordenacao.add(new Order("nomeCategoriaServico"));
return super.findByCondition(condicao, ordenacao);
}
/**
* Retorna lista de Categoria Servi�o setado idPai e idFilho.
*
* @return Collection
* @throws Exception
*/
public List<CategoriaServicoDTO> listCategoriasServicoidPaiFilho(CategoriaServicoDTO bean) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("nomeCategoriaServico", "=", bean.getNomeCategoriaServico()));
condicao.add(new Condition("idCategoriaServicoPai", "=", bean.getIdCategoriaServicoPai()));
return (List<CategoriaServicoDTO>) super.findByCondition(condicao, ordenacao);
}
/**
* Retorna lista de Categoria Servi�o setado idCategoria e pai isnull.
*
* @return Collection
* @throws Exception
*/
public List<CategoriaServicoDTO> listCategoriasServicoidPaiIsNull(CategoriaServicoDTO bean) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("nomeCategoriaServico", "=", bean.getNomeCategoriaServico()));
condicao.add(new Condition("idCategoriaServicoPai", "is",null ));
return (List<CategoriaServicoDTO>) super.findByCondition(condicao, ordenacao);
}
/**
* Retorna lista de Categoria Servi�o ativas.
*
* @return Collection
* @throws Exception
*/
public Collection listCategoriasAtivasByNomeConcatenado() throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("dataFim", "is", null));
ordenacao.add(new Order("idCategoriaServico"));
return super.findByCondition(condicao, ordenacao);
}
/**
* Verifica se Categoria possui filho.
*
* @param categoriaServico
* @return - <b>True:</b> Possui filho. - <b>False: </b>N�o possui.
* @throws PersistenceException
*/
public boolean verificarSeCategoriaPossuiFilho(CategoriaServicoDTO categoriaServico) throws PersistenceException {
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
sql.append("SELECT DISTINCT categoriafilho.nomecategoriaservico FROM categoriaservico categoriapai ");
sql.append("INNER JOIN categoriaservico categoriafilho ON categoriapai.idcategoriaservico = categoriafilho.idcategoriaservicopai ");
sql.append("WHERE categoriapai.idcategoriaservico = ? AND categoriafilho.datafim IS NULL");
parametros.add(categoriaServico.getIdCategoriaServico());
List filhos = execSQL(sql.toString(), parametros.toArray());
if (filhos != null && !filhos.isEmpty()) {
return true;
} else {
return false;
}
}
/**
* Verifica se Categoria possui Servi�o associado
*
* @param categoriaServico
* @return - <b>True:</b> Possui filho. - <b>False: </b>N�o possui.
* @throws PersistenceException
*/
public boolean verificarSeCategoriaPossuiServico(CategoriaServicoDTO categoriaServico) throws PersistenceException {
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
sql.append("SELECT DISTINCT servico.nomeservico FROM categoriaservico ");
sql.append("INNER JOIN servico ON categoriaservico.idcategoriaservico = servico.idcategoriaservico ");
sql.append("WHERE categoriaservico.idcategoriaservico = ?");
parametros.add(categoriaServico.getIdCategoriaServico());
List categoriasEncontradas = execSQL(sql.toString(), parametros.toArray());
if (categoriasEncontradas != null && !categoriasEncontradas.isEmpty()) {
return true;
} else {
return false;
}
}
/**
* Verifica se categoria informada j� existe.
*
* @param categoriaServicoDTO
* @return true - existe; false - n�o existe;
* @throws PersistenceException
*/
public boolean verificarSeCategoriaExiste(CategoriaServicoDTO categoriaServicoDTO) throws PersistenceException {
StringBuilder sql = new StringBuilder();
List parametros = new ArrayList();
sql.append("SELECT nomecategoriaservico FROM categoriaservico ");
sql.append("WHERE datafim is null AND nomecategoriaservico like ?");
parametros.add(categoriaServicoDTO.getNomeCategoriaServico());
List categorias = execSQL(sql.toString(), parametros.toArray());
if (categorias != null && !categorias.isEmpty()) {
return true;
} else {
return false;
}
}
/**
* Retorna lista de Categoria Servi�o por nome.
*
* @return Collection
* @throws Exception
*/
public Collection findByNomeCategoria(CategoriaServicoDTO categoriaServicoDTO) throws PersistenceException {
List condicao = new ArrayList();
List ordenacao = new ArrayList();
condicao.add(new Condition("nomeCategoriaServico", "=", categoriaServicoDTO.getNomeCategoriaServico()));
ordenacao.add(new Order("nomeCategoriaServico"));
return super.findByCondition(condicao, ordenacao);
}
/**
* Encontra a categoria de servi�o pelo ID
* @author euler.ramos
*/
public List<CategoriaServicoDTO> findByIdCategoriaServico(Integer id) throws PersistenceException {
List resp = new ArrayList();
Collection fields = getFields();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
String campos = "";
for (Iterator it = fields.iterator(); it.hasNext();) {
Field field = (Field) it.next();
if (!campos.trim().equalsIgnoreCase("")) {
campos = campos + ",";
}
campos = campos + field.getFieldDB();
listRetorno.add(field.getFieldClass());
}
String sql = "SELECT " + campos + " FROM " + getTableName() + " WHERE idcategoriaservico=? and (datafim IS NULL) ORDER BY idcategoriaservico";
parametro.add(id);
resp = this.execSQL(sql, parametro.toArray());
List result = this.engine.listConvertion(getBean(), resp, listRetorno);
return (result == null ? new ArrayList<CategoriaServicoDTO>() : result);
}
/**
* Encontra a categoria de servi�o pelo nome
* @author euler.ramos
*/
public List<CategoriaServicoDTO> findByNomeCategoria(String titulo) throws PersistenceException {
List resp = new ArrayList();
Collection fields = getFields();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
String campos = "";
for (Iterator it = fields.iterator(); it.hasNext();) {
Field field = (Field) it.next();
if (!campos.trim().equalsIgnoreCase("")) {
campos = campos + ",";
}
campos = campos + field.getFieldDB();
listRetorno.add(field.getFieldClass());
}
String sql = "SELECT " + campos + " FROM " + getTableName() + " WHERE nomecategoriaservico=? and (datafim IS NULL) ORDER BY nomecategoriaservico";
parametro.add(titulo);
resp = this.execSQL(sql, parametro.toArray());
List result = this.engine.listConvertion(getBean(), resp, listRetorno);
return (result == null ? new ArrayList<CategoriaServicoDTO>() : result);
}
}