Commit 113e9551954ffa64f6e51bb2cd470b15142336cd

Authored by Edmar Moretti
1 parent 533a2553

--no commit message

admin/admin.db
No preview for this file type
admin/php/classe_metaestat.php
@@ -514,32 +514,39 @@ class Metaestat{ @@ -514,32 +514,39 @@ class Metaestat{
514 * @return array lista de ids de regioes sequenciais do filho ate chegar ao pai indicado 514 * @return array lista de ids de regioes sequenciais do filho ate chegar ao pai indicado
515 */ 515 */
516 function regiaoFilhaAoPai($codigo_tipo_regiao,$codigo_tipo_regiao_pai=""){ 516 function regiaoFilhaAoPai($codigo_tipo_regiao,$codigo_tipo_regiao_pai=""){
517 - //echo $codigo_tipo_regiao." ".$codigo_tipo_regiao_pai;  
518 $pais = $this->listaAgregaRegiao($codigo_tipo_regiao); 517 $pais = $this->listaAgregaRegiao($codigo_tipo_regiao);
519 $caminho = array($codigo_tipo_regiao); 518 $caminho = array($codigo_tipo_regiao);
520 $colunas = array(); 519 $colunas = array();
521 if(count($pais) == 0){ 520 if(count($pais) == 0){
522 return $caminho; 521 return $caminho;
523 } 522 }
524 - $achou = false;  
525 foreach($pais as $pai){ 523 foreach($pais as $pai){
526 $caminho[] = $pai["codigo_tipo_regiao_pai"]; 524 $caminho[] = $pai["codigo_tipo_regiao_pai"];
527 $colunas[$pai["codigo_tipo_regiao"]] = $pai; 525 $colunas[$pai["codigo_tipo_regiao"]] = $pai;
528 if($pai["codigo_tipo_regiao_pai"] == $codigo_tipo_regiao_pai){ 526 if($pai["codigo_tipo_regiao_pai"] == $codigo_tipo_regiao_pai){
529 - $achou = true;  
530 return array("caminho"=>$caminho,"colunas"=>$colunas); 527 return array("caminho"=>$caminho,"colunas"=>$colunas);
531 } 528 }
532 - $testaPai = $this->regiaoFilhaAoPai($pai["codigo_tipo_regiao_pai"],$codigo_tipo_regiao_pai);  
533 - if(count($testaPai) == 0 && $codigo_tipo_regiao_pai == ""){  
534 - return array("caminho"=>$caminho,"colunas"=>$colunas);  
535 - }  
536 - if(count($testaPai) == 0){  
537 - $caminho = array();  
538 - $colunas = array();  
539 - }  
540 } 529 }
541 -  
542 } 530 }
  531 + function hierarquiaPath($node){
  532 + $query="select codigo_tipo_regiao as parent from ".$this->esquemaadmin."i3geoestat_agregaregiao WHERE codigo_tipo_regiao_pai = $node";
  533 + $result=$this->execSQL($query,"",false);
  534 + $row = $result[0];
  535 + // save the path in this array
  536 + $path = array();
  537 + // only continue if this $node isn't the root node
  538 + // (that's the node with no parent)
  539 + if ($row['parent']!='') {
  540 + // the last part of the path to $node, is the name
  541 + // of the parent of $node
  542 + $path[] = $row['parent'];
  543 + // we should add the path to the parent of this node
  544 + // to the path
  545 + $path = array_merge($this->hierarquiaPath($row['parent']), $path);
  546 + }
  547 + // return the path
  548 + return $path;
  549 + }
543 /** 550 /**
544 * Cria um arquivo mapfile para uma medida de variavel 551 * Cria um arquivo mapfile para uma medida de variavel
545 * Inclui no arquivo o layer de acesso aos dados 552 * Inclui no arquivo o layer de acesso aos dados
@@ -2018,7 +2025,7 @@ class Metaestat{ @@ -2018,7 +2025,7 @@ class Metaestat{
2018 * @param codigo da regiao 2025 * @param codigo da regiao
2019 */ 2026 */
2020 function listaHierarquiaRegioes($codigoregiaopai=""){ 2027 function listaHierarquiaRegioes($codigoregiaopai=""){
2021 - $sql = "select i3geoestat_agregaregiao.colunaligacao_regiaopai,i3geoestat_tipo_regiao.codigo_tipo_regiao,i3geoestat_tipo_regiao.nome_tipo_regiao from ".$this->esquemaadmin."i3geoestat_tipo_regiao "; 2028 + $sql = "select i3geoestat_agregaregiao.id_agregaregiao,i3geoestat_agregaregiao.colunaligacao_regiaopai,i3geoestat_tipo_regiao.codigo_tipo_regiao,i3geoestat_tipo_regiao.nome_tipo_regiao from ".$this->esquemaadmin."i3geoestat_tipo_regiao ";
2022 $sql .= "LEFT JOIN ".$this->esquemaadmin."i3geoestat_agregaregiao "; 2029 $sql .= "LEFT JOIN ".$this->esquemaadmin."i3geoestat_agregaregiao ";
2023 $sql .= "ON i3geoestat_tipo_regiao.codigo_tipo_regiao = i3geoestat_agregaregiao.codigo_tipo_regiao "; 2030 $sql .= "ON i3geoestat_tipo_regiao.codigo_tipo_regiao = i3geoestat_agregaregiao.codigo_tipo_regiao ";
2024 if($codigoregiaopai != ""){ 2031 if($codigoregiaopai != ""){
@@ -2083,13 +2090,15 @@ class Metaestat{ @@ -2083,13 +2090,15 @@ class Metaestat{
2083 * @param codigo do tipo de regiao 2090 * @param codigo do tipo de regiao
2084 * @param id da agregacao 2091 * @param id da agregacao
2085 */ 2092 */
2086 - function listaAgregaRegiao($codigo_tipo_regiao,$id_agregaregiao=""){ 2093 + function listaAgregaRegiao($codigo_tipo_regiao="",$id_agregaregiao=""){
2087 $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao "; 2094 $sql = "select * from ".$this->esquemaadmin."i3geoestat_agregaregiao ";
2088 if($id_agregaregiao != ""){ 2095 if($id_agregaregiao != ""){
2089 $sql .= "WHERE id_agregaregiao = $id_agregaregiao "; 2096 $sql .= "WHERE id_agregaregiao = $id_agregaregiao ";
2090 } 2097 }
2091 else{ 2098 else{
2092 - $sql .= "WHERE codigo_tipo_regiao = $codigo_tipo_regiao"; 2099 + if($codigo_tipo_regiao != ""){
  2100 + $sql .= "WHERE codigo_tipo_regiao = $codigo_tipo_regiao";
  2101 + }
2093 } 2102 }
2094 $sql .= " ORDER BY colunaligacao_regiaopai"; 2103 $sql .= " ORDER BY colunaligacao_regiaopai";
2095 //echo $sql;exit; 2104 //echo $sql;exit;
ferramentas/saiku/esquemaxml.php
@@ -3,17 +3,12 @@ include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); @@ -3,17 +3,12 @@ include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php");
3 $m = new Metaestat(); 3 $m = new Metaestat();
4 4
5 $regioes = $m->listaTipoRegiao(); 5 $regioes = $m->listaTipoRegiao();
6 -$hierarquia = array();  
7 -//hierarquia de cada regiao  
8 -foreach($regioes as $regiao){  
9 - $hregioes = $m->listaHierarquiaRegioes($regiao["codigo_tipo_regiao"]);  
10 - $hierarquias[$regiao["codigo_tipo_regiao"]] = $hregioes;  
11 -}  
12 -echo "<pre>";var_dump($hierarquias);exit;  
13 $xml = "<Schema name='i3Geo Metaestat'>"; 6 $xml = "<Schema name='i3Geo Metaestat'>";
14 foreach($regioes as $regiao){ 7 foreach($regioes as $regiao){
  8 + $caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]);
  9 + //
15 //verifica se a regiao tem hierarquia 10 //verifica se a regiao tem hierarquia
16 - if(count($hierarquias[$regiao["codigo_tipo_regiao"]]) == 0){ 11 + if(empty($caminho)){
17 $xml .= " 12 $xml .= "
18 <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='".converte($regiao["nome_tipo_regiao"])."'> 13 <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='".converte($regiao["nome_tipo_regiao"])."'>
19 <Hierarchy hasAll='true' primaryKey='".$regiao["identificador"]."'> 14 <Hierarchy hasAll='true' primaryKey='".$regiao["identificador"]."'>
@@ -24,27 +19,36 @@ foreach($regioes as $regiao){ @@ -24,27 +19,36 @@ foreach($regioes as $regiao){
24 "; 19 ";
25 } 20 }
26 else{ 21 else{
27 - $caminho = $m->regiaoFilhaAoPai($regiao["codigo_tipo_regiao"]);  
28 - //echo "<pre>";var_dump($caminho);  
29 $xml .= " 22 $xml .= "
30 <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='".converte($regiao["nome_tipo_regiao"])."'> 23 <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='".converte($regiao["nome_tipo_regiao"])."'>
31 <Hierarchy hasAll='true' primaryKey='".$regiao["identificador"]."'> 24 <Hierarchy hasAll='true' primaryKey='".$regiao["identificador"]."'>
32 "; 25 ";
33 //cria uma view juntando as tabelas da hierarquia de regioes 26 //cria uma view juntando as tabelas da hierarquia de regioes
34 - $ri = $regioes[$caminho[0]];  
35 - $sql = "SELECT * FROM {$ri['esquemadb']}.{$ri['tabela']} AS regiao ";  
36 - $nc = count($caminho) - 1;  
37 - for($i=0;$i<$nc;$i++){  
38 - $r = $regioes[$caminho[$i]];  
39 - $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']}  
40 - AS j$i ON j$i.{$r['identificador']}::text = regiao.{$regiao['identificador']}::text  
41 - "; 27 + $n = count($caminho);
  28 + $r = $m->listaTipoRegiao($caminho[0]);
  29 + $colunas = array();
  30 + $sql = "SELECT __COLUNAS__ FROM {$r['esquemadb']}.{$r['tabela']} AS regiao ";
  31 + $colunas[] = "regiao.".$r['identificador'];
  32 + $colunas[] = "regiao.".$r['colunanomeregiao'];
  33 + $tabelaAnt = "regiao";
  34 + if($n > 1){
  35 + for($i=1;$i<$n;$i++){
  36 + $r = $m->listaTipoRegiao($caminho[$i]);
  37 + $colunas[] = "j".$i.".".$r['colunanomeregiao'];
  38 + $colunas[] = "j".$i.".".$r['identificador'];
  39 + $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']}
  40 + AS j$i ON j$i.{$r['identificador']}::text = {$tabelaAnt}.{$r['identificador']}::text
  41 + ";
  42 + $tabelaAnt = "j".$i;
  43 + }
42 } 44 }
43 - $h = $hierarquias[$caminho[0]];  
44 - $h = $h[0];  
45 $sql .= "INNER JOIN {$regiao['esquemadb']}.{$regiao['tabela']} 45 $sql .= "INNER JOIN {$regiao['esquemadb']}.{$regiao['tabela']}
46 - AS j ON j.{$regiao['identificador']}::text = regiao.{$h['colunaligacao_regiaopai']}::text  
47 - "; 46 + AS j$i ON j$i.{$regiao['identificador']}::text = {$tabelaAnt}.{$regiao['identificador']}::text
  47 + ";
  48 + $colunas[] = "j".$i.".".$regiao['colunanomeregiao'];
  49 + $colunas[] = "j".$i.".".$regiao['identificador'];
  50 + $colunas = implode($colunas,",");
  51 + $sql = str_replace("__COLUNAS__",$colunas,$sql);
48 $xml .= " 52 $xml .= "
49 <view><sql>$sql</sql></view> 53 <view><sql>$sql</sql></view>
50 "; 54 ";
@@ -94,4 +98,4 @@ function converte($texto) @@ -94,4 +98,4 @@ function converte($texto)
94 $texto = str_replace("&","&amp;",htmlentities($texto)); 98 $texto = str_replace("&","&amp;",htmlentities($texto));
95 return $texto; 99 return $texto;
96 } 100 }
97 -?>  
98 \ No newline at end of file 101 \ No newline at end of file
  102 +?>