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.Collection;
6
import java.util.List;
7

    
8
import eu.dnetlib.data.proto.TypeProtos.Type;
9
import org.antlr.stringtemplate.StringTemplate;
10
import org.apache.commons.io.IOUtils;
11
import org.apache.commons.logging.Log;
12
import org.apache.commons.logging.LogFactory;
13
import org.springframework.core.io.Resource;
14

    
15
public class TemplateFactory {
16

    
17
	private static final Log log = LogFactory.getLog(TemplateFactory.class); // NOPMD by marko on 11/24/08 5:02 PM
18

    
19
	protected TemplateResources resources = new TemplateResources();
20

    
21
	public String buildBody(final Type type, final List<String> metadata, final List<String> rels, final List<String> children, final List<String> inference) {
22

    
23
		StringTemplate body = getTemplate(resources.getEntity());
24

    
25
		body.setAttribute("name", type.toString());
26
		body.setAttribute("metadata", metadata);
27
		body.setAttribute("rels", rels);
28
		body.setAttribute("children", children);
29
		body.setAttribute("inference", inference);
30

    
31
		return body.toString();
32
	}
33

    
34
	public String getChild(final String name, final String id, final List<String> metadata) {
35
		StringTemplate child = getTemplate(resources.getChild());
36

    
37
		child.setAttribute("name", name);
38
		child.setAttribute("hasId", !(id == null));
39
		child.setAttribute("id", id != null ? XmlRecordFactory.escapeXml(XmlRecordFactory.removePrefix(id)) : "");
40
		child.setAttribute("metadata", metadata);
41

    
42
		String string = child.toString();
43
		return string;
44
	}
45

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

    
55
		recordTemplate.setAttribute("id", XmlRecordFactory.escapeXml(XmlRecordFactory.removePrefix(objIdentifier)));
56
		recordTemplate.setAttribute("dateofcollection", dateOfCollection);
57
		recordTemplate.setAttribute("dateoftransformation", dateOfTransformation);
58
		recordTemplate.setAttribute("schemaLocation", schemaLocation);
59
		recordTemplate.setAttribute("counters", counters);
60
		recordTemplate.setAttribute("it", body);
61

    
62
		return recordTemplate.toString();
63
	}
64

    
65
	public String getRel(final Type type,
66
			final String objIdentifier,
67
			final Collection<String> fields,
68
			final String semanticclass,
69
			final String semantischeme,
70
			final boolean inferred,
71
			final String trust,
72
			final String inferenceprovenance,
73
			final String provenanceaction) {
74
		final StringTemplate template = getTemplate(resources.getRel());
75

    
76
		template.setAttribute("type", type.toString());
77
		template.setAttribute("objIdentifier", XmlRecordFactory.escapeXml(XmlRecordFactory.removePrefix(objIdentifier)));
78
		template.setAttribute("class", semanticclass);
79
		template.setAttribute("scheme", semantischeme);
80
		template.setAttribute("metadata", fields);
81
		template.setAttribute("inferred", inferred);
82
		template.setAttribute("trust", trust);
83
		template.setAttribute("inferenceprovenance", inferenceprovenance);
84
		template.setAttribute("provenanceaction", provenanceaction);
85

    
86
		return template.toString();
87
	}
88

    
89
	public String getInstance(final String resultId, final List<String> instancemetadata, final List<String> webresources) {
90
		final StringTemplate template = getTemplate(resources.getInstance());
91

    
92
		template.setAttribute("instanceId", XmlRecordFactory.escapeXml(XmlRecordFactory.removePrefix(resultId)));
93
		template.setAttribute("metadata", instancemetadata);
94
		template.setAttribute("webresources", webresources);
95

    
96
		return template.toString();
97
	}
98

    
99
	public String getWebResource(final String identifier) {
100
		final StringTemplate template = getTemplate(resources.getWebresource());
101

    
102
		template.setAttribute("identifier", XmlRecordFactory.escapeXml(identifier));
103

    
104
		return template.toString();
105
	}
106

    
107
	// ////////////////////////////////////////////////////
108

    
109
	private StringTemplate getTemplate(final Resource res) {
110
		StringWriter body = new StringWriter();
111
		try {
112
			IOUtils.copy(res.getInputStream(), body);
113
			String string = body.toString();
114
			return new StringTemplate(string);
115
		} catch (IOException e) {
116
			log.error("unable to get template", e);
117
			throw new RuntimeException(e);
118
		}
119
	}
120

    
121
}
(5-5/8)