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.hbase.broker.model.EventWrapper;
|
19
|
import eu.dnetlib.data.mapreduce.util.OafTest;
|
20
|
import eu.dnetlib.data.proto.FieldTypeProtos.KeyValue;
|
21
|
import eu.dnetlib.data.proto.FieldTypeProtos.Qualifier;
|
22
|
import eu.dnetlib.data.proto.FieldTypeProtos.StringField;
|
23
|
import eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty;
|
24
|
import eu.dnetlib.data.proto.OafProtos.OafEntity;
|
25
|
import eu.dnetlib.data.proto.OafProtos.OafEntity.Builder;
|
26
|
import eu.dnetlib.data.proto.ResultProtos.Result;
|
27
|
import eu.dnetlib.data.proto.ResultProtos.Result.Instance;
|
28
|
import eu.dnetlib.data.proto.TypeProtos.Type;
|
29
|
|
30
|
/**
|
31
|
* Created by claudio on 22/07/16.
|
32
|
*/
|
33
|
public class EventFactoryTest {
|
34
|
|
35
|
private static final Log log = LogFactory.getLog(EventFactoryTest.class);
|
36
|
|
37
|
@Test
|
38
|
public void testEventFactory() throws DocumentException {
|
39
|
|
40
|
final OafEntity source = getEntity("id_1", null, "pid_1").setResult(
|
41
|
Result.newBuilder().setMetadata(
|
42
|
Result.Metadata.newBuilder().setDateofacceptance(OafTest.sf("2012-01-01"))
|
43
|
.addTitle(sp("vvvv Title", "main title", "dnet:dataCite_title"))
|
44
|
.setResulttype(q("publication", "dnet:result_typologies")))
|
45
|
.addInstance(Instance.newBuilder()
|
46
|
.setHostedby(kv("456", "PubMed"))
|
47
|
.setAccessright(q("OPEN", "dnet:licenses"))
|
48
|
.addUrl("http://456")))
|
49
|
.build();
|
50
|
|
51
|
final OafEntity oaf = getEntity("id_2", "originalId_2", "pid_2").setResult(
|
52
|
Result.newBuilder().setMetadata(
|
53
|
Result.Metadata.newBuilder().setDateofacceptance(OafTest.sf(""))
|
54
|
.addTitle(sp("aaaa Title", "main title", "dnet:dataCite_title"))
|
55
|
.setDateofacceptance(sf("2017-07-13"))
|
56
|
.setResulttype(q("publication", "dnet:result_typologies")))
|
57
|
.addInstance(
|
58
|
Instance.newBuilder()
|
59
|
.setHostedby(kv("123", "Puma"))
|
60
|
.setAccessright(q("CLOSED", "dnet:licenses"))
|
61
|
.addUrl("http://123")))
|
62
|
.build();
|
63
|
|
64
|
log.info("oaf: " + JsonFormat.printToString(oaf));
|
65
|
|
66
|
final float trust = RandomUtils.nextFloat();
|
67
|
final OpenAireEventPayload openAireEventPayload = new OpenAireEventPayload();
|
68
|
final EventMessage event = EventFactory.asEvent(oaf, Topic.ENRICH_MISSING_PUBLICATION_DATE, openAireEventPayload, source, trust);
|
69
|
|
70
|
final OpenAireEventPayload p = OpenAireEventPayloadFactory.fromOAF(oaf, source, trust);
|
71
|
final OpenAireEventPayload payload = HighlightFactory.highlightEnrichPublicationDate(p, OafTest.sf("2012-01-01"));
|
72
|
|
73
|
final String payloadJson = payload.toJSON();
|
74
|
|
75
|
log.info("payload: " + payloadJson);
|
76
|
log.info("payload: " + OpenAireEventPayload.fromJSON(payloadJson).toJSON());
|
77
|
|
78
|
event.setPayload(payload.toJSON());
|
79
|
|
80
|
log.info("event message: " + event.toString());
|
81
|
|
82
|
final EventWrapper wrapper = new EventWrapper(event, "2012-01-01", "test");
|
83
|
|
84
|
log.info("broker event: " + wrapper.asBrokerEvent().toJson());
|
85
|
|
86
|
}
|
87
|
|
88
|
private Qualifier.Builder q(final String classid, final String scheme) {
|
89
|
return OafTest.getQualifier(classid, scheme);
|
90
|
}
|
91
|
|
92
|
private KeyValue.Builder kv(final String k, final String v) {
|
93
|
return KeyValue.newBuilder().setKey(k).setValue(v);
|
94
|
}
|
95
|
|
96
|
private StringField.Builder sf(final String value) {
|
97
|
return StringField.newBuilder().setValue(value);
|
98
|
}
|
99
|
|
100
|
private StructuredProperty.Builder sp(final String v, final String classid, final String scheme) {
|
101
|
return OafTest.getStructuredproperty(v, classid, scheme);
|
102
|
}
|
103
|
|
104
|
private OafEntity.Builder getEntity(final String id, final String originalId, final String pid) {
|
105
|
final Builder entity =
|
106
|
OafEntity.newBuilder().setType(Type.result).setId(id).addOriginalId(originalId != null ? originalId : UUID.randomUUID().toString());
|
107
|
|
108
|
if (pid != null) {
|
109
|
entity.addPid(OafTest.getStructuredproperty(pid, "doi", "scheme"));
|
110
|
}
|
111
|
|
112
|
return entity;
|
113
|
}
|
114
|
|
115
|
}
|