Project

General

Profile

1
package eu.dnetlib.msro.workflows.nodes;
2

    
3
import java.util.Calendar;
4
import java.util.Map;
5
import java.util.Set;
6
import java.util.stream.Collectors;
7

    
8
import org.apache.commons.lang3.StringUtils;
9
import org.apache.commons.logging.Log;
10
import org.apache.commons.logging.LogFactory;
11
import org.springframework.beans.factory.annotation.Autowired;
12

    
13
import eu.dnetlib.clients.pimpa.PimpaStubFactory;
14
import eu.dnetlib.data.db.AffiliationsDao;
15
import eu.dnetlib.data.utils.IstiConstants;
16
import eu.dnetlib.msro.workflows.graph.Arc;
17
import eu.dnetlib.msro.workflows.procs.Env;
18
import eu.dnetlib.rmi.manager.MSROException;
19

    
20
@Deprecated
21
public class PimpaUpdateJobNode extends SimpleJobNode {
22

    
23
	@Autowired
24
	private PimpaStubFactory pimpa;
25

    
26
	@Autowired
27
	private AffiliationsDao dao;
28

    
29
	private boolean overridePersons = false;
30
	private boolean overrideGroups = false;
31
	private boolean capitalizeFullnames = false;
32

    
33
	private static final Log log = LogFactory.getLog(PimpaUpdateJobNode.class);
34

    
35
	@Override
36
	protected String execute(final Env env) throws Exception {
37
		throw new MSROException("THIS NODE IS DEPRECATED");
38
		// return _execute(env);
39
	}
40

    
41
	private String _execute(final Env env) throws Exception {
42
		log.info("Reimport records from PIMPA - START");
43

    
44
		final Map<String, Boolean> oldPids = dao.getPersonIds().stream().collect(Collectors.toMap(s -> s, s -> true));
45

    
46
		final Map<String, Boolean> oldGids = dao.getGroupIds().stream().collect(Collectors.toMap(s -> s, s -> true));
47

    
48
		final Set<String> oldAffiliations = dao.listAffiliations().stream()
49
				.map(a -> String.format("%s#%s#%s", a.getPid(), a.getGid(), a.getYear()))
50
				.collect(Collectors.toSet());
51

    
52
		pimpa.getStub()
53
				.getDataRange(IstiConstants.PIMPA_START_YEAR, Calendar.getInstance().get(Calendar.YEAR))
54
				.getYears()
55
				.forEach(y -> {
56
					y.getPersons().getList().forEach(p -> {
57
						if (StringUtils.isNotBlank(p.getCode())) {
58
							final String pid = "matricola:" + p.getCode().trim();
59

    
60
							if (!oldPids.containsKey(pid)) {
61
								dao.registerPerson(pid, p.getName().trim(), p.getSurname().trim());
62
								oldPids.put(pid, false);
63
							} else if (overridePersons && oldPids.get(pid)) {
64
								log.info("Overriding person " + pid);
65
								dao.updatePerson(pid, p.getName().trim(), p.getSurname().trim());
66
								oldPids.put(pid, false);
67
							}
68
							p.getLabs().getList().forEach(lab -> {
69
								if (StringUtils.isNotBlank(lab.getCode())) {
70
									if (overrideGroups && oldGids.get(lab.getCode())) {
71
										log.info("Overriding group " + lab.getCode());
72
										dao.updateGroup(lab.getCode(), lab.getDescription(), lab.getType());
73
										oldGids.put(lab.getCode(), false);
74
									}
75

    
76
									if (!oldAffiliations.contains(String.format("%s#%s#%s", pid, lab.getCode(), y.getYear()))) {
77
										dao.registerAffiliation(pid, lab.getCode(), y.getYear());
78
									}
79
								}
80
							});
81
						}
82
					});
83
				});
84

    
85
		if (capitalizeFullnames) {
86
			log.info("Capitalizing person fullnames - DEPRECATED - NOT PERFROMED");
87
			// dao.listPersons().forEach(p -> { dao.updatePerson(p.getId(), XsltFunctions.capitalize(p.getName())); });;
88
		}
89

    
90
		log.info("Reimport records from PIMPA - END");
91

    
92
		return Arc.DEFAULT_ARC;
93
	}
94

    
95
	public boolean isOverridePersons() {
96
		return overridePersons;
97
	}
98

    
99
	public void setOverridePersons(final boolean overridePersons) {
100
		this.overridePersons = overridePersons;
101
	}
102

    
103
	public boolean isOverrideGroups() {
104
		return overrideGroups;
105
	}
106

    
107
	public void setOverrideGroups(final boolean overrideGroups) {
108
		this.overrideGroups = overrideGroups;
109
	}
110

    
111
	public boolean isCapitalizeFullnames() {
112
		return capitalizeFullnames;
113
	}
114

    
115
	public void setCapitalizeFullnames(final boolean capitalizeFullnames) {
116
		this.capitalizeFullnames = capitalizeFullnames;
117
	}
118
}
    (1-1/1)