Commit 90151874b62e92c2b0721cfb672d7a8349cea6c4
1 parent
fe04b077
Exists in
master
and in
7 other branches
Inclusão de gerenciador de tabelas no sistema de metadados estatísticos
Showing
6 changed files
with
402 additions
and
29 deletions
Show diff stats
@@ -0,0 +1,99 @@ | @@ -0,0 +1,99 @@ | ||
1 | +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> | ||
2 | +<html> | ||
3 | +<head> | ||
4 | +<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> | ||
5 | +<title>Conexao com banco de dados</title> | ||
6 | +<style type="text/css"> | ||
7 | +/*margin and padding on body element | ||
8 | + can introduce errors in determining | ||
9 | + element position and are not recommended; | ||
10 | + we turn them off as a foundation for YUI | ||
11 | + CSS treatments. */ | ||
12 | +body { | ||
13 | + margin: 0; | ||
14 | + padding: 0; | ||
15 | +} | ||
16 | +</style> | ||
17 | +<script type="text/javascript" src="../js/core.js"></script> | ||
18 | +<script type="text/javascript" src="../js/estat_editor.js"></script> | ||
19 | +<link rel="stylesheet" type="text/css" href="admin.css"> | ||
20 | + | ||
21 | +</head> | ||
22 | +<body class=" yui-skin-sam fundoPonto"> | ||
23 | + <div class="bordaSuperior"> </div> | ||
24 | + <div class="mascaraPrincipal" id="divGeral"> | ||
25 | + <div id=cabecalhoPrincipal></div> | ||
26 | + <h1> | ||
27 | + Metadados estatísticos - editor de tabelas | ||
28 | + de dados <img src="../imagens/04.png" style="cursor: pointer" | ||
29 | + id=botaoAjuda /> | ||
30 | + </h1> | ||
31 | + | ||
32 | + <div id="formulario" style="display: none"> | ||
33 | + <div id="ajuda" style="display: none"> | ||
34 | + <div class="hd">Ajuda</div> | ||
35 | + <div class="bd" style="height: 144px; overflow: auto"> | ||
36 | + <p>Este formulário permite editar as tabelas de dados utilizadas pelo | ||
37 | + sistema de metadados estatísticos | ||
38 | + </div> | ||
39 | + <div class="ft"></div> | ||
40 | + </div> | ||
41 | + <p><br> | ||
42 | + Atenção: para poder editar o banco de dados, o usuário da conexão escolhida deve ter direitos de edição<br> | ||
43 | + Apenas as tabelas e os dados existentes no esquema i3geo_metaestat podem ser editados<br> | ||
44 | + <div id="i3GEOadminEditorConexao" style="left: -5px;"></div><br> | ||
45 | + <div id="i3GEOadminEditorEsquema" style="left: -5px;"></div> | ||
46 | + <div id="i3GEOadminEditorTabela" style="left: -5px;"></div> | ||
47 | + <div id="i3GEOadminEditorColuna" style="left: -5px;"></div> | ||
48 | + </div> | ||
49 | + </div> | ||
50 | + <div id=logajax style="display: block"></div> | ||
51 | + <script> | ||
52 | + /* | ||
53 | + Title: Editor de tabelas do sistema de metadados estatísticos | ||
54 | + | ||
55 | + Licenca: | ||
56 | + | ||
57 | + GPL2 | ||
58 | + | ||
59 | + i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet | ||
60 | + | ||
61 | + Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil | ||
62 | + Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br | ||
63 | + | ||
64 | + Este programa é software livre; você pode redistribuí-lo | ||
65 | + e/ou modificá-lo sob os termos da Licença Pública Geral | ||
66 | + GNU conforme publicada pela Free Software Foundation; | ||
67 | + | ||
68 | + Este programa é distribuído na expectativa de que seja útil, | ||
69 | + porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | ||
70 | + de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | ||
71 | + Consulte a Licença Pública Geral do GNU para mais detalhes. | ||
72 | + Você deve ter recebido uma cópia da Licença Pública Geral do | ||
73 | + GNU junto com este programa; se não, escreva para a | ||
74 | + Free Software Foundation, Inc., no endereço | ||
75 | + 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
76 | + | ||
77 | + Arquivo: | ||
78 | + | ||
79 | + i3geo/admin/html/estat_editor.html | ||
80 | + */ | ||
81 | + if (screen.availWidth > 700) { | ||
82 | + document.getElementById("divGeral").style.width = "700px"; | ||
83 | + } | ||
84 | + //necessario para a ferramenta login e outras | ||
85 | + i3GEO.configura = { | ||
86 | + locaplic : "../.." | ||
87 | + }; | ||
88 | + cabecalhoMetaestat("cabecalhoPrincipal", "editor"); | ||
89 | + document.getElementById("formulario").style.display = "block"; | ||
90 | + i3GEOadmin.editor.inicia(); | ||
91 | + /* | ||
92 | + temp = function() { | ||
93 | + document.getElementById("formulario").style.display = "block"; | ||
94 | + initEditor(); | ||
95 | + }; | ||
96 | + i3GEO.login.verificaOperacao("admin/html/menus",i3GEO.configura.locaplic, temp, "sessao"); | ||
97 | + */ | ||
98 | + </script> | ||
99 | +</body> | ||
0 | \ No newline at end of file | 100 | \ No newline at end of file |
admin/index.html
@@ -183,6 +183,10 @@ | @@ -183,6 +183,10 @@ | ||
183 | <td><div class=aplicar></div></td> | 183 | <td><div class=aplicar></div></td> |
184 | <td>Cadastro de fontes de informação</td> | 184 | <td>Cadastro de fontes de informação</td> |
185 | </tr> | 185 | </tr> |
186 | + <tr onclick="abre('html/estat_editor.html')"> | ||
187 | + <td><div class=aplicar></div></td> | ||
188 | + <td>Editor de tabelas de dados estatícos</td> | ||
189 | + </tr> | ||
186 | </table> | 190 | </table> |
187 | </div> | 191 | </div> |
188 | </fieldset> | 192 | </fieldset> |
admin/js/core.js
@@ -72,11 +72,12 @@ function cabecalhoMetaestat(id,excluir){ | @@ -72,11 +72,12 @@ function cabecalhoMetaestat(id,excluir){ | ||
72 | botoes = [ | 72 | botoes = [ |
73 | {id:"principal",titulo:"Início",link:"../index.html"}, | 73 | {id:"principal",titulo:"Início",link:"../index.html"}, |
74 | {id:"arvore",titulo:"Árvore completa",link:"estat_variavel.html"}, | 74 | {id:"arvore",titulo:"Árvore completa",link:"estat_variavel.html"}, |
75 | - {id:"unidade_medida",titulo:"Unidades de medida",link:"estat_unidade_medida.html"}, | 75 | + {id:"unidade_medida",titulo:"Unidades",link:"estat_unidade_medida.html"}, |
76 | {id:"periodo_tempo",titulo:"Períodos",link:"estat_tipo_periodo.html"}, | 76 | {id:"periodo_tempo",titulo:"Períodos",link:"estat_tipo_periodo.html"}, |
77 | {id:"conexao",titulo:"Conexões",link:"estat_conexao.html"}, | 77 | {id:"conexao",titulo:"Conexões",link:"estat_conexao.html"}, |
78 | {id:"tipo_regiao",titulo:"Regiões",link:"estat_tipo_regiao.html"}, | 78 | {id:"tipo_regiao",titulo:"Regiões",link:"estat_tipo_regiao.html"}, |
79 | {id:"fonteinfo",titulo:"Fonte",link:"estat_fonteinfo.html"}, | 79 | {id:"fonteinfo",titulo:"Fonte",link:"estat_fonteinfo.html"}, |
80 | + {id:"editor",titulo:"Editor",link:"estat_editor.html"}, | ||
80 | {id:"login",titulo:"Login",js:"i3GEO.login.dialogo.abreLogin()"} | 81 | {id:"login",titulo:"Login",js:"i3GEO.login.dialogo.abreLogin()"} |
81 | ]; | 82 | ]; |
82 | n = botoes.length; | 83 | n = botoes.length; |
@@ -0,0 +1,228 @@ | @@ -0,0 +1,228 @@ | ||
1 | +if(typeof(i3GEOadmin) === 'undefined'){ | ||
2 | + var i3GEOadmin = {}; | ||
3 | +} | ||
4 | +i3GEOadmin.editor = { | ||
5 | + /* | ||
6 | + * Inicializa o sistema | ||
7 | + */ | ||
8 | + inicia: function(){ | ||
9 | + YAHOO.namespace("editor"); | ||
10 | + YAHOO.namespace("admin.container"); | ||
11 | + //opcao de escolha da conexao | ||
12 | + i3GEOadmin.editor.conexao.lista(); | ||
13 | + }, | ||
14 | + /* | ||
15 | + * algumas operacoes sao permitidas apenas para o esquema i3geo_metaestat do banco de dados | ||
16 | + */ | ||
17 | + verificaEsquema: function(nomeEsquema){ | ||
18 | + if(nomeEsquema != "i3geo_metaestat"){ | ||
19 | + alert("Operacao permitida apenas para o esquema i3geo_metaestat"); | ||
20 | + return; | ||
21 | + } | ||
22 | + }, | ||
23 | + conexao:{ | ||
24 | + onde: "i3GEOadminEditorConexao", | ||
25 | + lista: function(){ | ||
26 | + var callback = { | ||
27 | + success:function(o){ | ||
28 | + try { | ||
29 | + var dados = YAHOO.lang.JSON.parse(o.responseText), | ||
30 | + temp = "Escolha a conexão com o banco: "; | ||
31 | + temp += "<select id='i3GEOadmincodigo_estat_conexao' onchange='i3GEOadmin.editor.esquema.lista()'>"; | ||
32 | + temp += core_comboObjeto(dados,"i3GEOadmincodigo_estat_conexao","bancodedados","","usuario"); | ||
33 | + temp += "</select>"; | ||
34 | + $i(i3GEOadmin.editor.conexao.onde).innerHTML = temp; | ||
35 | + core_carregando("desativa"); | ||
36 | + } | ||
37 | + catch(e){core_handleFailure(e,o.responseText);} | ||
38 | + }, | ||
39 | + failure:core_handleFailure, | ||
40 | + argument: { foo:"foo", bar:"bar" } | ||
41 | + }; | ||
42 | + core_carregando("buscando dados..."); | ||
43 | + core_makeRequest("../php/metaestat.php?funcao=listaConexao",callback); | ||
44 | + } | ||
45 | + }, | ||
46 | + esquema: { | ||
47 | + onde: "i3GEOadminEditorEsquema", | ||
48 | + lista: function(){ | ||
49 | + var callback = { | ||
50 | + success:function(o){ | ||
51 | + try { | ||
52 | + var dados = YAHOO.lang.JSON.parse(o.responseText), | ||
53 | + temp = "<fieldset>Escolha um esquema: "; | ||
54 | + temp += "<select id='i3GEOadminesquema' onchange='i3GEOadmin.editor.tabela.lista()'>"; | ||
55 | + temp += core_comboObjeto(dados,"esquema","esquema"); | ||
56 | + temp += "</select>"; | ||
57 | + $i(i3GEOadmin.editor.esquema.onde).innerHTML = temp+"</fieldset>"; | ||
58 | + core_carregando("desativa"); | ||
59 | + $i(i3GEOadmin.editor.tabela.onde).innerHTML = ""; | ||
60 | + } | ||
61 | + catch(e){core_handleFailure(e,o.responseText);} | ||
62 | + }, | ||
63 | + failure:core_handleFailure, | ||
64 | + argument: { foo:"foo", bar:"bar" } | ||
65 | + }, | ||
66 | + codigo_estat_conexao = $i("i3GEOadmincodigo_estat_conexao").value; | ||
67 | + if(codigo_estat_conexao == ""){ | ||
68 | + alert("Escolha uma conexao"); | ||
69 | + $i(i3GEOadmin.editor.esquema.onde).innerHTML = ""; | ||
70 | + $i(i3GEOadmin.editor.tabela.onde).innerHTML = ""; | ||
71 | + return; | ||
72 | + } | ||
73 | + core_carregando("buscando dados..."); | ||
74 | + core_makeRequest("../php/metaestat.php?funcao=esquemasConexao&formato=json&codigo_estat_conexao="+codigo_estat_conexao,callback); | ||
75 | + }, | ||
76 | + }, | ||
77 | + tabela:{ | ||
78 | + onde: "i3GEOadminEditorTabela", | ||
79 | + lista: function(){ | ||
80 | + var callback = { | ||
81 | + success:function(o){ | ||
82 | + try { | ||
83 | + var dados = YAHOO.lang.JSON.parse(o.responseText), | ||
84 | + temp = "<fieldset>Escolha uma tabela: "; | ||
85 | + temp += "<select id='i3GEOadmintabela' onchange='i3GEOadmin.editor.coluna.lista()'>"; | ||
86 | + temp += core_comboObjeto(dados,"tabela","tabela"); | ||
87 | + temp += "</select>"; | ||
88 | + temp += "" + | ||
89 | + "<p>Digite um nome: <input id='i3GEOadmintabelaNomeNovo' title='digite o nome' type=text width=30 style='cursor:text' />" + | ||
90 | + "<input type=button value='Criar tabela' id='i3GEOadmintabelaCriar' onclick='i3GEOadmin.editor.tabela.criar()'/>" + | ||
91 | + "<input type=button value='Alterar nome atual' id='i3GEOadmintabelaAlterarNome' onclick='i3GEOadmin.editor.tabela.alterarNome()'/>" + | ||
92 | + "<input type=button value='Copiar para' id='i3GEOadmintabelaCopiar' onclick='i3GEOadmin.editor.tabela.copiar()'/>"; | ||
93 | + | ||
94 | + $i(i3GEOadmin.editor.tabela.onde).innerHTML = temp+"</fieldset>"; | ||
95 | + core_carregando("desativa"); | ||
96 | + $i(i3GEOadmin.editor.coluna.onde).innerHTML = ""; | ||
97 | + } | ||
98 | + catch(e){core_handleFailure(e,o.responseText);} | ||
99 | + }, | ||
100 | + failure:core_handleFailure, | ||
101 | + argument: { foo:"foo", bar:"bar" } | ||
102 | + }, | ||
103 | + codigo_estat_conexao = $i("i3GEOadmincodigo_estat_conexao").value, | ||
104 | + nome_esquema = $i("i3GEOadminesquema").value; | ||
105 | + if(nome_esquema == ""){ | ||
106 | + alert("Escolha um esquema"); | ||
107 | + $i(i3GEOadmin.editor.tabela.onde).innerHTML = ""; | ||
108 | + $i(i3GEOadmin.editor.coluna.onde).innerHTML = ""; | ||
109 | + return; | ||
110 | + } | ||
111 | + core_carregando("adicionando..."); | ||
112 | + core_makeRequest("../php/metaestat.php?funcao=tabelasEsquema&formato=json&nome_esquema="+nome_esquema+"&codigo_estat_conexao="+codigo_estat_conexao,callback); | ||
113 | + }, | ||
114 | + criar: function(){ | ||
115 | + if(!window.confirm("Cria nova tabela?")){ | ||
116 | + return; | ||
117 | + } | ||
118 | + var callback = { | ||
119 | + success:function(o){ | ||
120 | + try { | ||
121 | + core_carregando("desativa"); | ||
122 | + i3GEOadmin.editor.tabela.lista(); | ||
123 | + } | ||
124 | + catch(e){core_handleFailure(e,o.responseText);} | ||
125 | + }, | ||
126 | + failure:core_handleFailure, | ||
127 | + argument: { foo:"foo", bar:"bar" } | ||
128 | + }, | ||
129 | + novaTabela = $i("i3GEOadmintabelaNomeNovo").value, | ||
130 | + nomeEsquema = $i("i3GEOadminesquema").value; | ||
131 | + if(i3GEOadmin.editor.verificaEsquema(nomeEsquema) == false){ | ||
132 | + return; | ||
133 | + } | ||
134 | + if(novaTabela == ""){ | ||
135 | + alert("Digite um nome"); | ||
136 | + return; | ||
137 | + } | ||
138 | + if(i3GEOadmin.editor.tabela.verificaExiste(novaTabela) == false){ | ||
139 | + core_carregando("adicionando..."); | ||
140 | + core_makeRequest("../php/metaestat.php?funcao=criaTabelaDB&formato=json&nome_tabela="+novaTabela+"&nome_esquema="+nomeEsquema+"&codigo_estat_conexao="+$i("i3GEOadmincodigo_estat_conexao").value,callback); | ||
141 | + } | ||
142 | + else{ | ||
143 | + alert("Tabela ja existe"); | ||
144 | + } | ||
145 | + }, | ||
146 | + alterarNome: function(){ | ||
147 | + if(!window.confirm("Altera o nome?")){ | ||
148 | + return; | ||
149 | + } | ||
150 | + var callback = { | ||
151 | + success:function(o){ | ||
152 | + try { | ||
153 | + core_carregando("desativa"); | ||
154 | + i3GEOadmin.editor.tabela.lista(); | ||
155 | + } | ||
156 | + catch(e){core_handleFailure(e,o.responseText);} | ||
157 | + }, | ||
158 | + failure:core_handleFailure, | ||
159 | + argument: { foo:"foo", bar:"bar" } | ||
160 | + }, | ||
161 | + novaTabela = $i("i3GEOadmintabelaNomeNovo").value, | ||
162 | + nomeEsquema = $i("i3GEOadminesquema").value; | ||
163 | + if(i3GEOadmin.editor.verificaEsquema(nomeEsquema) == false){ | ||
164 | + return; | ||
165 | + } | ||
166 | + if(novaTabela == ""){ | ||
167 | + alert("Digite um nome"); | ||
168 | + return; | ||
169 | + } | ||
170 | + if(i3GEOadmin.editor.tabela.verificaExiste(novaTabela) == false){ | ||
171 | + core_carregando("adicionando..."); | ||
172 | + core_makeRequest("../php/metaestat.php?funcao=alteraNomeTabelaDB&formato=json&nome_tabela="+$i("i3GEOadmintabela").value+"&novonome_tabela="+novaTabela+"&nome_esquema="+nomeEsquema+"&codigo_estat_conexao="+$i("i3GEOadmincodigo_estat_conexao").value,callback); | ||
173 | + } | ||
174 | + else{ | ||
175 | + alert("Tabela ja existe"); | ||
176 | + } | ||
177 | + }, | ||
178 | + copiar: function(){ | ||
179 | + if(!window.confirm("Copiar tabela?")){ | ||
180 | + return; | ||
181 | + } | ||
182 | + var callback = { | ||
183 | + success:function(o){ | ||
184 | + try { | ||
185 | + core_carregando("desativa"); | ||
186 | + i3GEOadmin.editor.tabela.lista(); | ||
187 | + } | ||
188 | + catch(e){core_handleFailure(e,o.responseText);} | ||
189 | + }, | ||
190 | + failure:core_handleFailure, | ||
191 | + argument: { foo:"foo", bar:"bar" } | ||
192 | + }, | ||
193 | + novaTabela = $i("i3GEOadmintabelaNomeNovo").value, | ||
194 | + nomeEsquema = $i("i3GEOadminesquema").value; | ||
195 | + if(i3GEOadmin.editor.verificaEsquema(nomeEsquema) == false){ | ||
196 | + return; | ||
197 | + } | ||
198 | + if(novaTabela == ""){ | ||
199 | + alert("Digite um nome"); | ||
200 | + return; | ||
201 | + } | ||
202 | + if(i3GEOadmin.editor.tabela.verificaExiste(novaTabela) == false){ | ||
203 | + core_carregando("adicionando..."); | ||
204 | + core_makeRequest("../php/metaestat.php?funcao=copiaTabelaDB&formato=json&nome_tabela="+$i("i3GEOadmintabela").value+"&novonome_tabela="+novaTabela+"&nome_esquema="+nomeEsquema+"&codigo_estat_conexao="+$i("i3GEOadmincodigo_estat_conexao").value,callback); | ||
205 | + } | ||
206 | + else{ | ||
207 | + alert("Tabela ja existe"); | ||
208 | + } | ||
209 | + }, | ||
210 | + verificaExiste: function(valor){ | ||
211 | + var combo = $i("i3GEOadmintabela"), | ||
212 | + n = combo.options.length, | ||
213 | + i; | ||
214 | + for(i=0;i<n;i++){ | ||
215 | + if(combo.options[i].value == valor){ | ||
216 | + return true; | ||
217 | + } | ||
218 | + } | ||
219 | + return false; | ||
220 | + } | ||
221 | + }, | ||
222 | + coluna: { | ||
223 | + onde: "i3GEOadminEditorColuna", | ||
224 | + lista: function(){ | ||
225 | + | ||
226 | + } | ||
227 | + } | ||
228 | +}; | ||
0 | \ No newline at end of file | 229 | \ No newline at end of file |
admin/php/classe_metaestat.php
@@ -134,7 +134,7 @@ class Metaestat{ | @@ -134,7 +134,7 @@ class Metaestat{ | ||
134 | /* | 134 | /* |
135 | Function: execSQL | 135 | Function: execSQL |
136 | 136 | ||
137 | - Executa um SQL no banco | 137 | + Executa um SQL no banco de administracao |
138 | 138 | ||
139 | Parametros: | 139 | Parametros: |
140 | 140 | ||
@@ -146,7 +146,7 @@ class Metaestat{ | @@ -146,7 +146,7 @@ class Metaestat{ | ||
146 | 146 | ||
147 | {array} | 147 | {array} |
148 | */ | 148 | */ |
149 | - function execSQL($sql,$id=""){ | 149 | + function execSQL($sql,$id="",$convTexto=true){ |
150 | try { | 150 | try { |
151 | $q = $this->dbh->query($sql,PDO::FETCH_ASSOC); | 151 | $q = $this->dbh->query($sql,PDO::FETCH_ASSOC); |
152 | } | 152 | } |
@@ -155,6 +155,9 @@ class Metaestat{ | @@ -155,6 +155,9 @@ class Metaestat{ | ||
155 | } | 155 | } |
156 | if($q){ | 156 | if($q){ |
157 | $r = $q->fetchAll(); | 157 | $r = $q->fetchAll(); |
158 | + if($convTexto == false){ | ||
159 | + return $r; | ||
160 | + } | ||
158 | if($r){ | 161 | if($r){ |
159 | if($id != ""){ | 162 | if($id != ""){ |
160 | if(count($r) == 1){ | 163 | if(count($r) == 1){ |
@@ -177,6 +180,20 @@ class Metaestat{ | @@ -177,6 +180,20 @@ class Metaestat{ | ||
177 | return false; | 180 | return false; |
178 | } | 181 | } |
179 | } | 182 | } |
183 | + /* | ||
184 | + Function: execSQLDB | ||
185 | + | ||
186 | + Executa um SQL no banco de dados definido em uma conexao | ||
187 | + */ | ||
188 | + function execSQLDB($codigo_estat_conexao,$sql){ | ||
189 | + $c = $this->listaConexao($codigo_estat_conexao,true); | ||
190 | + $dbhold = $this->dbh; | ||
191 | + $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]); | ||
192 | + $this->dbh = $dbh; | ||
193 | + $res = $this->execSQL($sql,"",false); | ||
194 | + $this->dbh = $dbhold; | ||
195 | + return $res; | ||
196 | + } | ||
180 | function insertId($tabela,$colunatemp,$colunaid){ | 197 | function insertId($tabela,$colunatemp,$colunaid){ |
181 | $idtemp = (rand (9000,10000)) * -1; | 198 | $idtemp = (rand (9000,10000)) * -1; |
182 | //echo "INSERT INTO ".$this->esquemaadmin.$tabela." ($colunatemp) VALUES ('$idtemp')";exit; | 199 | //echo "INSERT INTO ".$this->esquemaadmin.$tabela." ($colunatemp) VALUES ('$idtemp')";exit; |
@@ -1041,44 +1058,41 @@ class Metaestat{ | @@ -1041,44 +1058,41 @@ class Metaestat{ | ||
1041 | return $this->execSQL($sql,$id_agregaregiao); | 1058 | return $this->execSQL($sql,$id_agregaregiao); |
1042 | } | 1059 | } |
1043 | function esquemasConexao($codigo_estat_conexao){ | 1060 | function esquemasConexao($codigo_estat_conexao){ |
1044 | - $c = $this->listaConexao($codigo_estat_conexao,true); | ||
1045 | - $dbhold = $this->dbh; | ||
1046 | - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]); | ||
1047 | - $this->dbh = $dbh; | ||
1048 | - $res = $this->execSQL("SELECT oid,nspname as esquema FROM pg_namespace group by nspname,oid order by nspname"); | ||
1049 | - $this->dbh = $dbhold; | ||
1050 | - return $res; | 1061 | + return $this->execSQLDB($codigo_estat_conexao,"SELECT oid,nspname as esquema FROM pg_namespace group by nspname,oid order by nspname"); |
1062 | + } | ||
1063 | + function criaEsquemaDB($codigo_estat_conexao,$nome_esquema){ | ||
1064 | + return $this->execSQLDB($codigo_estat_conexao,"create schema $nome_esquema"); | ||
1051 | } | 1065 | } |
1052 | function tabelasEsquema($codigo_estat_conexao,$nome_esquema){ | 1066 | function tabelasEsquema($codigo_estat_conexao,$nome_esquema){ |
1053 | - $c = $this->listaConexao($codigo_estat_conexao,true); | ||
1054 | - $dbhold = $this->dbh; | ||
1055 | - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]); | ||
1056 | - $this->dbh = $dbh; | ||
1057 | - $res = $this->execSQL("SELECT table_name as tabela FROM information_schema.tables where table_schema = '$nome_esquema'"); | ||
1058 | - $this->dbh = $dbhold; | 1067 | + return $this->execSQLDB($codigo_estat_conexao,"SELECT table_name as tabela FROM information_schema.tables where table_schema = '$nome_esquema'"); |
1068 | + } | ||
1069 | + function criaTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela){ | ||
1070 | + return $this->execSQLDB($codigo_estat_conexao,"create table ".$nome_esquema.".".$nome_tabela." (gid serial, CONSTRAINT ".$nome_tabela."_pkey PRIMARY KEY (gid ))"); | ||
1071 | + } | ||
1072 | + function alteraNomeTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$novonome_tabela){ | ||
1073 | + $res = $this->execSQLDB($codigo_estat_conexao,"ALTER TABLE ".$nome_esquema.".".$nome_tabela." RENAME TO ".$novonome_tabela ); | ||
1074 | + $tabela = $this->execSQLDB($codigo_estat_conexao,"SELECT table_name FROM information_schema.tables where table_name = '$novonome_tabela' and table_schema = '$nome_esquema'"); | ||
1075 | + if(count($tabela) > 0){ | ||
1076 | + $sql = "UPDATE i3geoestat_medida_variavel SET tabela = '$novonome_tabela' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela'"; | ||
1077 | + $this->execSQL($sql,"",false); | ||
1078 | + $sql = "UPDATE i3geoestat_tipo_regiao SET tabela = '$novonome_tabela' WHERE esquemadb = '$nome_esquema' and tabela = '$nome_tabela'"; | ||
1079 | + $this->execSQL($sql,"",false); | ||
1080 | + } | ||
1059 | return $res; | 1081 | return $res; |
1060 | } | 1082 | } |
1083 | + function copiaTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$novonome_tabela){ | ||
1084 | + return $this->execSQLDB($codigo_estat_conexao,"CREATE TABLE ".$nome_esquema.".".$novonome_tabela." AS select * from ".$nome_esquema.".".$nome_tabela ); | ||
1085 | + } | ||
1061 | function colunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){ | 1086 | function colunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){ |
1062 | $colunas = array(); | 1087 | $colunas = array(); |
1063 | - $c = $this->listaConexao($codigo_estat_conexao,true); | ||
1064 | - $dbhold = $this->dbh; | ||
1065 | - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]); | ||
1066 | - $this->dbh = $dbh; | ||
1067 | - $res = $this->execSQL("SELECT column_name as coluna FROM information_schema.columns where table_schema = '$nome_esquema' and table_name = '$nome_tabela'"); | ||
1068 | - $this->dbh = $dbhold; | 1088 | + $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna FROM information_schema.columns where table_schema = '$nome_esquema' and table_name = '$nome_tabela'"); |
1069 | foreach($res as $c){ | 1089 | foreach($res as $c){ |
1070 | $colunas[] = $c["coluna"]; | 1090 | $colunas[] = $c["coluna"]; |
1071 | } | 1091 | } |
1072 | return $colunas; | 1092 | return $colunas; |
1073 | } | 1093 | } |
1074 | function descreveColunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){ | 1094 | function descreveColunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela){ |
1075 | - $c = $this->listaConexao($codigo_estat_conexao,true); | ||
1076 | - $dbhold = $this->dbh; | ||
1077 | - $dbh = new PDO('pgsql:dbname='.$c["bancodedados"].';user='.$c["usuario"].';password='.$c["senha"].';host='.$c["host"].';port='.$c["porta"]); | ||
1078 | - $this->dbh = $dbh; | ||
1079 | - $res = $this->execSQL("SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a.atttypmod AS lengthvar,a.attnotnull AS notnull,p.nspname as esquema FROM pg_class c,pg_attribute a,pg_type t,pg_namespace p WHERE c.relname = '$nome_tabela' and p.nspname = '$nome_esquema' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid and c.relnamespace = p.oid ORDER BY a.attname"); | ||
1080 | - $this->dbh = $dbhold; | ||
1081 | - return $res; | 1095 | + return $this->execSQLDB($codigo_estat_conexao,"SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a.atttypmod AS lengthvar,a.attnotnull AS notnull,p.nspname as esquema FROM pg_class c,pg_attribute a,pg_type t,pg_namespace p WHERE c.relname = '$nome_tabela' and p.nspname = '$nome_esquema' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid and c.relnamespace = p.oid ORDER BY a.attname"); |
1082 | } | 1096 | } |
1083 | function relatorioCompleto($codigo_variavel=""){ | 1097 | function relatorioCompleto($codigo_variavel=""){ |
1084 | $dados = array(); | 1098 | $dados = array(); |
admin/php/metaestat.php
@@ -883,6 +883,33 @@ switch (strtoupper($funcao)) | @@ -883,6 +883,33 @@ switch (strtoupper($funcao)) | ||
883 | } | 883 | } |
884 | exit; | 884 | exit; |
885 | break; | 885 | break; |
886 | + case "CRIATABELADB": | ||
887 | + $m = new Metaestat(); | ||
888 | + if($nome_esquema != "i3geo_metaestat"){ | ||
889 | + retornaJSON("erro"); | ||
890 | + exit; | ||
891 | + } | ||
892 | + retornaJSON($m->criaTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela)); | ||
893 | + exit; | ||
894 | + break; | ||
895 | + case "ALTERANOMETABELADB": | ||
896 | + $m = new Metaestat(); | ||
897 | + if($nome_esquema != "i3geo_metaestat"){ | ||
898 | + retornaJSON("erro"); | ||
899 | + exit; | ||
900 | + } | ||
901 | + retornaJSON($m->alteraNomeTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$novonome_tabela)); | ||
902 | + exit; | ||
903 | + break; | ||
904 | + case "COPIATABELADB": | ||
905 | + $m = new Metaestat(); | ||
906 | + if($nome_esquema != "i3geo_metaestat"){ | ||
907 | + retornaJSON("erro"); | ||
908 | + exit; | ||
909 | + } | ||
910 | + retornaJSON($m->copiaTabelaDB($codigo_estat_conexao,$nome_esquema,$nome_tabela,$novonome_tabela)); | ||
911 | + exit; | ||
912 | + break; | ||
886 | /* | 913 | /* |
887 | Valor: COLUNASTABELA | 914 | Valor: COLUNASTABELA |
888 | 915 |