public LayerFeicao Buscar(Hashtable filtros) { LayerFeicao layerFeicao = null; BancoDeDados banco = null; string schemaUsuario = ConfigurationManager.AppSettings["SchemaUsuarioGeo"].ToUpper(); banco = BancoDeDadosFactory.CriarBancoDeDados("StringConexaoGeo"); Comando comando = banco.GetComandoSql(@"select t.id, t.nome, t.categoria, t.esquema schema, t.tabela, t.sequencia, t.tipo, t.coluna_pk from tab_feicao t where rownum > 0 "); if (filtros != null && filtros.Count > 0) { if (filtros.ContainsKey("feicao")) { comando.DBCommand.CommandText += " and upper(t.nome) = upper(:feicao) "; comando.AdicionarParametroEntrada("feicao", DbType.String, 4000, filtros["feicao"]); } if (filtros.ContainsKey("id")) { comando.DBCommand.CommandText += " and id = :id"; comando.AdicionarParametroEntrada("id", DbType.Int32, 10, filtros["id"]); } if (filtros.ContainsKey("tabela")) { comando.DBCommand.CommandText += " and upper(t.tabela) = upper(:tabela) "; comando.AdicionarParametroEntrada("tabela", DbType.String, 4000, filtros["tabela"]); } } IDataReader reader = null; try { reader = banco.ExecutarReader(comando); if (reader == null) { return(null); } if (reader.Read()) { layerFeicao = new LayerFeicao(); layerFeicao.Nome = Convert.ToString(reader["nome"]); layerFeicao.Id = Convert.ToInt32(reader["id"]); layerFeicao.Tabela = Convert.ToString(reader["tabela"]); layerFeicao.Schema = Convert.ToString(reader["schema"]); layerFeicao.Sequencia = Convert.ToString(reader["sequencia"]); layerFeicao.TipoGeometria = (TipoGeometriaFeicao)Convert.ToInt32(reader["tipo"]); layerFeicao.ColunaPK = Convert.ToString(reader["coluna_pk"]); } } finally { if (reader != null) { reader.Close(); reader.Dispose(); reader = null; } if (comando != null) { comando.Dispose(); } } if (layerFeicao == null) { return(null); } if (filtros == null || !filtros.ContainsKey("SEM_COLUNAS")) { comando = banco.GetComandoSql(@"select f.feicao, f.coluna, f.tipo, f.tamanho, f.tabela_referenciada, f.coluna_referenciada, f.alias, f.is_obrigatorio, f.is_visivel, f.is_editavel from " + schemaUsuario + @".tab_feicao_colunas f where f.is_visivel = 1 and f.feicao = :id "); comando.AdicionarParametroEntrada("id", DbType.Int32, 10, layerFeicao.Id); try { reader = banco.ExecutarReader(comando); ColunaLayerFeicao coluna = null; while (reader.Read()) { coluna = new ColunaLayerFeicao(); coluna.Coluna = Convert.ToString(reader["coluna"]); coluna.Alias = Convert.ToString(reader["alias"]); if (reader["tipo"] != null && !(reader["tipo"] is DBNull)) { coluna.Tipo = Convert.ToInt32(reader["tipo"]); } else { coluna.Tipo = 0; } if (reader["tamanho"] != null && !(reader["tamanho"] is DBNull)) { coluna.Tamanho = Convert.ToDouble(reader["tamanho"]); } else { coluna.Tamanho = 0; } coluna.Tabela_Referencia = Convert.ToString(reader["tabela_referenciada"]); coluna.Coluna_Referencia = Convert.ToString(reader["coluna_referenciada"]); coluna.IsObrigatorio = Convert.ToString(reader["is_obrigatorio"]) == "1"; coluna.IsVisivel = Convert.ToString(reader["is_visivel"]) == "1"; coluna.IsEditavel = Convert.ToString(reader["is_editavel"]) == "1"; layerFeicao.Colunas.Add(coluna); } } finally { if (reader != null) { reader.Close(); reader.Dispose(); reader = null; } if (comando != null) { comando.Dispose(); } } } return(layerFeicao); }
public List <CategoriaLayerFeicao> ListarCategoria(int idNavegador, int idProjeto) { Comando comando = null; IDataReader reader = null; IDbConnection connection = null; List <CategoriaLayerFeicao> lista = new List <CategoriaLayerFeicao>(); try { string schemaUsuario = ConfigurationManager.AppSettings["SchemaUsuarioGeo"].ToUpper(); BancoDeDados bancoDeDados = BancoDeDadosFactory.CriarBancoDeDados("StringConexaoGeo"); CategoriaLayerFeicao categoria = null; LayerFeicao layerFeicao = null; IDataReader readerQtde = null; int?idCategoria = null; comando = bancoDeDados.GetComandoSql(@"select id_categoria, nome_categoria, id, descricao, feicao, tabela, esquema, sequencia, tipo, coluna_pk, is_principal, servico, url, id_layer, nome_layer, is_visivel, is_editavel, nvl(is_finalizada,0) is_finalizada, ordem_categoria, ordem_feicao from ( select c.id id_categoria, c.nome nome_categoria, f.id, f.nome feicao, f.descricao, f.tabela, f.esquema, f.sequencia, f.tipo, f.coluna_pk, n.is_principal, serv.id servico, serv.url, fei.id_layer, fei.nome_layer, fei.is_visivel, fei.is_editavel, fei.is_finalizada, c.ordem ordem_Categoria, fei.ordem ordem_feicao from tab_categoria_feicao c, tab_feicao f, tab_navegador_servico n, tab_servico serv, tab_servico_feicao fei, tab_navegador nav where c.id = f.categoria and n.servico = fei.servico and fei.feicao = f.id and n.is_principal = 1 and serv.id = n.servico and n.navegador = nav.id and nav.id = :navegador union select c.id id_categoria, c.nome nome_categoria, f.id, f.nome feicao, f.descricao, f.tabela, f.esquema, f.sequencia, f.tipo, f.coluna_pk, 0 is_principal, serv.id servico, serv.url, fei.id_layer, fei.nome_layer, fei.is_visivel, fei.is_editavel, fei.is_finalizada, c.ordem ordem_Categoria, fei.ordem ordem_feicao from tab_categoria_feicao c, tab_feicao f, tab_navegador_camada nav_cam, tab_servico serv, tab_servico_feicao fei where c.id = f.categoria and nav_cam.servico = fei.servico and fei.feicao = f.id and serv.id = nav_cam.servico and nav_cam.navegador = :navegador ) order by ordem_Categoria, ordem_feicao "); comando.AdicionarParametroEntrada("navegador", idNavegador, DbType.Int32); reader = bancoDeDados.ExecutarReader(comando); if (reader == null) { return(null); } while (reader.Read()) { if (reader["id_categoria"] is DBNull) { idCategoria = null; if (categoria == null) { categoria = new CategoriaLayerFeicao(); categoria.Id = -1; categoria.Nome = string.Empty; } } if (!(reader["id_categoria"] is DBNull) && idCategoria != Convert.ToInt32(reader["id_categoria"])) { idCategoria = Convert.ToInt32(reader["id_categoria"]); if (categoria != null) { lista.Add(categoria); } categoria = new CategoriaLayerFeicao(); categoria.Id = Convert.ToInt32(reader["id_categoria"]); categoria.Nome = Convert.ToString(reader["nome_categoria"]); } if (!categoria.LayersFeicoes.Exists(delegate(LayerFeicao f) { return(f.Id == Convert.ToInt32(reader["id"])); })) { layerFeicao = new LayerFeicao(); layerFeicao.Categoria = categoria.Id; layerFeicao.Id = Convert.ToInt32(reader["id"]); layerFeicao.Nome = Convert.ToString(reader["feicao"]); layerFeicao.Descricao = Convert.ToString(reader["descricao"]); layerFeicao.Tabela = Convert.ToString(reader["tabela"]); layerFeicao.Schema = Convert.ToString(reader["esquema"]); if (reader["tipo"] is DBNull) { layerFeicao.TipoGeometria = TipoGeometriaFeicao.NaoDefinido; } else { layerFeicao.TipoGeometria = (TipoGeometriaFeicao)Convert.ToInt32(reader["tipo"]); } layerFeicao.Sequencia = Convert.ToString(reader["sequencia"]); layerFeicao.ServicoId = Convert.ToInt32(reader["servico"]); layerFeicao.ServicoUrlMxd = Convert.ToString(reader["url"]); layerFeicao.ServicoIsPrincipal = Convert.ToString(reader["is_principal"]) != "0"; layerFeicao.Selecionavel = Convert.ToString(reader["is_editavel"]) != "0";; if (reader["id_layer"] is DBNull) { layerFeicao.IdLayer = -1; } else { layerFeicao.IdLayer = Convert.ToInt32(reader["id_layer"]); } layerFeicao.NomeLayer = Convert.ToString(reader["nome_layer"]); layerFeicao.Visivel = Convert.ToString(reader["is_visivel"]) == "1"; layerFeicao.IsFinalizada = Convert.ToString(reader["is_finalizada"]) == "1"; layerFeicao.ColunaPK = Convert.ToString(reader["coluna_pk"]); if (!string.IsNullOrEmpty(layerFeicao.Tabela.Trim())) { comando = bancoDeDados.GetComandoSql(@"select count(*) quantidade from " + layerFeicao.Tabela + " where projeto = :projeto"); comando.AdicionarParametroEntrada("projeto", idProjeto, DbType.Int32); try { readerQtde = bancoDeDados.ExecutarReader(comando); if (readerQtde.Read()) { layerFeicao.Quantidade = Convert.ToInt32(readerQtde["quantidade"]); } } finally { if (readerQtde != null) { readerQtde.Close(); readerQtde.Dispose(); readerQtde = null; } if (comando != null) { comando.Dispose(); comando = null; } } } categoria.LayersFeicoes.Add(layerFeicao); } } if (categoria != null) { lista.Add(categoria); } if (reader != null) { reader.Close(); reader.Dispose(); reader = null; } if (comando != null) { comando.Dispose(); } comando = bancoDeDados.GetComandoSql(@"select f.feicao id_feicao, f.coluna, f.tipo, f.tamanho, f.tabela_referenciada, f.coluna_referenciada, f.alias, f.is_obrigatorio, f.is_visivel, f.is_editavel, tfco.operacao, tfco.valor, tfco.coluna_obrigada from " + schemaUsuario + @".tab_feicao_colunas f, " + schemaUsuario + @".tab_feicao_col_obrigator tfco where tfco.feicao(+) = f.feicao and tfco.coluna(+) = f.coluna and f.feicao = :id "); comando.AdicionarParametroEntrada("id", DbType.Int32); ColunaLayerFeicao coluna = null; foreach (CategoriaLayerFeicao c in lista) { foreach (LayerFeicao f in c.LayersFeicoes) { comando.SetarValorDoParametro("id", f.Id); reader = bancoDeDados.ExecutarReader(comando); if (reader == null) { continue; } List <ColunaLayerFeicao> colunas = new List <ColunaLayerFeicao>(); while (reader.Read()) { coluna = new ColunaLayerFeicao(); coluna.Coluna = Convert.ToString(reader["coluna"]); coluna.Alias = Convert.ToString(reader["alias"]); if (reader["tipo"] != null && !(reader["tipo"] is DBNull)) { coluna.Tipo = Convert.ToInt32(reader["tipo"]); } else { coluna.Tipo = 0; } if (reader["tamanho"] != null && !(reader["tamanho"] is DBNull)) { coluna.Tamanho = Convert.ToDouble(reader["tamanho"]); } else { coluna.Tamanho = 0; } coluna.Tabela_Referencia = Convert.ToString(reader["tabela_referenciada"]); coluna.Coluna_Referencia = Convert.ToString(reader["coluna_referenciada"]); coluna.IsObrigatorio = Convert.ToString(reader["is_obrigatorio"]) == "1"; coluna.IsVisivel = Convert.ToString(reader["is_visivel"]) == "1"; coluna.IsEditavel = Convert.ToString(reader["is_editavel"]) == "1"; if (reader["operacao"] is DBNull) { coluna.Operacao = TipoOperacao.NaoDefinido; } else { coluna.Operacao = (TipoOperacao)Convert.ToInt32(reader["operacao"]); } coluna.ValorCondicao = Convert.ToString(reader["valor"]); coluna.ColunaObrigada = Convert.ToString(reader["coluna_obrigada"]); colunas.Add(coluna); } f.Colunas = colunas; reader.Close(); reader.Dispose(); } } } finally { if (reader != null) { reader.Close(); reader.Dispose(); } if (connection != null) { connection.Close(); connection.Dispose(); } if (comando != null) { comando.Dispose(); } } return(lista); }