Commit 5e4fa5fc7b83c019e94eb779efa6308410aeab1c
1 parent
a17dc167
Exists in
master
and in
7 other branches
--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["xmlesquema"])){ |
| 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["xmlesquema"])){ |
| 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["xmlesquema"])){ |
| 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["xmlesquema"])){ |
| 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["xmlesquema"])){ |
| 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["xmlesquema"])){ |
| 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["xmlesquema"])){ |
| 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["xmlesquema"])){ |
| 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); | ... | ... |