Project

General

Profile

1
package eu.dnetlib.data.transform;
2

    
3
import java.util.Arrays;
4
import java.util.Set;
5
import java.util.stream.Collectors;
6
import java.util.stream.Stream;
7

    
8
import com.google.common.base.Function;
9
import com.google.common.base.Predicate;
10
import com.google.common.collect.Iterables;
11
import com.google.common.collect.Sets;
12
import com.google.protobuf.Descriptors.Descriptor;
13
import com.google.protobuf.Descriptors.FieldDescriptor;
14
import eu.dnetlib.data.mapreduce.util.OafDecoder;
15
import eu.dnetlib.data.proto.FieldTypeProtos.StructuredProperty;
16
import eu.dnetlib.data.proto.TypeProtos.Type;
17

    
18
public class OafUtils {
19

    
20
	private static Stream<String> types() {
21
		return Arrays.stream(Type.values())
22
				.map(Enum::toString);
23
	}
24

    
25
	public static Set<String> entities() {
26
		return types()
27
				.collect(Collectors.toSet());
28
	}
29

    
30
	public static Function<OafDecoder, String> idDecoder() {
31
		return input -> input.getEntityId();
32
	}
33

    
34
	public static Predicate<StructuredProperty> mainTitleFilter() {
35
		return sp -> (sp.getQualifier() != null) && sp.getQualifier().getClassname().equals("main title");
36
	}
37

    
38
	public static Set<String> getFieldNames(final Descriptor d, final Integer... tag) {
39
		return Sets.newHashSet(Iterables.transform(Arrays.asList(tag), i -> {
40
			final FieldDescriptor fd = d.findFieldByNumber(i);
41
			if (fd == null) throw new IllegalArgumentException("undefined tag: " + i + " for type: " + d.getFullName());
42
			return fd.getName();
43
		}));
44
	}
45

    
46
}
(6-6/8)