Project

General

Profile

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

    
3
import javax.xml.ws.wsaddressing.W3CEndpointReference;
4

    
5
import org.antlr.stringtemplate.StringTemplate;
6
import org.apache.commons.io.IOUtils;
7
import org.apache.commons.logging.Log;
8
import org.apache.commons.logging.LogFactory;
9
import org.springframework.core.io.ClassPathResource;
10
import org.springframework.core.io.Resource;
11

    
12
import com.googlecode.sarasvati.Arc;
13
import com.googlecode.sarasvati.NodeToken;
14

    
15
import eu.dnetlib.enabling.database.rmi.DatabaseService;
16
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
17
import eu.dnetlib.enabling.resultset.XSLTMappedResultSetFactory;
18
import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
19

    
20
public class FindComplianceRepositoriesJobNode extends SimpleJobNode {
21

    
22
	private String dbName;
23

    
24
	// The following files are in "dnet-openaireplus-datasource-manager-service" module
25
	private final Resource sqlSelectDatasourcesTmpl = new ClassPathResource("/eu/dnetlib/enabling/datasources/getDatasources.sql.st");
26
	private final Resource xsltFile = new ClassPathResource("/eu/dnetlib/enabling/datasources/repo_2_is.xslt");
27

    
28
	private String eprParam = "repoEpr";
29

    
30
	@javax.annotation.Resource
31
	private UniqueServiceLocator serviceLocator;
32

    
33
	private XSLTMappedResultSetFactory xsltMappedResultSetFactory;
34

    
35
	private static final Log log = LogFactory.getLog(FindComplianceRepositoriesJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
36

    
37
	@Override
38
	protected String execute(final NodeToken token) throws Exception {
39
		final StringTemplate st = new StringTemplate(IOUtils.toString(sqlSelectDatasourcesTmpl.getInputStream()));
40
		// st.setAttribute(
41
		// "condition",
42
		// "datasourceclass = 'entityregistry' OR (openairecompatibilityclass IS NOT null AND openairecompatibilityclass != 'UNKNOWN' AND openairecompatibilityclass != 'notCompatible')");
43
		final String sql = st.toString();
44
		final String xslt = IOUtils.toString(xsltFile.getInputStream());
45

    
46
		log.debug("Executing query: " + sql);
47

    
48
		final W3CEndpointReference epr = serviceLocator.getService(DatabaseService.class).searchSQL(dbName, sql);
49
		final W3CEndpointReference mapped = xsltMappedResultSetFactory.createMappedResultSet(epr, xslt);
50

    
51
		token.getEnv().setTransientAttribute(getEprParam(), mapped);
52

    
53
		return Arc.DEFAULT_ARC;
54
	}
55

    
56
	public String getDbName() {
57
		return dbName;
58
	}
59

    
60
	public void setDbName(final String dbName) {
61
		this.dbName = dbName;
62
	}
63

    
64
	public XSLTMappedResultSetFactory getXsltMappedResultSetFactory() {
65
		return xsltMappedResultSetFactory;
66
	}
67

    
68
	public void setXsltMappedResultSetFactory(final XSLTMappedResultSetFactory xsltMappedResultSetFactory) {
69
		this.xsltMappedResultSetFactory = xsltMappedResultSetFactory;
70
	}
71

    
72
	public String getEprParam() {
73
		return eprParam;
74
	}
75

    
76
	public void setEprParam(final String eprParam) {
77
		this.eprParam = eprParam;
78
	}
79

    
80
}
(2-2/21)