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,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["xmlesquema"])){ | @@ -184,7 +188,7 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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["xmlesquema"])){ | @@ -231,7 +235,7 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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["xmlesquema"])){ | @@ -257,6 +261,7 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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["xmlesquema"])){ | @@ -319,7 +324,7 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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["xmlesquema"])){ | @@ -338,16 +343,18 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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["xmlesquema"])){ | @@ -395,8 +402,8 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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["xmlesquema"])){ | @@ -410,11 +417,19 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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["xmlesquema"])){ | @@ -439,7 +454,9 @@ if(empty($_GET["xmlesquema"])){ | ||
| 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); |