Revision 31972
Added by Andrea Mannocci over 9 years ago
MdBuilderJobNode.java | ||
---|---|---|
1 | 1 |
package eu.dnetlib.msro.workflows.nodes.transform; |
2 | 2 |
|
3 | 3 |
import java.io.IOException; |
4 |
import java.util.List; |
|
4 | 5 |
|
5 | 6 |
import javax.xml.ws.wsaddressing.W3CEndpointReference; |
6 | 7 |
|
... | ... | |
49 | 50 |
final StringTemplate st = new StringTemplate(IOUtils.toString(getMdBuilderTemplateXslt().getInputStream())); |
50 | 51 |
st.setAttribute("xpath", lookupLocator.getService().getResourceProfileByQuery(xQuery)); |
51 | 52 |
st.setAttribute("datasourceId", datasourceId); |
53 |
|
|
54 |
/* If namespacePrefix has been already pushed to env by some custom JobNode e.g. ObtainOpenaireDataSourceParamsJobNode |
|
55 |
then push it to ST. Else: |
|
56 |
a) try to get it from EXTRAFIELDS of the datasource |
|
57 |
b) try to get it from DATASOURCE_ORIGINAL_ID of the datasource |
|
58 |
c) if any of the is present, then push to ST the datasourceId */ |
|
52 | 59 |
if (token.getEnv().hasAttribute("namespacePrefix")) { |
53 | 60 |
st.setAttribute("namespacePrefix", token.getEnv().getAttribute("namespacePrefix")); |
54 | 61 |
} else { |
55 |
st.setAttribute("namespacePrefix", datasourceId); |
|
62 |
List<String> namespacePrefix; |
|
63 |
xQuery = "/*[.//RESOURCE_IDENTIFIER/@value='" + datasourceId + "']//EXTRA_FIELDS/FIELD[./key='NamespacePrefix']/value/string()"; |
|
64 |
namespacePrefix = lookupLocator.getService().quickSearchProfile(xQuery); |
|
65 |
if (namespacePrefix.size() != 0){ |
|
66 |
st.setAttribute("namespacePrefix", namespacePrefix.get(0)); |
|
67 |
} else { |
|
68 |
xQuery = "/*[.//RESOURCE_IDENTIFIER/@value='" + datasourceId + "']//DATASOURCE_ORIGINAL_ID/string()"; |
|
69 |
namespacePrefix = lookupLocator.getService().quickSearchProfile(xQuery); |
|
70 |
if (namespacePrefix.size() != 0) { |
|
71 |
st.setAttribute("namespacePrefix", namespacePrefix.get(0)); |
|
72 |
} else { |
|
73 |
st.setAttribute("namespacePrefix", datasourceId); |
|
74 |
} |
|
75 |
} |
|
56 | 76 |
} |
57 | 77 |
final W3CEndpointReference epr = xsltMappedResultSetFactory.createMappedResultSet((new EPRUtils()).getEpr(inputEpr), st.toString()); |
58 | 78 |
|
Also available in: Unified diff
Changed logic in MdBuilder in order to push the namespaceprefix to the mdBuilder template.
Updated default mdBuilder template accordingly