Project

General

Profile

1 26600 sandro.lab
package eu.dnetlib.data.mapreduce.util;
2
3
import java.util.Comparator;
4
5 28094 claudio.at
import eu.dnetlib.data.proto.FieldTypeProtos.Qualifier;
6 26600 sandro.lab
7
public class LicenseComparator implements Comparator<Qualifier> {
8
9
	@Override
10
	public int compare(Qualifier left, Qualifier right) {
11
12
		if (left == null && right == null) return 0;
13
		if (left == null) return 1;
14
		if (right == null) return -1;
15
16
		String lClass = left.getClassid();
17
		String rClass = right.getClassid();
18
19
		if (lClass.equals(rClass)) return 0;
20
21
		if (lClass.equals("OPEN")) return -1;
22
		if (rClass.equals("OPEN")) return 1;
23
24
		if (lClass.equals("6MONTHS")) return -1;
25
		if (rClass.equals("6MONTHS")) return 1;
26
27
		if (lClass.equals("12MONTHS")) return -1;
28
		if (rClass.equals("12MONTHS")) return 1;
29
30
		if (lClass.equals("EMBARGO")) return -1;
31
		if (rClass.equals("EMBARGO")) return 1;
32
33
		if (lClass.equals("RESTRICTED")) return -1;
34
		if (rClass.equals("RESTRICTED")) return 1;
35
36
		if (lClass.equals("CLOSED")) return -1;
37
		if (rClass.equals("CLOSED")) return 1;
38
39
		if (lClass.equals("UNKNOWN")) return -1;
40
		if (rClass.equals("UNKNOWN")) return 1;
41
42
		// Else (but unlikely), lexicographical ordering will do.
43
		return Float.compare(Float.parseFloat(lClass), Float.parseFloat(rClass));
44
	}
45
46
}