Revision 45805
Added by Sandro La Bruzzo over 7 years ago
modules/dnet-dli/trunk/src/test/java/eu/dnetlib/resolver/DLISerializerTest.java | ||
---|---|---|
1 | 1 |
package eu.dnetlib.resolver; |
2 | 2 |
|
3 |
import com.google.gson.Gson; |
|
3 | 4 |
import eu.dnetlib.dli.resolver.model.*; |
4 | 5 |
import eu.dnetlib.dli.resolver.model.serializer.ResolverSerializer; |
5 | 6 |
import eu.dnetlib.resolver.parser.DMFResolverParser; |
... | ... | |
8 | 9 |
import org.apache.commons.io.IOUtils; |
9 | 10 |
import org.apache.commons.logging.Log; |
10 | 11 |
import org.apache.commons.logging.LogFactory; |
12 |
import org.junit.Assert; |
|
11 | 13 |
import org.junit.Test; |
12 | 14 |
import org.junit.runner.RunWith; |
13 | 15 |
import org.springframework.beans.factory.annotation.Autowired; |
... | ... | |
19 | 21 |
import javax.xml.transform.TransformerFactory; |
20 | 22 |
import javax.xml.transform.stream.StreamResult; |
21 | 23 |
import javax.xml.transform.stream.StreamSource; |
24 |
import java.io.ByteArrayInputStream; |
|
22 | 25 |
import java.io.IOException; |
23 | 26 |
import java.io.InputStream; |
24 | 27 |
import java.io.StringWriter; |
... | ... | |
76 | 79 |
|
77 | 80 |
} |
78 | 81 |
|
82 |
|
|
83 |
@Test |
|
84 |
public void testSerializeFromJson() throws Exception { |
|
85 |
final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/transform/resolvedObject.json"); |
|
86 |
final Gson gson = new Gson(); |
|
87 |
final ResolvedObject resolvedObject = gson.fromJson(IOUtils.toString(recordStream), ResolvedObject.class); |
|
88 |
Assert.assertEquals(resolvedObject.getType(), ObjectType.dataset); |
|
89 |
final String recordTemplate = |
|
90 |
"<root xmlns:oaf=\"http://namespace.dnet.eu/oaf\" xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">%s</root>"; |
|
91 |
final String xml = serializer.serializeToXML(resolvedObject); |
|
92 |
|
|
93 |
final String inputRecord = String.format(recordTemplate, xml); |
|
94 |
|
|
95 |
final InputStream xsltAsStream = getClass().getResourceAsStream("/eu/dnetlib/resolver/xslt/transformResolvedRecord.xsl"); |
|
96 |
|
|
97 |
final InputStream xmlAsStream = getClass().getResourceAsStream("/eu/dnetlib/dli/transform/inputResolved.xml"); |
|
98 |
|
|
99 |
final TransformerFactory factory = TransformerFactory.newInstance(); |
|
100 |
factory.newTransformer(); |
|
101 |
final StreamSource xsltSource = new StreamSource(xsltAsStream); |
|
102 |
|
|
103 |
final Transformer transformer = factory.newTransformer(xsltSource); |
|
104 |
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); |
|
105 |
final StringWriter output = new StringWriter(); |
|
106 |
transformer.transform(new StreamSource(new ByteArrayInputStream(inputRecord.getBytes())), new StreamResult(output)); |
|
107 |
final String record = output.toString(); |
|
108 |
System.out.println("record = " + record); |
|
109 |
} |
|
110 |
|
|
79 | 111 |
private ResolvedObject createPMFMock() throws IOException { |
80 | 112 |
final InputStream resource = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMF.xml"); |
81 | 113 |
String xml = IOUtils.toString(resource); |
modules/dnet-dli/trunk/src/test/resources/eu/dnetlib/dli/transform/inputResolved.xml | ||
---|---|---|
1 |
<root xmlns:oaf="http://namespace.dnet.eu/oaf" xmlns:dri="http://www.driver-repository.eu/namespace/dri" |
|
2 |
xmlns:dc="http://purl.org/dc/elements/1.1/"> |
|
3 |
<metadata> |
|
4 |
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-3" |
|
5 |
xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd"> |
|
6 |
<identifier identifierType="DOI">10.1594/pangaea.695501</identifier> |
|
7 |
<creators> |
|
8 |
<creator> |
|
9 |
<creatorName>Winn, Kyaw</creatorName> |
|
10 |
</creator> |
|
11 |
<creator> |
|
12 |
<creatorName>Erlenkeuser, Helmut</creatorName> |
|
13 |
</creator> |
|
14 |
<creator> |
|
15 |
<creatorName>Nordberg, Kjell</creatorName> |
|
16 |
</creator> |
|
17 |
<creator> |
|
18 |
<creatorName>Gustafsson, Mikael</creatorName> |
|
19 |
</creator> |
|
20 |
</creators> |
|
21 |
<titles> |
|
22 |
<title>Stable isotopes measured on Ammonia beccarii from sediment core GIK12523-1</title> |
|
23 |
</titles> |
|
24 |
|
|
25 |
<publisher>PANGAEA - Data Publisher for Earth & Environmental Science</publisher> |
|
26 |
<subjects> |
|
27 |
|
|
28 |
<subject subjectScheme="unknown">DEPTH, sediment/rock</subject> |
|
29 |
|
|
30 |
<subject subjectScheme="unknown">Size fraction > 0.063 mm, sand</subject> |
|
31 |
|
|
32 |
<subject subjectScheme="unknown">Coiling ratio</subject> |
|
33 |
|
|
34 |
<subject subjectScheme="unknown">Ammonia beccarii dextral</subject> |
|
35 |
|
|
36 |
<subject subjectScheme="unknown">Ammonia beccarii dextral, d18O</subject> |
|
37 |
|
|
38 |
<subject subjectScheme="unknown">Ammonia beccarii dextral, d13C</subject> |
|
39 |
|
|
40 |
<subject subjectScheme="unknown">Ammonia beccarii sinistral</subject> |
|
41 |
|
|
42 |
<subject subjectScheme="unknown">Ammonia beccarii sinistral, d18O</subject> |
|
43 |
|
|
44 |
<subject subjectScheme="unknown">Ammonia beccarii sinistral, d13C</subject> |
|
45 |
|
|
46 |
<subject subjectScheme="unknown">GIK-cruise</subject> |
|
47 |
|
|
48 |
</subjects> |
|
49 |
<resourceType resourceTypeGeneral="dataset">dataset</resourceType> |
|
50 |
</resource> |
|
51 |
</metadata> |
|
52 |
<oaf:about xmlns:oaf="http://namespace.dnet.eu/oaf"> |
|
53 |
<oaf:datainfo> |
|
54 |
<oaf:completionStatus>complete</oaf:completionStatus> |
|
55 |
|
|
56 |
<oaf:resolvedFrom id="dli_________::datacite" name="Datasets in Datacite" completionStatus="complete"/> |
|
57 |
|
|
58 |
</oaf:datainfo> |
|
59 |
</oaf:about> |
|
60 |
</root> |
modules/dnet-dli/trunk/src/test/resources/eu/dnetlib/dli/transform/resolvedObject.json | ||
---|---|---|
1 |
{ |
|
2 |
"pid": "10.1594/PANGAEA.695501", |
|
3 |
"pidType": "DOI", |
|
4 |
"titles": [ |
|
5 |
"Stable isotopes measured on Ammonia beccarii from sediment core GIK12523-1" |
|
6 |
], |
|
7 |
"authors": [ |
|
8 |
"Winn, Kyaw", |
|
9 |
"Erlenkeuser, Helmut", |
|
10 |
"Nordberg, Kjell", |
|
11 |
"Gustafsson, Mikael" |
|
12 |
], |
|
13 |
"type": "dataset", |
|
14 |
"datasourceProvenance": [ |
|
15 |
{ |
|
16 |
"datasource": "Datasets in Datacite", |
|
17 |
"datasourceId": "dli_________::datacite", |
|
18 |
"publisher": "PANGAEA - Data Publisher for Earth \u0026 Environmental Science", |
|
19 |
"provisionMode": "resolved", |
|
20 |
"completionStatus": "complete", |
|
21 |
"visible": false, |
|
22 |
"datasourceContribution": "[\"pid\",\"pidType\"]" |
|
23 |
} |
|
24 |
], |
|
25 |
"completionStatus": "complete", |
|
26 |
"subjects": [ |
|
27 |
{ |
|
28 |
"scheme": "unknown", |
|
29 |
"term": "DEPTH, sediment/rock" |
|
30 |
}, |
|
31 |
{ |
|
32 |
"scheme": "unknown", |
|
33 |
"term": "Size fraction \u003e 0.063 mm, sand" |
|
34 |
}, |
|
35 |
{ |
|
36 |
"scheme": "unknown", |
|
37 |
"term": "Coiling ratio" |
|
38 |
}, |
|
39 |
{ |
|
40 |
"scheme": "unknown", |
|
41 |
"term": "Ammonia beccarii dextral" |
|
42 |
}, |
|
43 |
{ |
|
44 |
"scheme": "unknown", |
|
45 |
"term": "Ammonia beccarii dextral, d18O" |
|
46 |
}, |
|
47 |
{ |
|
48 |
"scheme": "unknown", |
|
49 |
"term": "Ammonia beccarii dextral, d13C" |
|
50 |
}, |
|
51 |
{ |
|
52 |
"scheme": "unknown", |
|
53 |
"term": "Ammonia beccarii sinistral" |
|
54 |
}, |
|
55 |
{ |
|
56 |
"scheme": "unknown", |
|
57 |
"term": "Ammonia beccarii sinistral, d18O" |
|
58 |
}, |
|
59 |
{ |
|
60 |
"scheme": "unknown", |
|
61 |
"term": "Ammonia beccarii sinistral, d13C" |
|
62 |
}, |
|
63 |
{ |
|
64 |
"scheme": "unknown", |
|
65 |
"term": "GIK-cruise" |
|
66 |
} |
|
67 |
] |
|
68 |
} |
modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/FilterResolvedRecordJobNode.java | ||
---|---|---|
43 | 43 |
final Iterable<String> resultIterator = () -> DnetStreamSupport.generateStreamFromIterator(resolverStore.getAllRecords().iterator()) |
44 | 44 |
.map(record -> { |
45 | 45 |
final ObjectType type = record.getType(); |
46 |
if (type == null || !type.toString().equals(this.type)) |
|
47 |
return "<JUNK/>"; |
|
48 |
final String resultXML = String.format(recordTemplate, resolverSerializer.serializeToXML(record)); |
|
49 |
return resultXML; |
|
46 |
if (type == null || !type.toString().equals(this.type)) { |
|
47 |
return "<JUNK/>"; |
|
48 |
} |
|
49 |
final String resultXML = String.format(recordTemplate, resolverSerializer.serializeToXML(record)); |
|
50 |
if ("10.1594/pangaea.695501".equals(record.getPid())) { |
|
51 |
System.out.println(record.toString()); |
|
52 |
System.out.println(resultXML); |
|
53 |
} |
|
54 |
return resultXML; |
|
50 | 55 |
}).iterator(); |
51 | 56 |
|
52 | 57 |
final ResultSet<String> resultSet = resultSetFactory.createResultSet(resultIterator); |
modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/resolver/xslt/transformResolvedRecord.xsl | ||
---|---|---|
1 | 1 |
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
2 |
xmlns:datacite="http://datacite.org/schema/kernel-3"
|
|
3 |
xmlns:datetime="http://exslt.org/dates-and-times" xmlns:exslt="http://exslt.org/common"
|
|
4 |
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
|
|
5 |
xmlns:dri="http://www.driver-repository.eu/namespace/dri"
|
|
6 |
xmlns:dnet="eu.dnetlib.miscutils.functional.xml.DnetXsltFunctions"
|
|
7 |
xmlns:oaf="http://namespace.dnet.eu/oaf"
|
|
8 |
exclude-result-prefixes="xsl datetime exslt dnet"
|
|
9 |
version="2.0">
|
|
2 |
xmlns:datacite="http://datacite.org/schema/kernel-3"
|
|
3 |
xmlns:datetime="http://exslt.org/dates-and-times" xmlns:exslt="http://exslt.org/common"
|
|
4 |
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
|
|
5 |
xmlns:dri="http://www.driver-repository.eu/namespace/dri"
|
|
6 |
xmlns:dnet="eu.dnetlib.dli.DLIUtils"
|
|
7 |
xmlns:oaf="http://namespace.dnet.eu/oaf"
|
|
8 |
exclude-result-prefixes="xsl datetime exslt dnet"
|
|
9 |
version="2.0">
|
|
10 | 10 |
|
11 | 11 |
<xsl:output method="xml" indent="yes"/> |
12 | 12 |
<xsl:variable name="namespacePrefix"> |
... | ... | |
38 | 38 |
<xsl:variable name="datestamp" select="datetime:dateTime()"/> |
39 | 39 |
<xsl:variable name="evaluatedId" select="normalize-space(//datacite:identifier/text())"/> |
40 | 40 |
<xsl:variable name="evaluatedIdType" select="normalize-space(//datacite:identifier/@identifierType)"/> |
41 |
<xsl:variable name="generatedIDataset" select="concat($evaluatedId, '::', $evaluatedIdType)"/>
|
|
41 |
<xsl:variable name="generatedIDataset" select="dnet:generateIdentifier($evaluatedId, $evaluatedIdType)"/>
|
|
42 | 42 |
|
43 | 43 |
<oai:record xmlns:oai="http://www.openarchives.org/OAI/2.0/" |
44 | 44 |
xmlns:dri="http://www.driver-repository.eu/namespace/dri"> |
45 | 45 |
<oai:header> |
46 | 46 |
<dri:objIdentifier> |
47 |
<xsl:value-of select="concat($namespacePrefix,'::', dnet:md5($generatedIDataset))"/>
|
|
47 |
<xsl:value-of select="concat($namespacePrefix,'::', $generatedIDataset)"/>
|
|
48 | 48 |
</dri:objIdentifier> |
49 | 49 |
<dri:recordIdentifier> |
50 | 50 |
<xsl:value-of select="$generatedIDataset"/> |
... | ... | |
70 | 70 |
<xsl:variable name="datestamp" select="datetime:dateTime()"/> |
71 | 71 |
<xsl:variable name="evaluatedId" select="normalize-space(//oaf:pid)"/> |
72 | 72 |
<xsl:variable name="evaluatedIdType" select="normalize-space(//oaf:pid/@type)"/> |
73 |
<xsl:variable name="generatedIDPublication" select="concat($evaluatedId, '::', $evaluatedIdType)"/>
|
|
73 |
<xsl:variable name="generatedIDPublication" select="dnet:generateIdentifier($evaluatedId, $evaluatedIdType)"/>
|
|
74 | 74 |
|
75 | 75 |
<oai:record xmlns:oai="http://www.openarchives.org/OAI/2.0/" |
76 | 76 |
xmlns:dri="http://www.driver-repository.eu/namespace/dri"> |
77 | 77 |
<oai:header> |
78 | 78 |
<dri:objIdentifier> |
79 |
<xsl:value-of select="concat($namespacePrefix,'::', dnet:md5($generatedIDPublication))"/>
|
|
79 |
<xsl:value-of select="concat($namespacePrefix,'::', $generatedIDPublication)"/>
|
|
80 | 80 |
</dri:objIdentifier> |
81 | 81 |
<dri:recordIdentifier> |
82 | 82 |
<xsl:value-of select="$generatedIDPublication"/> |
Also available in: Unified diff
fixed generation of resolved Record