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