package eu.dnetlib.iis.wf.importer.stream.project; 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 java.net.MalformedURLException; import java.util.Map; import com.google.common.base.Preconditions; import eu.dnetlib.iis.common.WorkflowRuntimeParameters; import eu.dnetlib.iis.wf.importer.facade.ServiceFacadeFactory; /** * Url based streaming facade factory. * @author mhorst * */ public class UrlStreamingFacadeFactory implements ServiceFacadeFactory<StreamingFacade> { protected static final String IMPORT_PROJECT_STREAM_ENDPOINT_URL = "import.project.stream.endpoint.url"; protected static final String IMPORT_PROJECT_STREAM_COMPRESS = "import.project.stream.compress"; //------------------------ LOGIC -------------------------- @Override public StreamingFacade instantiate(Map<String, String> parameters) { try { Preconditions.checkArgument(parameters.containsKey(IMPORT_PROJECT_STREAM_ENDPOINT_URL), "unknown projects stream endpoint url, required parameter '%s' is missing!", IMPORT_PROJECT_STREAM_ENDPOINT_URL); boolean compress = false; if (parameters.containsKey(IMPORT_PROJECT_STREAM_COMPRESS)) { compress = Boolean.parseBoolean(parameters.get(IMPORT_PROJECT_STREAM_COMPRESS)); } return new UrlStreamingFacade(parameters.get(IMPORT_PROJECT_STREAM_ENDPOINT_URL), compress, Integer.parseInt(WorkflowRuntimeParameters.getParamValue(DNET_SERVICE_CLIENT_READ_TIMEOUT, DNET_SERVICE_READ_TIMEOUT_DEFAULT_VALUE, parameters)), Integer.parseInt(WorkflowRuntimeParameters.getParamValue(DNET_SERVICE_CLIENT_CONNECTION_TIMEOUT, DNET_SERVICE_CONNECTION_TIMEOUT_DEFAULT_VALUE, parameters))); } catch (MalformedURLException e) { throw new RuntimeException(e); } } }