dnet-core/dnet-data-services/src/main/java/eu/dnetlib/data/mdstore/modular/action/PluginAction.java

42 lines
1.3 KiB
Java

package eu.dnetlib.data.mdstore.modular.action;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import eu.dnetlib.data.mdstore.MDStoreServiceException;
import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
import eu.dnetlib.enabling.tools.blackboard.BlackboardServerHandler;
public class PluginAction extends AbstractMDStoreAction {
private static final Log log = LogFactory.getLog(PluginAction.class);
@Autowired
private MDStorePluginEnumerator pluginEnumerator;
@Override
protected void executeAsync(final BlackboardServerHandler handler, final BlackboardJob job) throws MDStoreServiceException {
final String name = job.getParameters().get("plugin.name");
final Map<String, MDStorePlugin> plugins = pluginEnumerator.getAll();
if ((plugins == null) || plugins.isEmpty() || !plugins.containsKey(name)) throw new MDStoreServiceException("Unable to find plugin: " + name);
log.info("running MDStore plugin: " + name);
plugins.get(name).run(getDao(), job.getParameters(), new DoneCallback() {
@Override
public void call(final Map<String, String> params) {
job.getParameters().putAll(params);
handler.done(job);
}
});
}
}