Project

General

Profile

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

    
3
import java.util.Comparator;
4

    
5
import eu.dnetlib.data.proto.FieldTypeProtos.Qualifier;
6

    
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 SOURCE")) return -1;
22
		if (rClass.equals("OPEN SOURCE")) return 1;
23

    
24
		if (lClass.equals("OPEN")) return -1;
25
		if (rClass.equals("OPEN")) return 1;
26

    
27
		if (lClass.equals("6MONTHS")) return -1;
28
		if (rClass.equals("6MONTHS")) return 1;
29

    
30
		if (lClass.equals("12MONTHS")) return -1;
31
		if (rClass.equals("12MONTHS")) return 1;
32

    
33
		if (lClass.equals("EMBARGO")) return -1;
34
		if (rClass.equals("EMBARGO")) return 1;
35

    
36
		if (lClass.equals("RESTRICTED")) return -1;
37
		if (rClass.equals("RESTRICTED")) return 1;
38

    
39
		if (lClass.equals("CLOSED")) return -1;
40
		if (rClass.equals("CLOSED")) return 1;
41

    
42
		if (lClass.equals("UNKNOWN")) return -1;
43
		if (rClass.equals("UNKNOWN")) return 1;
44

    
45
		// Else (but unlikely), lexicographical ordering will do.
46
		return Float.compare(Float.parseFloat(lClass), Float.parseFloat(rClass));
47
	}
48

    
49
}
(2-2/7)