1
|
package eu.dnetlib.data.transform.xml2;
|
2
|
|
3
|
import java.util.Map;
|
4
|
|
5
|
import com.google.common.collect.Maps;
|
6
|
|
7
|
import static eu.dnetlib.data.transform.xml2.Utils.*;
|
8
|
import static eu.dnetlib.data.transform.xml2.VtdUtilityParser.xpath;
|
9
|
|
10
|
public class DatasetToProto extends AbstractResultVtdParser {
|
11
|
|
12
|
public static DatasetToProto newInstance() {
|
13
|
return new DatasetToProto();
|
14
|
}
|
15
|
|
16
|
public DatasetToProto() {
|
17
|
super(getFields());
|
18
|
}
|
19
|
|
20
|
public DatasetToProto(final boolean invisible, final String provenance, final String trust) {
|
21
|
super(invisible, provenance, trust, getFields());
|
22
|
}
|
23
|
|
24
|
@Override
|
25
|
protected String getResulttype(final String cobjcategory) {
|
26
|
switch (cobjcategory) {
|
27
|
case "0029":
|
28
|
return "software";
|
29
|
default:
|
30
|
return "dataset";
|
31
|
}
|
32
|
}
|
33
|
|
34
|
private static Map<String, String> getFields() {
|
35
|
final Map<String, String> fields = Maps.newHashMap();
|
36
|
fields.put("originalId", "//*[local-name() = 'resource']/*[local-name()='identifier'] | //*[local-name()='resource']//*[local-name()='alternateIdentifier']");
|
37
|
fields.put("collectedfrom", metadataXpath("collectedFrom"));
|
38
|
fields.put("pid", "//*[local-name() = 'resource']/*[local-name()='identifier'] | //*[local-name()='resource']//*[local-name()='alternateIdentifier']");
|
39
|
fields.put("dateofcollection", xpath("record", "header", "dateOfCollection"));
|
40
|
fields.put("dateoftransformation", xpath("record", "header", "dateOfTransformation"));
|
41
|
fields.put("license", metadataXpath("resource") + "//*[local-name()='rights']");
|
42
|
fields.put("accessright", metadataXpath("accessrights"));
|
43
|
fields.put("instancetype", metadataXpath("CobjCategory"));
|
44
|
fields.put("hostedby", metadataXpath("hostedBy"));
|
45
|
fields.put("url", "/*[local-name()='record']/*[local-name()='metadata']/*[local-name()='resource']/*[local-name()='identifier' and (./@identifierType='DOI' or ./@identifierType='URL' ) ] | /*[local-name()='record']/*[local-name()='metadata']/*[local-name()='resource']//*[local-name()='alternateIdentifier' and ./@alternateIdentifierType='URL']");
|
46
|
fields.put("title", "//*[local-name() = 'title']");
|
47
|
fields.put("description", xpath("record", "metadata", "resource", "descriptions", "description"));
|
48
|
fields.put("storagedate", "//*[local-name() = 'date' and ./@dateType = 'Issued']");
|
49
|
fields.put("lastmetadataupdate", "//*[local-name() = 'date' and ./@dateType = 'Updated']");
|
50
|
fields.put("embargoenddate", "//*[local-name() = 'date' and ./@dateType = 'Available']");
|
51
|
fields.put("dateofacceptance", metadataXpath("dateAccepted"));
|
52
|
fields.put("author", xpath("record", "metadata", "resource", "creator", "creatorName"));
|
53
|
fields.put("contributor", xpath("record", "metadata", "resource", "contributor", "contributorName"));
|
54
|
fields.put("subject", xpath("record", "metadata", "resource", "subjects", "subject"));
|
55
|
fields.put("format", xpath("record", "metadata", "resource", "formats", "format"));
|
56
|
fields.put("size", xpath("record", "metadata", "resource", "sizes", "size"));
|
57
|
fields.put("version", xpath("record", "metadata", "resource", "versions", "version"));
|
58
|
fields.put("publisher", xpath("record", "metadata", "resource", "publisher"));
|
59
|
fields.put("language", xpath("record", "metadata", "language"));
|
60
|
fields.put("resourcetype", xpath("record", "metadata", "resource", "resourceType"));
|
61
|
fields.put("resulttype", xpath("record", "metadata", "CobjCategory"));
|
62
|
|
63
|
fields.put("cachedRel", String.format("%s | %s | %s | %s",
|
64
|
metadataXpath("projectid"),
|
65
|
metadataXpath("relatedPublication"),
|
66
|
metadataXpath("relatedDataSet"),
|
67
|
metadataXpath("resource") + "//*[local-name()='relatedIdentifier']"));
|
68
|
|
69
|
return fields;
|
70
|
}
|
71
|
|
72
|
}
|