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); |