Project

General

Profile

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

    
3
import java.util.List;
4

    
5
import com.google.common.base.Function;
6
import com.google.common.collect.Iterables;
7
import com.google.common.collect.Lists;
8
import com.google.protobuf.Descriptors.FieldDescriptor;
9
import com.google.protobuf.GeneratedMessage;
10
import eu.dnetlib.data.proto.DNGFProtos.DNGFEntity;
11
import eu.dnetlib.data.proto.TypeProtos.Type;
12
import eu.dnetlib.data.transform.AbstractProtoMapper;
13

    
14
public class DNGFEntityDecoder extends AbstractProtoMapper {
15

    
16
	private final DNGFEntity dngfEntity;
17

    
18
	private DNGFEntityDecoder(final DNGFEntity oafEntity) {
19
		this.dngfEntity = oafEntity;
20
	}
21

    
22
	public static DNGFEntityDecoder decode(final DNGFEntity oafEntity) {
23
		return new DNGFEntityDecoder(oafEntity);
24
	}
25

    
26
	public Type getType() {
27
		return dngfEntity.getType();
28
	}
29

    
30
	public String getId() {
31
		return dngfEntity.getId();
32
	}
33

    
34
	public GeneratedMessage getDNGFEntity() {
35
		return dngfEntity;
36
	}
37

    
38
	public GeneratedMessage getEntity() {
39
		final FieldDescriptor fd = dngfEntity.getDescriptorForType().findFieldByName(typeName());
40
		return (GeneratedMessage) dngfEntity.getField(fd);
41
	}
42

    
43
	public String typeName() {
44
		return dngfEntity.getType().toString();
45
	}
46

    
47
	public GeneratedMessage getMetadata() {
48
		final GeneratedMessage entity = getEntity();
49
		final FieldDescriptor fd = entity.getDescriptorForType().findFieldByName("metadata");
50
		final GeneratedMessage field = (GeneratedMessage) entity.getField(fd);
51
		return field;
52
	}
53

    
54
	public List<String> getFieldValues(final String path) {
55
		return Lists.newLinkedList(Iterables.transform(processPath(getDNGFEntity(), path, eu.dnetlib.pace.config.Type.String), new Function<Object, String>() {
56

    
57
			@Override
58
			public String apply(final Object o) {
59
				return o.toString();
60
			}
61
		}));
62
	}
63

    
64
	public String getDateOfCollection() {
65
		return dngfEntity.getDateofcollection();
66
	}
67

    
68
	public String getDateOfTransformation() {
69
		return dngfEntity.getDateoftransformation();
70
	}
71
}
(2-2/5)