添加元数据sql查询的版本更新方式;修复专题版本更新中的bug
This commit is contained in:
parent
4fa4a3ffee
commit
c0ebcbfc8f
|
@ -8,6 +8,8 @@
|
||||||
public $userid=3144;
|
public $userid=3144;
|
||||||
public $versionTable='en.mdversion';
|
public $versionTable='en.mdversion';
|
||||||
public $statusTable='en.mdstatus';
|
public $statusTable='en.mdstatus';
|
||||||
|
public $metadataTable="en.metadata";
|
||||||
|
public $xmlTable="en.xml";
|
||||||
public $changelog='update the translation';
|
public $changelog='update the translation';
|
||||||
public $db=array('host'=>'localhost','user'=>'gis','password'=>'gispassword','dbname'=>'metadata');
|
public $db=array('host'=>'localhost','user'=>'gis','password'=>'gispassword','dbname'=>'metadata');
|
||||||
}
|
}
|
46
version.php
46
version.php
|
@ -13,6 +13,8 @@
|
||||||
//$this->db=$config->db;
|
//$this->db=$config->db;
|
||||||
$this->versionTable=$config->versionTable;
|
$this->versionTable=$config->versionTable;
|
||||||
$this->statusTable=$config->statusTable;
|
$this->statusTable=$config->statusTable;
|
||||||
|
$this->metadataTable=$config->metadataTable;
|
||||||
|
$this->xmlTable=$config->xmlTable;
|
||||||
$this->changelog=$config->changelog;
|
$this->changelog=$config->changelog;
|
||||||
$this->db = pg_connect(http_build_query($config->db,'',' '));
|
$this->db = pg_connect(http_build_query($config->db,'',' '));
|
||||||
$this->err=array();
|
$this->err=array();
|
||||||
|
@ -84,13 +86,14 @@
|
||||||
$sql = "UPDATE {$this->versionTable} SET changelog='$changelog',userid=$this->userid WHERE id in (
|
$sql = "UPDATE {$this->versionTable} SET changelog='$changelog',userid=$this->userid WHERE id in (
|
||||||
select distinct on (uuid) id from {$this->versionTable} where uuid in (select uuid from datasource where sourceid=$sourceid)
|
select distinct on (uuid) id from {$this->versionTable} where uuid in (select uuid from datasource where sourceid=$sourceid)
|
||||||
and uuid in (select distinct uuid from {$this->statusTable}) order by uuid,ts_created desc
|
and uuid in (select distinct uuid from {$this->statusTable}) order by uuid,ts_created desc
|
||||||
)";
|
) and changelog is null";
|
||||||
pg_query($this->db,$sql);
|
pg_query($this->db,$sql);
|
||||||
|
|
||||||
// 2. 同步元数据
|
// 2. 同步元数据
|
||||||
$sql = "select xml from {$this->versionTable} WHERE id in (
|
$sql = "select xml from {$this->versionTable} WHERE id in (
|
||||||
select distinct on (uuid) id from {$this->versionTable} where uuid in (select uuid from datasource where sourceid=$sourceid) order by uuid,ts_created desc
|
select distinct on (uuid) id from {$this->versionTable} where uuid in (select uuid from datasource where sourceid=$sourceid)
|
||||||
)";
|
and uuid in (select distinct uuid from {$this->statusTable}) order by uuid,ts_created desc
|
||||||
|
) and changelog is not null";
|
||||||
$result=pg_query($this->db,$sql);
|
$result=pg_query($this->db,$sql);
|
||||||
while ($row = pg_fetch_row($result))
|
while ($row = pg_fetch_row($result))
|
||||||
{
|
{
|
||||||
|
@ -103,7 +106,42 @@
|
||||||
@$iso->saveDB($this->zend_db);
|
@$iso->saveDB($this->zend_db);
|
||||||
}
|
}
|
||||||
// 3. 移除中间版本
|
// 3. 移除中间版本
|
||||||
$sql="delete from {$this->versionTable} where uuid in (select distinct uuid from datasource where sourceid=$sourceid) and changelog is null";
|
$sql="delete from {$this->versionTable} where uuid in (select distinct uuid from datasource where sourceid=$sourceid)
|
||||||
|
and uuid in (select distinct uuid from {$this->statusTable}) and changelog is null";
|
||||||
|
pg_query($this->db,$sql);
|
||||||
|
pg_free_result($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新符合SQL条件查询的所有数据的最新版本
|
||||||
|
function update_by_sql($like,$changelog="")
|
||||||
|
{
|
||||||
|
if (!$changelog) $changelog=$this->changelog;
|
||||||
|
// 1. 保存变化记录 save changelog & userid
|
||||||
|
$sql = "UPDATE {$this->versionTable} SET changelog='$changelog',userid=$this->userid WHERE id in (
|
||||||
|
select distinct on (uuid) id from {$this->versionTable} where uuid in (select distinct m.uuid from {$this->metadataTable} m left join {$this->xmlTable} x on m.id=x.id where x.xml like '%$like%')
|
||||||
|
and uuid in (select distinct uuid from {$this->statusTable}) order by uuid,ts_created desc
|
||||||
|
) and changelog is null";
|
||||||
|
pg_query($this->db,$sql);
|
||||||
|
|
||||||
|
// 2. 同步元数据
|
||||||
|
$sql = "select xml from {$this->versionTable} WHERE id in (
|
||||||
|
select distinct on (uuid) id from {$this->versionTable} where uuid in (select distinct m.uuid from {$this->metadataTable} m left join {$this->xmlTable} x on m.id=x.id where x.xml like '%$like%')
|
||||||
|
and uuid in (select distinct uuid from {$this->statusTable}) order by uuid,ts_created desc
|
||||||
|
) and changelog is not null";
|
||||||
|
$result=pg_query($this->db,$sql);
|
||||||
|
while ($row = pg_fetch_row($result))
|
||||||
|
{
|
||||||
|
$iso=new ISO19115();
|
||||||
|
@$iso->loadXML($row[0]);
|
||||||
|
if ($iso->validate())
|
||||||
|
{
|
||||||
|
$this->err[]="元数据: ".$uuid." 导入过程中发现错误。\n".implode("\n",$iso->error);
|
||||||
|
}
|
||||||
|
@$iso->saveDB($this->zend_db);
|
||||||
|
}
|
||||||
|
// 3. 移除中间版本
|
||||||
|
$sql="delete from {$this->versionTable} where uuid in (select distinct m.uuid from {$this->metadataTable} m left join {$this->xmlTable} x on m.id=x.id where x.xml like '%$like%')
|
||||||
|
and uuid in (select distinct uuid from {$this->statusTable}) and changelog is null";
|
||||||
pg_query($this->db,$sql);
|
pg_query($this->db,$sql);
|
||||||
pg_free_result($result);
|
pg_free_result($result);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue