Revision 63175
Added by Michele Artini about 2 months ago
modules/dnet-isti/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/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
objidentifier patch