Project

General

Profile

« Previous | Next » 

Revision 31972

Changed logic in MdBuilder in order to push the namespaceprefix to the mdBuilder template.

Updated default mdBuilder template accordingly

View differences:

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