Project

General

Profile

« Previous | Next » 

Revision 63175

objidentifier patch

View differences:

PatchCinecaIdsJobNode.java
7 7
import java.util.Map;
8 8

  
9 9
import org.apache.commons.lang3.StringUtils;
10
import org.apache.commons.logging.Log;
11
import org.apache.commons.logging.LogFactory;
10 12
import org.dom4j.Document;
11 13
import org.dom4j.DocumentHelper;
12 14
import org.dom4j.Element;
......
21 23
import com.google.gson.reflect.TypeToken;
22 24

  
23 25
import eu.dnetlib.enabling.resultset.factory.ResultSetFactory;
26
import eu.dnetlib.miscutils.functional.hash.Hashing;
24 27
import eu.dnetlib.msro.workflows.graph.Arc;
25 28
import eu.dnetlib.msro.workflows.procs.Env;
26 29
import eu.dnetlib.rmi.common.ResultSet;
......
28 31

  
29 32
public class PatchCinecaIdsJobNode extends SimpleJobNode {
30 33

  
34
	@Autowired
35
	private ResultSetFactory resultSetFactory;
36

  
37
	private Resource idMapFile;
38

  
31 39
	private String inputEprParam;
32 40
	private String outputEprParam;
33 41

  
34 42
	public static final String cinecaOaiPrefix = "oai:iris.cnr.it:";
35 43
	public static final String peopleOaiPrefix = "oai:it.cnr:prodotti:";
44
	public static final String peopleNamespacePrefix = "people______::";
36 45

  
37
	private Resource idMapFile;
46
	private static final Namespace ISTI_NS = new Namespace("isti", "http://openportal.isti.cnr.it");
47
	private static final Namespace DRI_NS = new Namespace("dri", "http://www.driver-repository.eu/namespace/dri");
38 48

  
39
	@Autowired
40
	private ResultSetFactory resultSetFactory;
49
	private static final Log log = LogFactory.getLog(PatchCinecaIdsJobNode.class);
41 50

  
42 51
	@Override
43 52
	protected String execute(final Env env) throws Exception {
......
45 54
		@SuppressWarnings("unchecked")
46 55
		final ResultSet<String> rsIn = env.getAttribute(inputEprParam, ResultSet.class);
47 56

  
57
		if (rsIn == null) { throw new MSROException("Passed rs is null"); }
58

  
48 59
		final Map<String, String> idMap = loadMap(idMapFile);
49 60

  
50
		if (rsIn == null) { throw new MSROException("Passed rs is null"); }
61
		log.info("potential mapped ids: " + idMap.size());
51 62

  
52 63
		final ResultSet<String> rsOut = resultSetFactory.map(rsIn, String.class, xml -> patchId(xml, idMap));
53 64

  
......
79 90
				final String oldValue = n.getText().trim();
80 91

  
81 92
				if (oldValue.startsWith(cinecaOaiPrefix)) {
82

  
83 93
					final String peopleId = idMap.get(StringUtils.substringAfter(oldValue, cinecaOaiPrefix));
84 94

  
85 95
					if (StringUtils.isNotBlank(peopleId)) {
86
						n.setText(peopleOaiPrefix + peopleId);
87
						header.addElement(new QName("hiddenIdentifier", new Namespace("isti", "http://openportal.isti.cnr.it"))).setText(oldValue);
96
						final String newValue = peopleOaiPrefix + peopleId;
97
						n.setText(newValue);
98
						header.addElement(new QName("objIdentifier", DRI_NS)).setText(peopleNamespacePrefix + Hashing.md5(newValue));
99
						header.addElement(new QName("hiddenIdentifier", ISTI_NS)).setText(oldValue);
100
						log.debug("* MAPPED ID: " + oldValue + " -> " + newValue);
88 101
					}
89 102
				}
90 103
			}

Also available in: Unified diff