1
|
package edu.ucsb.nceas.metacat;
|
2
|
|
3
|
/**
|
4
|
* Before Metacat 1.8.1 release, Metacat uses the eml201 schema with the tag
|
5
|
* RELEASE_EML_2_0_1_UPDATE_5. Unfortunately, this tag points at wrong version
|
6
|
* of eml-resource.xsd. In this schema, the element "references" has an attribute named
|
7
|
* "system" and the attribute has a default value "document". Metacat will add
|
8
|
* the attribute system="document" to "references" element even the orginal eml didn't have it
|
9
|
* (this is another bug and see bug 1601), so this causes metacat generated some invalid eml201
|
10
|
* documents. This class provides a path to fix the existed invalid eml201 documents. It will
|
11
|
* remove the attribute system="document" of the element "references" in xml_nodes and xml_index
|
12
|
* tables.
|
13
|
* @author tao
|
14
|
*
|
15
|
*/
|
16
|
public class EML201DocumentCorrector implements Runnable
|
17
|
{
|
18
|
/**
|
19
|
* Default constructor
|
20
|
*
|
21
|
*/
|
22
|
public EML201DocumentCorrector()
|
23
|
{
|
24
|
|
25
|
}
|
26
|
|
27
|
/**
|
28
|
* It will remove the records - attribute system="document" of element "refrence"
|
29
|
* in both xml_nodes and xml_index table
|
30
|
*/
|
31
|
public void run()
|
32
|
{
|
33
|
|
34
|
}
|
35
|
|
36
|
/*
|
37
|
* Generate the sql command to delete the records in xml_node table
|
38
|
*/
|
39
|
private String generateXML_NodeDeletingSQL()
|
40
|
{
|
41
|
String sql ="delete from xml_nodes where nodetype='ATTRIBUTE' and nodename='system' and nodevalue='document' "+
|
42
|
"and parentnodeid in (select nodeid from xml_nodes where nodetype='ELEMENT' and nodename='references') and docid in "+
|
43
|
"(select docid from xml_documents where doctype ='eml://ecoinformatics.org/eml-2.0.1'";
|
44
|
return sql;
|
45
|
}
|
46
|
|
47
|
/*
|
48
|
* Generate the sql command to delete the records in xml_nidex table;
|
49
|
*/
|
50
|
private String generateXML_IndexDeletingSQL()
|
51
|
{
|
52
|
String sql ="delete from xml_index where path ='references/@system' AND docid in "+
|
53
|
"(select docid from xml_documents where doctype ='eml://ecoinformatics.org/eml-2.0.1'";
|
54
|
return sql;
|
55
|
}
|
56
|
}
|