Project

General

Profile

1
package eu.dnetlib.data.mapreduce.hbase.broker;
2

    
3
import java.util.UUID;
4

    
5
import org.apache.commons.lang.math.RandomUtils;
6
import org.apache.commons.logging.Log;
7
import org.apache.commons.logging.LogFactory;
8
import org.dom4j.DocumentException;
9
import org.junit.Test;
10

    
11
import com.googlecode.protobuf.format.JsonFormat;
12

    
13
import eu.dnetlib.broker.objects.OpenAireEventPayload;
14
import eu.dnetlib.data.mapreduce.hbase.broker.mapping.EventFactory;
15
import eu.dnetlib.data.mapreduce.hbase.broker.mapping.HighlightFactory;
16
import eu.dnetlib.data.mapreduce.hbase.broker.mapping.OpenAireEventPayloadFactory;
17
import eu.dnetlib.data.mapreduce.hbase.broker.model.EventMessage;
18
import eu.dnetlib.data.mapreduce.util.OafTest;
19
import eu.dnetlib.data.proto.FieldTypeProtos.KeyValue;
20
import eu.dnetlib.data.proto.FieldTypeProtos.Qualifier;
21
import eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty;
22
import eu.dnetlib.data.proto.OafProtos.OafEntity;
23
import eu.dnetlib.data.proto.OafProtos.OafEntity.Builder;
24
import eu.dnetlib.data.proto.ResultProtos.Result;
25
import eu.dnetlib.data.proto.ResultProtos.Result.Instance;
26
import eu.dnetlib.data.proto.TypeProtos.Type;
27

    
28
/**
29
 * Created by claudio on 22/07/16.
30
 */
31
public class EventFactoryTest {
32

    
33
	private static final Log log = LogFactory.getLog(EventFactoryTest.class);
34

    
35
	@Test
36
	public void testEventFactory() throws DocumentException {
37

    
38
		final OafEntity source = getEntity("id_1", null, "pid_1").setResult(
39
				Result.newBuilder().setMetadata(
40
						Result.Metadata.newBuilder().setDateofacceptance(OafTest.sf("2012-01-01"))
41
								.addTitle(sp("vvvv Title", "main title", "dnet:dataCite_title"))
42
								.setResulttype(q("publication", "dnet:result_typologies")))
43
						.addInstance(Instance.newBuilder()
44
								.setHostedby(kv("456", "PubMed"))
45
								.setAccessright(q("OPEN", "dnet:licenses"))
46
								.addUrl("http://456")))
47
				.build();
48

    
49
		final OafEntity oaf = getEntity("id_2", "originalId_2", "pid_2").setResult(
50
				Result.newBuilder().setMetadata(
51
						Result.Metadata.newBuilder().setDateofacceptance(OafTest.sf(""))
52
								.addTitle(sp("aaaa Title", "main title", "dnet:dataCite_title"))
53
								.setResulttype(q("publication", "dnet:result_typologies")))
54
						.addInstance(
55
								Instance.newBuilder()
56
										.setHostedby(kv("123", "Puma"))
57
										.setAccessright(q("CLOSED", "dnet:licenses"))
58
										.addUrl("http://123")))
59
				.build();
60

    
61
		log.info("oaf: " + JsonFormat.printToString(oaf));
62

    
63
		final float trust = RandomUtils.nextFloat();
64
		final EventMessage event = EventFactory.asEvent(oaf, Topic.ENRICH_MISSING_PUBLICATION_DATE, new OpenAireEventPayload(), source, trust);
65

    
66
		final OpenAireEventPayload p = OpenAireEventPayloadFactory.fromOAF(oaf, source, trust);
67
		final OpenAireEventPayload payload = HighlightFactory.highlightEnrichPublicationDate(p, OafTest.sf("2012-01-01"));
68

    
69
		final String payloadJson = payload.toJSON();
70

    
71
		log.info("payload: " + payloadJson);
72
		log.info("payload: " + OpenAireEventPayload.fromJSON(payloadJson).toJSON());
73

    
74
		event.setPayload(payload.toJSON());
75

    
76
		log.info("event: " + event.toString());
77

    
78
	}
79

    
80
	private Qualifier.Builder q(final String classid, final String scheme) {
81
		return OafTest.getQualifier(classid, scheme);
82
	}
83

    
84
	private KeyValue.Builder kv(final String k, final String v) {
85
		return KeyValue.newBuilder().setKey(k).setValue(v);
86
	}
87

    
88
	private StructuredProperty.Builder sp(final String v, final String classid, final String scheme) {
89
		return OafTest.getStructuredproperty(v, classid, scheme);
90
	}
91

    
92
	private OafEntity.Builder getEntity(final String id, final String originalId, final String pid) {
93
		final Builder entity =
94
				OafEntity.newBuilder().setType(Type.result).setId(id).addOriginalId(originalId != null ? originalId : UUID.randomUUID().toString());
95

    
96
		if (pid != null) {
97
			entity.addPid(OafTest.getStructuredproperty(pid, "doi", "scheme"));
98
		}
99

    
100
		return entity;
101
	}
102

    
103
}
    (1-1/1)