Commit a07cf91e5622f96b870d6990f358299094801cc2

Authored by Edmar Moretti
1 parent 4970e7ee

--no commit message

admin/js/estat_editor.js
... ... @@ -76,11 +76,12 @@ i3GEOadmin.editor = {
76 76 },
77 77 tabela:{
78 78 onde: "i3GEOadminEditorTabela",
  79 + optionsTabela: "",
79 80 lista: function(){
80 81 var callback = {
81 82 success:function(o){
82 83 try {
83   - var dados = YAHOO.lang.JSON.parse(o.responseText),
  84 + var opt,dados = YAHOO.lang.JSON.parse(o.responseText),
84 85 temp = "<fieldset>" +
85 86 "<p class=paragrafo >Crie uma tabela no banco contendo limites ou localidades que poder&aacute; ser utilizada para espacializar os dados estat&iacute;sticos existentes em outras tabelas<br>" +
86 87 "<input type=button value='Upload Shapefile' id='i3GEOadmin_botaoupload' /></p>" +
... ... @@ -95,7 +96,9 @@ i3GEOadmin.editor = {
95 96 temp += "<fieldset>" +
96 97 "<p>Escolha uma tabela existente: " +
97 98 "<select id='i3GEOadmintabela' onchange='i3GEOadmin.editor.coluna.lista()'>";
98   - temp += core_comboObjeto(dados,"tabela","tabela");
  99 + opt = core_comboObjeto(dados,"tabela","tabela");
  100 + i3GEOadmin.editor.tabela.optionsTabela = opt;
  101 + temp += opt;
99 102 temp += "</select>" +
100 103 "<p class=paragrafo ><input type=button value='Mostrar dados' id='i3GEOadmintabelaMostrar' />" +
101 104 "<input type=button value='CSV' id='i3GEOadmintabelaCsv'/>" +
... ... @@ -441,9 +444,18 @@ i3GEOadmin.editor = {
441 444 '<p class="paragrafo" >shp: <br><input class=digitar type="file" size=22 name="i3GEOuploadshp" style="top:0px;left:0px;cursor:pointer;"></p>' +
442 445 '<p class="paragrafo" >shx: <br><input class=digitar type="file" size=22 name="i3GEOuploadshx" style="top:0px;left:0px;cursor:pointer;"></p>' +
443 446 '<p class="paragrafo" >dbf: <br><input class=digitar type="file" size=22 name="i3GEOuploaddbf" style="top:0px;left:0px;cursor:pointer;"></p>' +
444   - '<p class="paragrafo" >Nome da nova tabela (n&atilde;o utilize caracteres incompat&iacute;veis com o banco de dados, como -, acentos ou espa&ccedil;os em branco):<br><input class=digitar type="text" size=20 id="tabelaDestino" name="tabelaDestino" style="top:0px;left:0px;cursor:pointer;"></p>' +
  447 + '<p class="paragrafo" >Nome da tabela (n&atilde;o utilize caracteres incompat&iacute;veis com o banco de dados, como -, acentos ou espa&ccedil;os em branco):<br><input class=digitar type="text" size=20 id="tabelaDestino" name="tabelaDestino" style="top:0px;left:0px;cursor:pointer;"> ' +
  448 + 'Ou escolha da lista: ' +
  449 + '<select onchange="javascript:$i(\'tabelaDestino\').value = this.value;">' +
  450 + i3GEOadmin.editor.tabela.optionsTabela +
  451 + '</select></p>' +
  452 + '<p class="paragrafo" >Tipo de opera&ccedil;&atilde;o:</p>' +
  453 + '<p class="paragrafo" ><select id=i3GEOtipoOperacao name=tipoOperacao >' +
  454 + '<option value=criar >Criar a tabela nova e incluir registros do SHP</option>' +
  455 + '<option value=incluir >Adicionar novos registros</option>' +
  456 + '<option value=apagar >Apagar dados atuais e incluir do SHP</option>' +
  457 + '</select></p>' +
445 458 '<p class="paragrafo" >C&oacute;digo da proje&ccedil;&atilde;o (SRID) Assegure-se que o shapefile esteja na proje&ccedil;&atilde;o geogr&aacute;fica se voc&ecirc; for usar com o sistema de metadados estat&iacute;sticos :<br><input class=digitar type="text" value="4326" size=20 id="srid" name="srid" style="top:0px;left:0px;cursor:pointer;"></p>' +
446   -
447 459 '<p class="paragrafo" ><input id=i3GEOuploadsubmit type="button" value="Enviar" size=12 />' +
448 460 '<input type="hidden" name="MAX_FILE_SIZE" value="1000000">' +
449 461 '<input type="hidden" id="i3GEOuploadcodigoconexao" name="i3GEOuploadcodigoconexao" value="">' +
... ... @@ -457,6 +469,12 @@ i3GEOadmin.editor = {
457 469 return ins;
458 470 },
459 471 submit: function(){
  472 + if($i("i3GEOtipoOperacao").value === "apagar"){
  473 + var confirma = window.confirm("Apaga mesmo os registros? (nao pode ser revertido)");
  474 + if(!confirma){
  475 + return;
  476 + }
  477 + }
460 478 if($i("tabelaDestino").value == ""){
461 479 alert("Digite o nome da tabela a ser criada");
462 480 return;
... ... @@ -488,7 +506,6 @@ i3GEOadmin.editor = {
488 506 var ins = '<fieldset><form id=i3GEOuploadcsvf target="i3GEOuploadcsviframe" action="../php/metaestat_uploadcsv_submit.php" method="post" ENCTYPE="multipart/form-data">' +
489 507 '<p class="paragrafo" >CSV (utilize ponto como separador de valores decimais ou a importa&ccedil;&atilde;o poder&aacute; n&atilde;o ocorrer): <br><input class=digitar type="file" size=22 name="i3GEOuploadcsv" style="top:0px;left:0px;cursor:pointer;"></p>' +
490 508 '<p class="paragrafo" >Nome da nova tabela (n&atilde;o utilize caracteres incompat&iacute;veis com o banco de dados, como -, acentos ou espa&ccedil;os em branco):<br><input class=digitar type="text" size=20 id="tabelaDestinocsv" name="tabelaDestinocsv" style="top:0px;left:0px;cursor:pointer;"></p>' +
491   -
492 509 '<p class="paragrafo" ><input id=i3GEOuploadcsvsubmit type="button" value="Enviar" size=12 />' +
493 510 '<input type="hidden" name="MAX_FILE_SIZE" value="1000000">' +
494 511 '<input type="hidden" id="i3GEOuploadcsvcodigoconexao" name="i3GEOuploadcsvcodigoconexao" value="">' +
... ...
admin/php/metaestat_uploadshp_submit.php
... ... @@ -77,7 +77,6 @@ if (isset($_FILES[&#39;i3GEOuploadshp&#39;][&#39;name&#39;])){
77 77 $colunas[] = $c;
78 78 }
79 79 }
80   -
81 80 echo "<br>Numshapes: ". $numshapes;
82 81 $tipo = $shapefileObj->type;
83 82 echo "<br>Tipo: ". $tipo;
... ... @@ -106,19 +105,61 @@ if (isset($_FILES[&#39;i3GEOuploadshp&#39;][&#39;name&#39;])){
106 105 echo "<br>Tipos das colunas: <pre>";
107 106 var_dump($tipoColuna);
108 107 echo "</pre>";
  108 +
  109 + try {
  110 + $dbh = new PDO('pgsql:dbname='.$conexao["bancodedados"].';user='.$conexao["usuario"].';password='.$conexao["senha"].';host='.$conexao["host"].';port='.$conexao["porta"]);
  111 + } catch (PDOException $e) {
  112 + echo '<span style=color:red >Connection failed: ' . $e->getMessage();
  113 + exit;
  114 + }
  115 +
109 116 //gera o script para criar a tabela
  117 + //verifica se a tabela ja existe
  118 + $sql = "SELECT table_name FROM information_schema.tables where table_schema = '".$_POST["i3GEOuploadesquema"]."' AND table_name = '".$_POST["tabelaDestino"]."'";
  119 + $res = $dbh->query($sql,PDO::FETCH_ASSOC);
  120 + if(count($res->fetchAll())>0){
  121 + $tabelaExiste = true;
  122 + }
  123 + else{
  124 + $tabelaExiste = false;
  125 + }
  126 + //encoding do banco de dados
  127 + $sql = "SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = '".$conexao["bancodedados"]."'";
  128 + $res = $dbh->query($sql,PDO::FETCH_ASSOC);
  129 + $encodingdb = $res->fetchAll()[0]["pg_encoding_to_char"];
  130 + if($encodingdb == "UTF8"){
  131 + $encodingdb = "UTF-8";
  132 + }
  133 + if($encodingdb == "LATIN1"){
  134 + $encodingdb = "ISO-8859-1";
  135 + }
  136 + //a tabela nao existe e e do tipo create
110 137 $sqltabela = array();
111   - $sql = "CREATE TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]."(gid integer, the_geom geometry";
112   - foreach($colunas as $coluna){
113   - $sql .= ",".strtolower($coluna)." ".$tipoColuna[$coluna];
114   - }
115   - $sql .= ")WITH(OIDS=FALSE)";
116   - $sqltabela[] = $sql;
117   - $sqltabela[] = "ALTER TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." OWNER TO ".$conexao["usuario"];
118   - $sqltabela[] = "CREATE INDEX ".$_POST["tabelaDestino"]."_indx_thegeom ON ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." USING gist (the_geom )";
119   - echo "<br>Sql tabela: <pre>";
120   - var_dump($sqltabela);
121   - echo "</pre>";
  138 + if($tabelaExiste == false && $_POST["tipoOperacao"] == "criar"){
  139 + $sql = "CREATE TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]."(gid integer, the_geom geometry";
  140 + foreach($colunas as $coluna){
  141 + $sql .= ",".strtolower($coluna)." ".$tipoColuna[$coluna];
  142 + }
  143 + $sql .= ")WITH(OIDS=FALSE)";
  144 + $sqltabela[] = $sql;
  145 + $sqltabela[] = "ALTER TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." OWNER TO ".$conexao["usuario"];
  146 + $sqltabela[] = "CREATE INDEX ".$_POST["tabelaDestino"]."_indx_thegeom ON ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." USING gist (the_geom )";
  147 + echo "<br>Sql tabela: <pre>";
  148 + var_dump($sqltabela);
  149 + echo "</pre>";
  150 + }
  151 + if($tabelaExiste == true && $_POST["tipoOperacao"] == "criar"){
  152 + echo "<span style=color:red >A tabela existe. N&atilde;o pode ser criada.</span>";
  153 + exit;
  154 + }
  155 + //se a tabela existe e e para remover os registros
  156 + if($tabelaExiste == true && $_POST["tipoOperacao"] == "apagar"){
  157 + $sqltabela[] = "delete from ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"];
  158 + }
  159 + if($tabelaExiste == true && $_POST["tipoOperacao"] == "apagar" && $_POST["i3GEOuploadesquema"] != "i3geo_metaestat"){
  160 + echo "<span style=color:red >N&atilde;o &eacute; poss&iacute;vel executar essa opera&ccedil;&atilde;o nesse esquema.</span>";
  161 + exit;
  162 + }
122 163 //gera o script para inserir os dados
123 164 $linhas = array();
124 165 $insert = "INSERT INTO ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]."( gid,".strtolower(implode(",",$colunas)).",the_geom)";
... ... @@ -128,7 +169,9 @@ if (isset($_FILES[&#39;i3GEOuploadshp&#39;][&#39;name&#39;])){
128 169 $vs[] = $i;
129 170 foreach($colunas as $coluna){
130 171 if($tipoColuna[$coluna] == "varchar"){
131   - $vs[] = "'".$s->getValue($layer,$coluna)."'";
  172 + $texto = $s->getValue($layer,$coluna);
  173 + //echo mb_detect_encoding($texto);
  174 + $vs[] = "'".mb_convert_encoding($texto,$encodingdb,mb_detect_encoding($texto))."'";
132 175 }
133 176 else{
134 177 $vs[] = $s->getValue($layer,$coluna);
... ... @@ -138,12 +181,6 @@ if (isset($_FILES[&#39;i3GEOuploadshp&#39;][&#39;name&#39;])){
138 181 $linhas[] = $insert."VALUES(".implode(",",$vs).")";
139 182 }
140 183 $layer->close();
141   - try {
142   - $dbh = new PDO('pgsql:dbname='.$conexao["bancodedados"].';user='.$conexao["usuario"].';password='.$conexao["senha"].';host='.$conexao["host"].';port='.$conexao["porta"]);
143   - } catch (PDOException $e) {
144   - echo 'Connection failed: ' . $e->getMessage();
145   - }
146   -
147 184 foreach($sqltabela as $linha){
148 185 try {
149 186 $dbh->query($linha);
... ... @@ -174,4 +211,4 @@ function verificaNome($nome,$ext){
174 211 }
175 212 ?>
176 213 </body>
177   -</html>
178 214 \ No newline at end of file
  215 +</html>
... ...