Commit 533a2553c34ff5725fcc8284208bb3f19d630014
1 parent
eb4eaf05
Exists in
master
and in
7 other branches
--no commit message
Showing
4 changed files
with
160 additions
and
2 deletions
Show diff stats
admin/php/classe_metaestat.php
@@ -54,7 +54,7 @@ class Metaestat{ | @@ -54,7 +54,7 @@ class Metaestat{ | ||
54 | /** | 54 | /** |
55 | * Indica se e necessario converter para UTF strings obtidas do banco de administracao | 55 | * Indica se e necessario converter para UTF strings obtidas do banco de administracao |
56 | */ | 56 | */ |
57 | - protected $convUTF; | 57 | + public $convUTF; |
58 | /** | 58 | /** |
59 | * Pasta temporaria utilizada pelo mapserver | 59 | * Pasta temporaria utilizada pelo mapserver |
60 | */ | 60 | */ |
@@ -513,7 +513,7 @@ class Metaestat{ | @@ -513,7 +513,7 @@ class Metaestat{ | ||
513 | * @param chegar na regiao | 513 | * @param chegar na regiao |
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; | 517 | //echo $codigo_tipo_regiao." ".$codigo_tipo_regiao_pai; |
518 | $pais = $this->listaAgregaRegiao($codigo_tipo_regiao); | 518 | $pais = $this->listaAgregaRegiao($codigo_tipo_regiao); |
519 | $caminho = array($codigo_tipo_regiao); | 519 | $caminho = array($codigo_tipo_regiao); |
@@ -530,11 +530,15 @@ class Metaestat{ | @@ -530,11 +530,15 @@ class Metaestat{ | ||
530 | return array("caminho"=>$caminho,"colunas"=>$colunas); | 530 | return array("caminho"=>$caminho,"colunas"=>$colunas); |
531 | } | 531 | } |
532 | $testaPai = $this->regiaoFilhaAoPai($pai["codigo_tipo_regiao_pai"],$codigo_tipo_regiao_pai); | 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 | + } | ||
533 | if(count($testaPai) == 0){ | 536 | if(count($testaPai) == 0){ |
534 | $caminho = array(); | 537 | $caminho = array(); |
535 | $colunas = array(); | 538 | $colunas = array(); |
536 | } | 539 | } |
537 | } | 540 | } |
541 | + | ||
538 | } | 542 | } |
539 | /** | 543 | /** |
540 | * Cria um arquivo mapfile para uma medida de variavel | 544 | * Cria um arquivo mapfile para uma medida de variavel |
@@ -0,0 +1,97 @@ | @@ -0,0 +1,97 @@ | ||
1 | +<?php | ||
2 | +include(dirname(__FILE__)."/../../admin/php/classe_metaestat.php"); | ||
3 | +$m = new Metaestat(); | ||
4 | + | ||
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'>"; | ||
14 | +foreach($regioes as $regiao){ | ||
15 | + //verifica se a regiao tem hierarquia | ||
16 | + if(count($hierarquias[$regiao["codigo_tipo_regiao"]]) == 0){ | ||
17 | + $xml .= " | ||
18 | + <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='".converte($regiao["nome_tipo_regiao"])."'> | ||
19 | + <Hierarchy hasAll='true' primaryKey='".$regiao["identificador"]."'> | ||
20 | + <Table name='".$regiao["tabela"]."' schema='".$regiao["esquemadb"]."' /> | ||
21 | + <Level name='Nome - ".converte($regiao["nome_tipo_regiao"])."' column='".$regiao["colunanomeregiao"]."' uniqueMembers='true'/> | ||
22 | + </Hierarchy> | ||
23 | + </Dimension> | ||
24 | + "; | ||
25 | + } | ||
26 | + else{ | ||
27 | + $caminho = $m->regiaoFilhaAoPai($regiao["codigo_tipo_regiao"]); | ||
28 | + //echo "<pre>";var_dump($caminho); | ||
29 | + $xml .= " | ||
30 | + <Dimension name='codigo_tipo_regiao_".$regiao["codigo_tipo_regiao"]."' caption='".converte($regiao["nome_tipo_regiao"])."'> | ||
31 | + <Hierarchy hasAll='true' primaryKey='".$regiao["identificador"]."'> | ||
32 | + "; | ||
33 | + //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 | + "; | ||
42 | + } | ||
43 | + $h = $hierarquias[$caminho[0]]; | ||
44 | + $h = $h[0]; | ||
45 | + $sql .= "INNER JOIN {$regiao['esquemadb']}.{$regiao['tabela']} | ||
46 | + AS j ON j.{$regiao['identificador']}::text = regiao.{$h['colunaligacao_regiaopai']}::text | ||
47 | + "; | ||
48 | + $xml .= " | ||
49 | + <view><sql>$sql</sql></view> | ||
50 | + "; | ||
51 | + //<Level name='Nome - ".converte($regiao["nome_tipo_regiao"])."' column='".$regiao["colunanomeregiao"]."' uniqueMembers='true'/> | ||
52 | + $xml .= " | ||
53 | + </Hierarchy> | ||
54 | + </Dimension> | ||
55 | + "; | ||
56 | + } | ||
57 | +} | ||
58 | + | ||
59 | +$xml .= " | ||
60 | + <Cube name='Vari&aacute;veis'>"; | ||
61 | +$medidas = $m->listaMedidaVariavel(); | ||
62 | +$tabela = ""; | ||
63 | +foreach($medidas as $medida){ | ||
64 | + $agregador = "sum"; | ||
65 | + if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 1){ | ||
66 | + $agregador = "avg"; | ||
67 | + } | ||
68 | + if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 0){ | ||
69 | + $agregador = "count"; | ||
70 | + } | ||
71 | + if($tabela != $medida["esquemadb"].".".$medida["tabela"]){ | ||
72 | + $xml .= " | ||
73 | + <Table name='".$medida["tabela"]."' schema='".$medida["esquemadb"]."' /> | ||
74 | + <DimensionUsage foreignKey='".$medida["colunaidgeo"]."' name='codigo_tipo_regiao_".$medida["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$medida["codigo_tipo_regiao"]."'/> | ||
75 | + "; | ||
76 | + } | ||
77 | + $xml .= " | ||
78 | + <Measure name='id_medida_variavel_".$medida["id_medida_variavel"]."' caption='".converte($medida["nomemedida"])."' column='".$medida["colunavalor"]."' aggregator='".$agregador."' /> | ||
79 | + "; | ||
80 | + | ||
81 | + $tabela = $medida["esquemadb"].".".$medida["tabela"]; | ||
82 | +} | ||
83 | +$xml .= " | ||
84 | + </Cube> | ||
85 | + </Schema>"; | ||
86 | +error_reporting(0); | ||
87 | +ob_end_clean(); | ||
88 | +echo header("Content-type: application/xml"); | ||
89 | +echo $xml; | ||
90 | +exit; | ||
91 | +function converte($texto) | ||
92 | +{ | ||
93 | + //$texto = str_replace("Í","&iacute",$texto); | ||
94 | +$texto = str_replace("&","&",htmlentities($texto)); | ||
95 | + return $texto; | ||
96 | +} | ||
97 | +?> | ||
0 | \ No newline at end of file | 98 | \ No newline at end of file |
@@ -0,0 +1,6 @@ | @@ -0,0 +1,6 @@ | ||
1 | +type=OLAP | ||
2 | +name=i3geo | ||
3 | +driver=mondrian.olap4j.MondrianOlap4jDriver | ||
4 | +location=jdbc:mondrian:Jdbc=jdbc:postgresql://localhost:5432/i3geosaude;Catalog=res:/var/www/i3geo/ferramentas/saiku/esquemaxml.php;JdbcDrivers=org.postgresql.Driver; | ||
5 | +username=postgres | ||
6 | +password=postgres |
@@ -0,0 +1,51 @@ | @@ -0,0 +1,51 @@ | ||
1 | +Roteiro para instalação e configuração do SAIKU para uso com o i3Geo. | ||
2 | + | ||
3 | +Para mais informações veja em: http://docs.analytical-labs.com/ | ||
4 | + | ||
5 | +- Faça o download do SAIKU Server no endereço: http://meteorite.bi/saiku/download | ||
6 | + | ||
7 | +- 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) | ||
8 | + | ||
9 | +- Edite o arquivo saiku-server/tomcat/conf/server.xml para definir a porta utilizada pelo SAIKU | ||
10 | + | ||
11 | + Procure por | ||
12 | + | ||
13 | + <Connector port="9090" protocol="HTTP/1.1" | ||
14 | + | ||
15 | + e modifique o valor da porta se achar necessário | ||
16 | + | ||
17 | +- Configure o arquivo de conexão com a fonte de dados | ||
18 | + | ||
19 | + Copie o arquivo "i3geo" localizado em | ||
20 | + | ||
21 | + /var/www/i3geo/ferramentas/saiku | ||
22 | + | ||
23 | + (c:\\ms4w\Apache\htdocs\i3geo\ferramentas\saiku no Windows) | ||
24 | + | ||
25 | + para a pasta: | ||
26 | + | ||
27 | + saiku-server/tomcat/webapps/saiku/WEB-INF/classes/saiku-datasources | ||
28 | + | ||
29 | + Esse arquivo indica qual a fonte de dados que será usada. Altere os valores conforme sua necessidade, por exemplo: | ||
30 | + | ||
31 | + No lugar de localhost coloque o endereço do banco de dados Postgres | ||
32 | + | ||
33 | + No lugar de i3geosaude coloque o nome do banco de dados onde estão as tabelas utilizadas pelo i3Geo | ||
34 | + | ||
35 | + No lugar de http://localhost/i3geo/ferramentas/saiku/esquemaxml.php coloque o endereço (URL) completo do arquivo i3geo/ferramentas/saiku/esquemaxml.php | ||
36 | + | ||
37 | + No lugar de postgres coloque os nomes de usuário e senha para conexão com o banco de dados | ||
38 | + | ||
39 | +- Inicialize o servidor para o SAIKU | ||
40 | + | ||
41 | + Procure na pasta saiku-server o programa start-saiku.bat (para Windows) ou start-saiku.sh para Linux. | ||
42 | + | ||
43 | + Execute esse programa. No caso do linux, digite no terminal: | ||
44 | + | ||
45 | + ./start-saiku.sh | ||
46 | + | ||
47 | + Abra o navegador e digite: | ||
48 | + | ||
49 | + http://localhost:9090/ | ||
50 | + | ||
51 | + Se tudo estiver ok, deve aparecer ua tela de login. Utilize admin como usuário e admin como senha |