Commit 5e4fa5fc7b83c019e94eb779efa6308410aeab1c

Authored by Edmar Moretti
1 parent a17dc167

--no commit message

Showing 1 changed file with 24 additions and 7 deletions   Show diff stats
ferramentas/saiku/esquemaxml.php
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 // 4 //
5 //utilize &xmlesquema= caso o XML ja exista 5 //utilize &xmlesquema= caso o XML ja exista
6 // 6 //
7 -//http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=&xmlesquema=http://localhost/testemondrian.xml 7 +//http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=&xmlesquema=http://localhost/i3geo/ferramentas/saiku/testemondrian.xml
8 // 8 //
9 //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas 9 //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas
10 if(empty($_GET["g_sid"])){ 10 if(empty($_GET["g_sid"])){
@@ -169,6 +169,10 @@ if(empty($_GET["xmlesquema"])){ @@ -169,6 +169,10 @@ if(empty($_GET["xmlesquema"])){
169 </Hierarchy> 169 </Hierarchy>
170 </Dimension> 170 </Dimension>
171 "; 171 ";
  172 + //global
  173 + $medidas = $m->listaMedidaVariavel();
  174 +
  175 + //echo "<pre>";var_dump($regioesTabela);exit;
172 //dimensoes geograficas 176 //dimensoes geograficas
173 //as dimensoes sao duplicadas 177 //as dimensoes sao duplicadas
174 //uma delas contem o geocodigo que permite a geracao do mapa 178 //uma delas contem o geocodigo que permite a geracao do mapa
@@ -184,7 +188,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){ @@ -184,7 +188,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
184 } 188 }
185 $xml1 = ""; 189 $xml1 = "";
186 $xml2 = ""; 190 $xml2 = "";
187 - 191 +
188 foreach($regioes as $regiao){ 192 foreach($regioes as $regiao){
189 $sqls = array(); 193 $sqls = array();
190 $xml1 .= " 194 $xml1 .= "
@@ -231,7 +235,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){ @@ -231,7 +235,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
231 //descobre a coluna de ligacao da regiao 235 //descobre a coluna de ligacao da regiao
232 $agr = $m->listaAgregaRegiaoFilho($regiaoAtual['codigo_tipo_regiao'],$r['codigo_tipo_regiao']); 236 $agr = $m->listaAgregaRegiaoFilho($regiaoAtual['codigo_tipo_regiao'],$r['codigo_tipo_regiao']);
233 237
234 - $sql .= " JOIN {$r['esquemadb']}.{$r['tabela']} as b$i ON 238 + $sql .= " JOIN {$r['esquemadb']}.{$r['tabela']} as b$i ON
235 a$j.{$agr['colunaligacao_regiaopai']}::text = b$i.{$r['identificador']}::text 239 a$j.{$agr['colunaligacao_regiaopai']}::text = b$i.{$r['identificador']}::text
236 "; 240 ";
237 } 241 }
@@ -257,6 +261,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){ @@ -257,6 +261,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
257 uniqueMembers='".$unico."' /> 261 uniqueMembers='".$unico."' />
258 "; 262 ";
259 $unico = "false"; 263 $unico = "false";
  264 +
260 $regiaoAtual = $m->listaTipoRegiao($caminho[$j]); 265 $regiaoAtual = $m->listaTipoRegiao($caminho[$j]);
261 } 266 }
262 //echo "<pre>";echo implode("UNION\n\n",$sqls);exit; 267 //echo "<pre>";echo implode("UNION\n\n",$sqls);exit;
@@ -319,7 +324,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){ @@ -319,7 +324,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
319 } 324 }
320 $xml .= $xml1.$xml2.$xml3; 325 $xml .= $xml1.$xml2.$xml3;
321 //junta as medidas conforme o nome da tabela utilizada 326 //junta as medidas conforme o nome da tabela utilizada
322 - $medidas = $m->listaMedidaVariavel(); 327 +
323 //var_dump($medidas);exit; 328 //var_dump($medidas);exit;
324 $tbs = array(); 329 $tbs = array();
325 //echo $codigo_tipo_regiao;exit; 330 //echo $codigo_tipo_regiao;exit;
@@ -338,16 +343,18 @@ if(empty($_GET[&quot;xmlesquema&quot;])){ @@ -338,16 +343,18 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
338 //monta os cubos para cada esquema.tabela diferente 343 //monta os cubos para cada esquema.tabela diferente
339 $VirtualCubeDimension = array(); 344 $VirtualCubeDimension = array();
340 $VirtualCubeMeasure = array(); 345 $VirtualCubeMeasure = array();
341 - //echo "<pre>";var_dump($tbs)."<br>";exit; 346 +
342 foreach($tbs as $tb){ 347 foreach($tbs as $tb){
343 //cabecalho de cada cubo obtido da primeira medida 348 //cabecalho de cada cubo obtido da primeira medida
344 $c = $tb[0]; 349 $c = $tb[0];
  350 +
345 $VirtualCubeDimension[] = " 351 $VirtualCubeDimension[] = "
346 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' /> 352 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />
347 "; 353 ";
348 $VirtualCubeDimension[] = " 354 $VirtualCubeDimension[] = "
349 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' /> 355 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />
350 "; 356 ";
  357 +
351 array_push( 358 array_push(
352 $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]], 359 $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
353 "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />" 360 "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />"
@@ -395,8 +402,8 @@ if(empty($_GET[&quot;xmlesquema&quot;])){ @@ -395,8 +402,8 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
395 } 402 }
396 } 403 }
397 //$dimEnsoes[] = '<DimensionUsage foreignKey="coduf" name="codigo_tipo_regiao_2" source="codigo_tipo_regiao_2"/>'; 404 //$dimEnsoes[] = '<DimensionUsage foreignKey="coduf" name="codigo_tipo_regiao_2" source="codigo_tipo_regiao_2"/>';
398 - $xml .= "  
399 - <Cube cache='false' name='Tabela: {$c["esquemadb"]}{$c["tabela"]}'>"; 405 +
  406 + $xml .= "<Cube cache='false' name='Tabela: {$c["esquemadb"]}{$c["tabela"]}'>";
400 $incluirChaves = array("*"); 407 $incluirChaves = array("*");
401 408
402 if(count($parComposto) > 0){ 409 if(count($parComposto) > 0){
@@ -410,11 +417,19 @@ if(empty($_GET[&quot;xmlesquema&quot;])){ @@ -410,11 +417,19 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
410 } 417 }
411 418
412 $sql = "select ".implode(",",$incluirChaves).",{$c["colunaidgeo"]}::text as codigodim from {$c["esquemadb"]}.{$c["tabela"]}"; 419 $sql = "select ".implode(",",$incluirChaves).",{$c["colunaidgeo"]}::text as codigodim from {$c["esquemadb"]}.{$c["tabela"]}";
  420 + //a tabela pode ter dimensoes em diferentes hierarquias
413 $xml .= " 421 $xml .= "
414 <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view> 422 <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view>
415 <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/> 423 <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/>
416 <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod'/> 424 <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."_geocod'/>
417 "; 425 ";
  426 + //inclui as dimensoes filhas
  427 + foreach($filhosDaRegiao[$c["codigo_tipo_regiao"]] as $fr){
  428 + $xml .= "
  429 + <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$fr."' source='codigo_tipo_regiao_".$fr."'/>
  430 + <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$fr."_geocod' source='codigo_tipo_regiao_".$fr."_geocod'/>
  431 + ";
  432 + }
418 433
419 $xml .= implode(" ",array_unique($dimEnsoes)); 434 $xml .= implode(" ",array_unique($dimEnsoes));
420 435
@@ -439,7 +454,9 @@ if(empty($_GET[&quot;xmlesquema&quot;])){ @@ -439,7 +454,9 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
439 $xml .= " 454 $xml .= "
440 </Cube> 455 </Cube>
441 "; 456 ";
  457 +
442 } 458 }
  459 +
443 $xml .= '<VirtualCube name="Todas as medidas" >'; 460 $xml .= '<VirtualCube name="Todas as medidas" >';
444 $VirtualCubeDimension = array_unique($VirtualCubeDimension); 461 $VirtualCubeDimension = array_unique($VirtualCubeDimension);
445 $VirtualCubeMeasure = array_unique($VirtualCubeMeasure); 462 $VirtualCubeMeasure = array_unique($VirtualCubeMeasure);