From 533a2553c34ff5725fcc8284208bb3f19d630014 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Wed, 18 Dec 2013 10:40:32 +0000 Subject: [PATCH] --- admin/php/classe_metaestat.php | 8 ++++++-- ferramentas/saiku/esquemaxml.php | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/saiku/i3geo | 6 ++++++ ferramentas/saiku/instal.txt | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 ferramentas/saiku/esquemaxml.php create mode 100644 ferramentas/saiku/i3geo create mode 100644 ferramentas/saiku/instal.txt diff --git a/admin/php/classe_metaestat.php b/admin/php/classe_metaestat.php index 4f49c74..357d9f6 100755 --- a/admin/php/classe_metaestat.php +++ b/admin/php/classe_metaestat.php @@ -54,7 +54,7 @@ class Metaestat{ /** * Indica se e necessario converter para UTF strings obtidas do banco de administracao */ - protected $convUTF; + public $convUTF; /** * Pasta temporaria utilizada pelo mapserver */ @@ -513,7 +513,7 @@ class Metaestat{ * @param chegar na regiao * @return array lista de ids de regioes sequenciais do filho ate chegar ao pai indicado */ - function regiaoFilhaAoPai($codigo_tipo_regiao,$codigo_tipo_regiao_pai){ + function regiaoFilhaAoPai($codigo_tipo_regiao,$codigo_tipo_regiao_pai=""){ //echo $codigo_tipo_regiao." ".$codigo_tipo_regiao_pai; $pais = $this->listaAgregaRegiao($codigo_tipo_regiao); $caminho = array($codigo_tipo_regiao); @@ -530,11 +530,15 @@ class Metaestat{ return array("caminho"=>$caminho,"colunas"=>$colunas); } $testaPai = $this->regiaoFilhaAoPai($pai["codigo_tipo_regiao_pai"],$codigo_tipo_regiao_pai); + if(count($testaPai) == 0 && $codigo_tipo_regiao_pai == ""){ + return array("caminho"=>$caminho,"colunas"=>$colunas); + } if(count($testaPai) == 0){ $caminho = array(); $colunas = array(); } } + } /** * Cria um arquivo mapfile para uma medida de variavel diff --git a/ferramentas/saiku/esquemaxml.php b/ferramentas/saiku/esquemaxml.php new file mode 100644 index 0000000..7563558 --- /dev/null +++ b/ferramentas/saiku/esquemaxml.php @@ -0,0 +1,97 @@ +listaTipoRegiao(); +$hierarquia = array(); +//hierarquia de cada regiao +foreach($regioes as $regiao){ + $hregioes = $m->listaHierarquiaRegioes($regiao["codigo_tipo_regiao"]); + $hierarquias[$regiao["codigo_tipo_regiao"]] = $hregioes; +} +echo "
";var_dump($hierarquias);exit;
+$xml = "";
+foreach($regioes as $regiao){
+	//verifica se a regiao tem hierarquia
+	if(count($hierarquias[$regiao["codigo_tipo_regiao"]]) == 0){
+		$xml .= "
+			
+				
+				
+					
+				
+			
+		";
+	}
+	else{
+		$caminho = $m->regiaoFilhaAoPai($regiao["codigo_tipo_regiao"]);
+		//echo "
";var_dump($caminho);
+		$xml .= "
+			
+				
+		";
+		//cria uma view juntando as tabelas da hierarquia de regioes
+		$ri = $regioes[$caminho[0]];
+		$sql = "SELECT * FROM {$ri['esquemadb']}.{$ri['tabela']} AS regiao ";
+		$nc = count($caminho) - 1;
+		for($i=0;$i<$nc;$i++){
+			$r = $regioes[$caminho[$i]];
+			$sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']}
+				AS j$i ON j$i.{$r['identificador']}::text = regiao.{$regiao['identificador']}::text
+			";
+		}
+		$h = $hierarquias[$caminho[0]];
+		$h = $h[0];
+		$sql .= "INNER JOIN {$regiao['esquemadb']}.{$regiao['tabela']}
+			AS j ON j.{$regiao['identificador']}::text = regiao.{$h['colunaligacao_regiaopai']}::text
+		";
+		$xml .= "
+				$sql
+		";
+		//
+		$xml .= "
+				
+			
+		";
+	}
+}
+
+$xml .= "
+	";
+$medidas = $m->listaMedidaVariavel();
+$tabela = "";
+foreach($medidas as $medida){
+	$agregador = "sum";
+	if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 1){
+		$agregador = "avg";
+	}
+	if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 0){
+		$agregador = "count";
+	}
+	if($tabela != $medida["esquemadb"].".".$medida["tabela"]){
+		$xml .= "
+			
+ + "; + } + $xml .= " + + "; + + $tabela = $medida["esquemadb"].".".$medida["tabela"]; +} +$xml .= " + + "; +error_reporting(0); +ob_end_clean(); +echo header("Content-type: application/xml"); +echo $xml; +exit; +function converte($texto) +{ + //$texto = str_replace("Í","&iacute",$texto); +$texto = str_replace("&","&",htmlentities($texto)); + return $texto; +} +?> \ No newline at end of file diff --git a/ferramentas/saiku/i3geo b/ferramentas/saiku/i3geo new file mode 100644 index 0000000..f69d2ea --- /dev/null +++ b/ferramentas/saiku/i3geo @@ -0,0 +1,6 @@ +type=OLAP +name=i3geo +driver=mondrian.olap4j.MondrianOlap4jDriver +location=jdbc:mondrian:Jdbc=jdbc:postgresql://localhost:5432/i3geosaude;Catalog=res:/var/www/i3geo/ferramentas/saiku/esquemaxml.php;JdbcDrivers=org.postgresql.Driver; +username=postgres +password=postgres diff --git a/ferramentas/saiku/instal.txt b/ferramentas/saiku/instal.txt new file mode 100644 index 0000000..73f4d05 --- /dev/null +++ b/ferramentas/saiku/instal.txt @@ -0,0 +1,51 @@ +Roteiro para instalação e configuração do SAIKU para uso com o i3Geo. + +Para mais informações veja em: http://docs.analytical-labs.com/ + +- Faça o download do SAIKU Server no endereço: http://meteorite.bi/saiku/download + +- Descompacte os arquivos em uma pasta em seu servidor, podendo ser a mesma pasta onde se encontra a pasta i3geo (no Linux /var/www por exemplo) + +- Edite o arquivo saiku-server/tomcat/conf/server.xml para definir a porta utilizada pelo SAIKU + + Procure por + +