Project

General

Profile

1
package eu.dnetlib.data.mapreduce.util;
2

    
3
import java.io.IOException;
4
import java.io.StringWriter;
5
import java.util.List;
6

    
7
import eu.dnetlib.data.proto.TypeProtos.Type;
8
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
	public String buildBody(final Type type, final List<String> metadata, final List<String> rels, final List<String> children, final List<String> inference) {
21

    
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
	public String buildRecord(
46
			final String objIdentifier,
47
			final String dateOfCollection,
48
			final String dateOfTransformation,
49
			final String schemaLocation,
50
			final String body,
51
			final List<String> counters) {
52
		final StringTemplate recordTemplate = getTemplate(resources.getRecord());
53

    
54
		recordTemplate.setAttribute("id", XmlRecordFactory.escapeXml(XmlRecordFactory.removePrefix(objIdentifier)));
55
		recordTemplate.setAttribute("dateofcollection", dateOfCollection);
56
		recordTemplate.setAttribute("dateoftransformation", dateOfTransformation);
57
		recordTemplate.setAttribute("schemaLocation", schemaLocation);
58
		recordTemplate.setAttribute("counters", counters);
59
		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
}
(5-5/8)