package eu.dnetlib.iis.wf.export.actionmanager.entity.facade;
import static eu.dnetlib.iis.common.WorkflowRuntimeParameters.DNET_SERVICE_CLIENT_CONNECTION_TIMEOUT;
import static eu.dnetlib.iis.common.WorkflowRuntimeParameters.DNET_SERVICE_CLIENT_READ_TIMEOUT;
import static eu.dnetlib.iis.common.WorkflowRuntimeParameters.DNET_SERVICE_CONNECTION_TIMEOUT_DEFAULT_VALUE;
import static eu.dnetlib.iis.common.WorkflowRuntimeParameters.DNET_SERVICE_READ_TIMEOUT_DEFAULT_VALUE;
import static eu.dnetlib.iis.wf.export.actionmanager.ExportWorkflowRuntimeParameters.EXPORT_ENTITY_MDSTORE_SERVICE_LOCATION;
import java.security.InvalidParameterException;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import eu.dnetlib.iis.common.WorkflowRuntimeParameters;
import eu.dnetlib.iis.common.java.ProcessUtils;
/**
* Web service based {@link MDStoreFacadeFactory} implementation.
* @author mhorst
*
*/
public class WebServiceMDStoreFacadeFactory implements MDStoreFacadeFactory {
// -------------------- LOGIC -------------------------
@Override
public MDStoreFacade create(Map<String, String> parameters) {
String mdStoreLocation = ProcessUtils.getParameterValue(EXPORT_ENTITY_MDSTORE_SERVICE_LOCATION, null, parameters);
if (StringUtils.isBlank(mdStoreLocation) || WorkflowRuntimeParameters.UNDEFINED_NONEMPTY_VALUE.equals(mdStoreLocation)) {
throw new InvalidParameterException("unable to export document entities to action manager, " +
"unknown MDStore service location. "
+ "Required parameter '" + EXPORT_ENTITY_MDSTORE_SERVICE_LOCATION + "' is missing!");
} else {
return new WebServiceMDStoreFacade(mdStoreLocation,
Long.parseLong(WorkflowRuntimeParameters.getParamValue(DNET_SERVICE_CLIENT_READ_TIMEOUT, DNET_SERVICE_READ_TIMEOUT_DEFAULT_VALUE, parameters)),
Long.parseLong(WorkflowRuntimeParameters.getParamValue(DNET_SERVICE_CLIENT_CONNECTION_TIMEOUT, DNET_SERVICE_CONNECTION_TIMEOUT_DEFAULT_VALUE, parameters)));
}
}
}