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 4 //
5 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 9 //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas
10 10 if(empty($_GET["g_sid"])){
... ... @@ -169,6 +169,10 @@ if(empty($_GET["xmlesquema"])){
169 169 </Hierarchy>
170 170 </Dimension>
171 171 ";
  172 + //global
  173 + $medidas = $m->listaMedidaVariavel();
  174 +
  175 + //echo "<pre>";var_dump($regioesTabela);exit;
172 176 //dimensoes geograficas
173 177 //as dimensoes sao duplicadas
174 178 //uma delas contem o geocodigo que permite a geracao do mapa
... ... @@ -184,7 +188,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
184 188 }
185 189 $xml1 = "";
186 190 $xml2 = "";
187   -
  191 +
188 192 foreach($regioes as $regiao){
189 193 $sqls = array();
190 194 $xml1 .= "
... ... @@ -231,7 +235,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
231 235 //descobre a coluna de ligacao da regiao
232 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 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 261 uniqueMembers='".$unico."' />
258 262 ";
259 263 $unico = "false";
  264 +
260 265 $regiaoAtual = $m->listaTipoRegiao($caminho[$j]);
261 266 }
262 267 //echo "<pre>";echo implode("UNION\n\n",$sqls);exit;
... ... @@ -319,7 +324,7 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
319 324 }
320 325 $xml .= $xml1.$xml2.$xml3;
321 326 //junta as medidas conforme o nome da tabela utilizada
322   - $medidas = $m->listaMedidaVariavel();
  327 +
323 328 //var_dump($medidas);exit;
324 329 $tbs = array();
325 330 //echo $codigo_tipo_regiao;exit;
... ... @@ -338,16 +343,18 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
338 343 //monta os cubos para cada esquema.tabela diferente
339 344 $VirtualCubeDimension = array();
340 345 $VirtualCubeMeasure = array();
341   - //echo "<pre>";var_dump($tbs)."<br>";exit;
  346 +
342 347 foreach($tbs as $tb){
343 348 //cabecalho de cada cubo obtido da primeira medida
344 349 $c = $tb[0];
  350 +
345 351 $VirtualCubeDimension[] = "
346 352 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />
347 353 ";
348 354 $VirtualCubeDimension[] = "
349 355 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}_geocod' />
350 356 ";
  357 +
351 358 array_push(
352 359 $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
353 360 "<VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />"
... ... @@ -395,8 +402,8 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
395 402 }
396 403 }
397 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 407 $incluirChaves = array("*");
401 408  
402 409 if(count($parComposto) > 0){
... ... @@ -410,11 +417,19 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
410 417 }
411 418  
412 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 421 $xml .= "
414 422 <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view>
415 423 <DimensionUsage foreignKey='codigodim' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/>
416 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 434 $xml .= implode(" ",array_unique($dimEnsoes));
420 435  
... ... @@ -439,7 +454,9 @@ if(empty($_GET[&quot;xmlesquema&quot;])){
439 454 $xml .= "
440 455 </Cube>
441 456 ";
  457 +
442 458 }
  459 +
443 460 $xml .= '<VirtualCube name="Todas as medidas" >';
444 461 $VirtualCubeDimension = array_unique($VirtualCubeDimension);
445 462 $VirtualCubeMeasure = array_unique($VirtualCubeMeasure);
... ...