Project

General

Profile

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

    
3
import java.util.Map;
4

    
5
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
6
import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
7
import eu.dnetlib.msro.workflows.nodes.blackboard.BlackboardWorkflowJobListener;
8
import eu.dnetlib.msro.workflows.nodes.download.DownloadFromMetadataJobNode;
9
import eu.dnetlib.msro.workflows.procs.Env;
10
import eu.dnetlib.msro.workflows.procs.Token;
11
import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
12
import eu.dnetlib.rmi.data.ObjectStoreService;
13
import org.apache.commons.codec.binary.Base64;
14
import org.apache.commons.lang3.StringUtils;
15
import org.apache.commons.logging.Log;
16
import org.apache.commons.logging.LogFactory;
17
import org.springframework.beans.factory.annotation.Autowired;
18

    
19
public class DownloadFromMetadataOpenaire extends DownloadFromMetadataJobNode {
20

    
21
	private static final Log log = LogFactory.getLog(DownloadFromMetadataOpenaire.class);
22

    
23
	private String basepath;
24

    
25
	@Autowired
26
	private UniqueServiceLocator serviceLocator;
27

    
28
	@Override
29
	protected void prepareJob(final BlackboardJob job, final Token token) throws Exception {
30
		if (this.getBasepath() != null && this.getBasepath().length() > 0) {
31
			job.getParameters().put("basePath", this.basepath);
32
		}
33

    
34
		final int size = this.serviceLocator.getService(ObjectStoreService.class).getSize(getObjectStoreID());
35
		log.debug(String.format("objectStore %s has size %s", getObjectStoreID(), size));
36
		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "oldTotal", size);
37

    
38
		super.prepareJob(job, token);
39
	}
40

    
41
	/*
42
	 * (non-Javadoc)
43
	 *
44
	 * @see eu.dnetlib.msro.workflows.nodes.BlackboardJobNode#generateBlackboardListener(com.googlecode.sarasvati.Engine,
45
	 * com.googlecode.sarasvati.NodeToken)
46
	 */
47
	@Override
48
	protected BlackboardWorkflowJobListener generateBlackboardListener(final Token token) {
49
		return new BlackboardWorkflowJobListener(token) {
50

    
51
			@Override
52
			protected void responseToEnv(final Env env, final Map<String, String> responseParams) {
53
				env.setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "total", responseParams.get("total"));
54

    
55
				final String base64 = responseParams.get("report");
56
				if (StringUtils.isNotBlank(base64) && Base64.isBase64(base64.getBytes())) {
57
					final String report = new String(Base64.decodeBase64(base64.getBytes()));
58
					log.info("found download report");
59
					log.debug(report);
60
					env.setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "report", report);
61
				} else {
62
					log.warn("unable to find or decode download report");
63
				}
64
			}
65
		};
66
	}
67

    
68
	/**
69
	 * @return the basepath
70
	 */
71
	public String getBasepath() {
72
		return this.basepath;
73
	}
74

    
75
	/**
76
	 * @param basepath the basepath to set
77
	 */
78
	public void setBasepath(final String basepath) {
79
		this.basepath = basepath;
80
	}
81

    
82
}
(2-2/6)