Project

General

Profile

1
package eu.dnetlib.pace.config;
2

    
3
import java.util.List;
4
import java.util.Map;
5
import java.util.stream.Collectors;
6

    
7
import com.google.common.collect.Lists;
8
import com.google.common.collect.Maps;
9
import eu.dnetlib.pace.condition.ConditionAlgo;
10
import eu.dnetlib.pace.model.ClusteringDef;
11
import eu.dnetlib.pace.model.CondDef;
12
import eu.dnetlib.pace.model.FieldDef;
13
import org.apache.commons.collections.CollectionUtils;
14

    
15
public class PaceConfig {
16

    
17
	private List<FieldDef> model;
18
	private List<CondDef> strictConditions;
19
	private List<CondDef> conditions;
20
	private List<ClusteringDef> clustering;
21
	private Map<String, List<String>> blacklists;
22

    
23
	private Map<String, FieldDef> modelMap;
24

    
25
	public PaceConfig() {}
26

    
27
	public void initModel() {
28
		modelMap = Maps.newHashMap();
29
		for(FieldDef fd : getModel()) {
30
			modelMap.put(fd.getName(), fd);
31
		}
32
	}
33

    
34
	public List<FieldDef> getModel() {
35
		return model;
36
	}
37

    
38
	public void setModel(final List<FieldDef> model) {
39
		this.model = model;
40
	}
41

    
42
	public List<CondDef> getStrictConditions() {
43
		return strictConditions;
44
	}
45

    
46
	public void setStrictConditions(final List<CondDef> strictConditions) {
47
		this.strictConditions = strictConditions;
48
	}
49

    
50
	public List<CondDef> getConditions() {
51
		return conditions;
52
	}
53

    
54
	public List<ConditionAlgo> getConditionAlgos() {
55
		return asConditionAlgos(getConditions());
56
	}
57

    
58
	public List<ConditionAlgo> getStrictConditionAlgos() {
59
		return asConditionAlgos(getStrictConditions());
60
	}
61

    
62
	public void setConditions(final List<CondDef> conditions) {
63
		this.conditions = conditions;
64
	}
65

    
66
	public List<ClusteringDef> getClustering() {
67
		return clustering;
68
	}
69

    
70
	public void setClustering(final List<ClusteringDef> clustering) {
71
		this.clustering = clustering;
72
	}
73

    
74
	public Map<String, List<String>> getBlacklists() {
75
		return blacklists;
76
	}
77

    
78
	public void setBlacklists(final Map<String, List<String>> blacklists) {
79
		this.blacklists = blacklists;
80
	}
81

    
82
	public Map<String, FieldDef> getModelMap() {
83
		return modelMap;
84
	}
85

    
86
	public void setModelMap(final Map<String, FieldDef> modelMap) {
87
		this.modelMap = modelMap;
88
	}
89

    
90
	// helper
91

    
92
	private List<ConditionAlgo> asConditionAlgos(final List<CondDef> defs) {
93
		final List<ConditionAlgo> algos = Lists.newArrayList();
94
		if (CollectionUtils.isEmpty(defs)) return algos;
95
		for (final CondDef cd : defs) {
96
			final List<FieldDef> fields = getModel().stream()
97
					.filter(fd -> cd.getFields().contains(fd.getName()))
98
					.collect(Collectors.toList());
99
			algos.add(cd.getConditionAlgo(fields));
100
		}
101
		return algos;
102
	}
103

    
104
}
(5-5/7)