From 55a06a0e7a2247773d590b4c48d5c1c20096572c Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sun, 6 Jul 2014 01:37:28 +0000 Subject: [PATCH] Correção na inclusão de parâmetros no sistema de metadados estatísticos e acesso via SAIKU --- admin/admin.db | Bin 263168 -> 0 bytes admin/php/classe_metaestat.php | 13 ++++++++++++- ferramentas/saiku/esquemaxml.php | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------- 3 files changed, 66 insertions(+), 36 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index 141e0af..3dc8640 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index 2a34acf..334a18f 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -1940,7 +1940,7 @@ class Metaestat{ $sql .= "AND i3geoestat_parametro_medida.id_parametro_medida = $id_parametro_medida "; } } - else{ + elseif ($id_parametro_medida != ""){ $sql .= "WHERE i3geoestat_parametro_medida.id_parametro_medida = $id_parametro_medida "; } if($id_pai != ""){ @@ -1956,6 +1956,17 @@ class Metaestat{ //echo $sql;exit; return $this->execSQL($sql,$id_parametro_medida); } + /** + * Lista todos os parametros cadastrados + */ + function listaTodosParametros(){ + $sql = "SELECT i3geoestat_parametro_medida.*,i3geoestat_medida_variavel.* "; + $sql .= "FROM ".$this->esquemaadmin."i3geoestat_parametro_medida "; + $sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel "; + $sql .= "ON i3geoestat_parametro_medida.id_medida_variavel = i3geoestat_medida_variavel.id_medida_variavel "; + $sql .= " ORDER BY nome"; + return $this->execSQL($sql); + } /** * Lista os valores (unicos) que ocorrem em um parametro de uma medida de variavel * @param id do parametro diff --git a/ferramentas/saiku/esquemaxml.php b/ferramentas/saiku/esquemaxml.php index bb5cbb7..38e4907 100644 --- a/ferramentas/saiku/esquemaxml.php +++ b/ferramentas/saiku/esquemaxml.php @@ -1,9 +1,10 @@ @@ -148,6 +150,7 @@ $xml .= " "; +//dimensoes geograficas //as dimensoes sao duplicadas //uma delas contem o geocodigo que permite a geracao do mapa $xml1 = ""; @@ -232,28 +235,6 @@ foreach($regioes as $regiao){ "; $xml1 .= implode(" ",$niveis1); $xml2 .= implode(" ",$niveis2); - /* - //verifica se existem propriedades (colunas adicionais) - if($vis != ""){ - //apelidos - $apelidos = $regiao['apelidos']; - if($apelidos != ""){ - $apelidos = str_replace(";",",",$apelidos); - $apelidos = str_replace(",,",",",$apelidos); - $apelidos = converte($apelidos); - $apelidos = explode(",",$apelidos); - } - else{ - $apelidos = $vis; - } - $nvis = count($vis); - for($i = 0; $i < $nvis; $i++){ - $xml .= " - - "; - } - } - */ $xml1 .= " @@ -263,7 +244,41 @@ foreach($regioes as $regiao){ "; } -$xml .= $xml1.$xml2; +//outras dimensoes definidas nos parametros e que nao sejam do tipo tempo +$parametros = $m->listaTodosParametros(); +$dimOutras = array(); +foreach($parametros as $p){ + //apenas as nao tempo + if($p["tipo"] < 1 || $p["tipo"] > 5){ + $k = $p["esquema"]."_".$p["tabela"]."_".$p["coluna"]; + if(empty($tbs[$k])){ + $dimOutras[$k] = $p; + } + else{ + array_push($dimOutras[$k],$p); + } + } +} +$xml3 = ""; +foreach($dimOutras as $d){ + $k = $p["esquemadb"]."_".$d["tabela"]."_".$d["coluna"]; + $xml3 .= " + + + "; + //cria uma view juntando as tabelas da hierarquia de regioes + $colunas = "dim.{$d['coluna']}, "; + $colunas .= "dim.{$d['coluna']} AS nome"; + $sql = "SELECT {$colunas} FROM ".$d['esquemadb'].".".$d['tabela']." as dim group by ".$d['coluna']; + $xml3 .= "$sql"; + $xml3 .= " + "; + $xml3 .= " + "; +} +$xml .= $xml1.$xml2.$xml3; //junta as medidas conforme o nome da tabela utilizada $medidas = $m->listaMedidaVariavel(); //var_dump($medidas);exit; @@ -300,7 +315,7 @@ foreach($tbs as $tb){ foreach($tb as $medida){ //echo "
";var_dump($medida)."
"; $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",false,false); - + $parComposto = array(); //guarda a composicao da chave que liga com a dimensao $colunaAdicionais = array(); //parametro do tipo tempo @@ -320,31 +335,32 @@ foreach($tbs as $tb){ //outros parametros $outrosParametros = array(); //TODO criar as dimensoes aqui + //echo "
";var_dump($parametros);
 		foreach($parametros as $parametro){
+			$k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"];
 			if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){
-				//$outrosParametros[] = $parametro["coluna"];
-				//$VirtualCubeDimension[] = "";
-				//$dimEnsoes[] = "";
+				$outrosParametros[] = $k;
+				$VirtualCubeDimension[] = "";
+				$dimEnsoes[] = "";
 			}
 		}
 	}
-	//exit;
 	$xml .= "
 	";
 	$incluirChaves = array("*");
-	
+
 	if(count($parComposto) > 0){
 		//$sql = "select *,".implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_ from {$c["esquemadb"]}.{$c["tabela"]}";
 		$incluirChaves[] = implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_";
 	}
 	if(count($outrosParametros) > 0){
 		foreach($outrosParametros as $o){
-			$incluirChaves[] = $o."::text as ".$o."_";
+			//$incluirChaves[] = $o."::text as ".$o."_";
 		}
 	}
-		
+
 	$sql = "select ".implode(",",$incluirChaves)." from {$c["esquemadb"]}.{$c["tabela"]}";
-	
+
 	$xml .= "
 		$sql
 			
@@ -373,7 +389,6 @@ foreach($tbs as $tb){
 		
 		";
 }
-
 $xml .= '';
 $VirtualCubeDimension = array_unique($VirtualCubeDimension);
 $VirtualCubeMeasure = array_unique($VirtualCubeMeasure);
@@ -383,7 +398,11 @@ $xml .= '';
 $xml .= "";
 error_reporting(0);
 ob_end_clean();
-//echo $xml;exit;
+
+if($_GET["output"] == "xml"){
+	echo header("Content-type: application/xml");
+	echo $xml;exit;
+}
 gravaDados(array($xml),$arquivoXmlEsquema);
 
 header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]);
--
libgit2 0.21.2