Project

General

Profile

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
}
(3-3/11)