Project

General

Profile

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

    
3
import static eu.dnetlib.data.mapreduce.util.OafHbaseUtils.getValue;
4
import static eu.dnetlib.data.mapreduce.util.OafHbaseUtils.listValues;
5

    
6
import java.util.List;
7

    
8
import com.google.common.base.Function;
9
import com.google.common.base.Joiner;
10
import com.google.common.collect.Iterables;
11

    
12
import eu.dnetlib.broker.objects.OpenAireEventPayload;
13
import eu.dnetlib.data.proto.FieldTypeProtos.StringField;
14
import eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty;
15
import eu.dnetlib.data.proto.OafProtos.OafEntity;
16
import eu.dnetlib.data.proto.ProjectProtos.Project;
17
import eu.dnetlib.data.proto.ProjectProtos.Project.Metadata;
18
import eu.dnetlib.data.proto.ResultProtos.Result.Instance;
19

    
20
/**
21
 * Created by alessia on 21/07/16.
22
 */
23
public class HighlightFactory extends ProtoMapping {
24

    
25
	public static OpenAireEventPayload highlightEnrichOa(final OpenAireEventPayload p, final List<Instance> instances) {
26
		p.getHighlight().setInstances(mapInstances(instances));
27
		return p;
28
	}
29

    
30
	public static OpenAireEventPayload highlightEnrichPid(final OpenAireEventPayload p, final List<StructuredProperty> pids) {
31
		p.getHighlight().setPids(mapPids(pids));
32
		return p;
33
	}
34

    
35
	public static OpenAireEventPayload highlightEnrichPublicationDate(final OpenAireEventPayload p, final StringField date) {
36
		p.getHighlight().setPublicationdate(getValue(date));
37
		return p;
38
	}
39

    
40
	public static OpenAireEventPayload highlightEnrichAbstract(final OpenAireEventPayload p, final List<StringField> descriptionList) {
41
		p.getHighlight().setAbstracts(listValues(descriptionList));
42
		return p;
43
	}
44

    
45
	public static OpenAireEventPayload highlightEnrichSubject(final OpenAireEventPayload p, final List<StructuredProperty> subjects) {
46
		p.getHighlight().setSubjects(listValues(subjects));
47
		return p;
48
	}
49

    
50
	// TODO: highlight for the following reasons
51
	public static OpenAireEventPayload highlightEnrichProject(final OpenAireEventPayload p, final OafEntity projectEntity, final String provenance) {
52
		// TODO: this can wait. Think about generating the openaire string for project links: it will be easier for subscribers to integrate
53
		// it back to their records!
54
		final Project project = projectEntity.getProject();
55
		final Metadata projectMetadata = project.getMetadata();
56
		final StringField acro = projectMetadata.getAcronym();
57
		final StringField title = projectMetadata.getTitle();
58
		final StringField code = projectMetadata.getCode();
59
		final List<StringField> fundingtree = projectMetadata.getFundingtreeList();
60
		final String fundingTrees = "<fundings>" + Joiner.on(" ").join(Iterables.transform(fundingtree, new Function<StringField, String>() {
61

    
62
			@Override
63
			public String apply(final StringField v) {
64
				return v.getValue();
65
			}
66
		}
67

    
68
		)) + "</fundings>";
69
		return p;
70
	}
71

    
72
	public static OpenAireEventPayload highlightEnrichDataset(final OpenAireEventPayload p) {
73
		// TODO: this can wait
74
		return p;
75
	}
76

    
77
	public static OpenAireEventPayload highlightEnrichAuthorPid(final OpenAireEventPayload p) {
78
		// TODO: this can wait
79
		return p;
80
	}
81

    
82
	// Commenting highlights for addition events: the record is new for the subscriber!
83
	/*
84
	 * public static OpenAireEventPayload highlightAddByAffiliation(final OpenAireEventPayload p){ return p; }
85
	 * 
86
	 * public static OpenAireEventPayload highlightAddByReference(final OpenAireEventPayload p){ return p; }
87
	 * 
88
	 * public static OpenAireEventPayload highlightAddByProject(final OpenAireEventPayload p){ //TODO: this cannot wait return p; }
89
	 */
90

    
91
}
(2-2/4)