Project

General

Profile

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

    
3
import javax.annotation.Resource;
4

    
5
import com.googlecode.sarasvati.Arc;
6
import com.googlecode.sarasvati.NodeToken;
7
import eu.dnetlib.enabling.database.rmi.DatabaseService;
8
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
9
import eu.dnetlib.msro.workflows.nodes.AsyncJobNode;
10
import org.apache.commons.lang.StringUtils;
11

    
12
public class ExecuteSqlFromEnvJobNode extends AsyncJobNode {
13

    
14
	private String db;
15
	private String dbParam;
16
	private String dbProperty;
17

    
18
	private String sqlParamName;
19

    
20
	@Resource
21
	private UniqueServiceLocator serviceLocator;
22

    
23
	@Override
24
	protected String execute(final NodeToken token) throws Exception {
25
		String sql = token.getEnv().getAttribute(sqlParamName);
26
		if (StringUtils.isBlank(sql)) throw new IllegalArgumentException("Missing value in env attribute named: " + sqlParamName);
27
		serviceLocator.getService(DatabaseService.class).updateSQL(findDb(token), sql);
28

    
29
		return Arc.DEFAULT_ARC;
30
	}
31

    
32
	private String findDb(final NodeToken token) {
33
		if (dbParam != null && !dbParam.isEmpty()) {
34
			return token.getEnv().getAttribute(dbParam);
35
		} else if (dbProperty != null && !dbProperty.isEmpty()) {
36
			return getPropertyFetcher().getProperty(dbProperty);
37
		} else {
38
			return db;
39
		}
40
	}
41

    
42
	public String getDb() {
43
		return db;
44
	}
45

    
46
	public void setDb(final String db) {
47
		this.db = db;
48
	}
49

    
50
	public String getDbParam() {
51
		return dbParam;
52
	}
53

    
54
	public void setDbParam(final String dbParam) {
55
		this.dbParam = dbParam;
56
	}
57

    
58
	public String getDbProperty() {
59
		return dbProperty;
60
	}
61

    
62
	public void setDbProperty(final String dbProperty) {
63
		this.dbProperty = dbProperty;
64
	}
65

    
66
	public String getSqlParamName() {
67
		return sqlParamName;
68
	}
69

    
70
	public void setSqlParamName(final String sqlParamName) {
71
		this.sqlParamName = sqlParamName;
72
	}
73
}
(1-1/4)