Project

General

Profile

1 26600 sandro.lab
package eu.dnetlib.data.mapreduce.util;
2
3
import java.io.IOException;
4
import java.io.StringWriter;
5
import java.util.List;
6
7 40314 claudio.at
import eu.dnetlib.data.proto.TypeProtos.Type;
8 26600 sandro.lab
import org.antlr.stringtemplate.StringTemplate;
9
import org.apache.commons.io.IOUtils;
10
import org.apache.commons.logging.Log;
11
import org.apache.commons.logging.LogFactory;
12
import org.springframework.core.io.Resource;
13
14
public class TemplateFactory {
15
16
	private static final Log log = LogFactory.getLog(TemplateFactory.class); // NOPMD by marko on 11/24/08 5:02 PM
17
18
	protected TemplateResources resources = new TemplateResources();
19
20 31186 alessia.ba
	public String buildBody(final Type type, final List<String> metadata, final List<String> rels, final List<String> children, final List<String> inference) {
21 26600 sandro.lab
22
		StringTemplate body = getTemplate(resources.getEntity());
23
24
		body.setAttribute("name", type.toString());
25
		body.setAttribute("metadata", metadata);
26
		body.setAttribute("rels", rels);
27
		body.setAttribute("children", children);
28
		body.setAttribute("inference", inference);
29
30
		return body.toString();
31
	}
32
33
	public String getChild(final String name, final String id, final List<String> metadata) {
34
		StringTemplate child = getTemplate(resources.getChild());
35
36
		child.setAttribute("name", name);
37
		child.setAttribute("hasId", !(id == null));
38
		child.setAttribute("id", id != null ? XmlRecordFactory.escapeXml(XmlRecordFactory.removePrefix(id)) : "");
39
		child.setAttribute("metadata", metadata);
40
41
		String string = child.toString();
42
		return string;
43
	}
44
45 31186 alessia.ba
	public String buildRecord(final Type type,
46
			final String objIdentifier,
47
			final String dateOfCollection,
48 40314 claudio.at
			final String dateOfTransformation,
49 31186 alessia.ba
			final String schemaLocation,
50
			final String body,
51
			final List<String> counters) {
52 26600 sandro.lab
		final StringTemplate recordTemplate = getTemplate(resources.getRecord());
53
54
		recordTemplate.setAttribute("id", XmlRecordFactory.escapeXml(XmlRecordFactory.removePrefix(objIdentifier)));
55
		recordTemplate.setAttribute("dateofcollection", dateOfCollection);
56 40314 claudio.at
		recordTemplate.setAttribute("dateoftransformation", dateOfTransformation);
57 26600 sandro.lab
		recordTemplate.setAttribute("schemaLocation", schemaLocation);
58 31186 alessia.ba
		recordTemplate.setAttribute("counters", counters);
59 26600 sandro.lab
		recordTemplate.setAttribute("it", body);
60
61
		return recordTemplate.toString();
62
	}
63
64
	public String getRel(final Type type,
65
			final String objIdentifier,
66
			final List<String> fields,
67
			final String semanticclass,
68
			final String semantischeme,
69
			final boolean inferred,
70
			final String trust,
71
			final String inferenceprovenance,
72
			final String provenanceaction) {
73
		final StringTemplate template = getTemplate(resources.getRel());
74
75
		template.setAttribute("type", type.toString());
76
		template.setAttribute("objIdentifier", XmlRecordFactory.escapeXml(XmlRecordFactory.removePrefix(objIdentifier)));
77
		template.setAttribute("class", semanticclass);
78
		template.setAttribute("scheme", semantischeme);
79
		template.setAttribute("metadata", fields);
80
		template.setAttribute("inferred", inferred);
81
		template.setAttribute("trust", trust);
82
		template.setAttribute("inferenceprovenance", inferenceprovenance);
83
		template.setAttribute("provenanceaction", provenanceaction);
84
85
		return template.toString();
86
	}
87
88
	public String getInstance(final String resultId, final List<String> instancemetadata, final List<String> webresources) {
89
		final StringTemplate template = getTemplate(resources.getInstance());
90
91
		template.setAttribute("instanceId", XmlRecordFactory.escapeXml(XmlRecordFactory.removePrefix(resultId)));
92
		template.setAttribute("metadata", instancemetadata);
93
		template.setAttribute("webresources", webresources);
94
95
		return template.toString();
96
	}
97
98
	public String getWebResource(final String identifier) {
99
		final StringTemplate template = getTemplate(resources.getWebresource());
100
101
		template.setAttribute("identifier", XmlRecordFactory.escapeXml(identifier));
102
103
		return template.toString();
104
	}
105
106
	// ////////////////////////////////////////////////////
107
108
	private StringTemplate getTemplate(final Resource res) {
109
		StringWriter body = new StringWriter();
110
		try {
111
			IOUtils.copy(res.getInputStream(), body);
112
			String string = body.toString();
113
			return new StringTemplate(string);
114
		} catch (IOException e) {
115
			log.error("unable to get template", e);
116
			throw new RuntimeException(e);
117
		}
118
	}
119
120
}