package org.aksw.jena_sparql_api.sparql_path.core;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import org.aksw.jena_sparql_api.cache.core.QueryExecutionFactoryCacheEx;
import org.aksw.jena_sparql_api.cache.extra.CacheFrontend;
import org.aksw.jena_sparql_api.core.QueryExecutionFactory;
import org.aksw.jena_sparql_api.http.QueryExecutionFactoryHttp;
import org.aksw.jena_sparql_api.pagination.core.QueryExecutionFactoryPaginated;
import org.aksw.jena_sparql_api.retry.core.QueryExecutionFactoryRetry;
public class SparqlServiceFactoryOldImpl
implements SparqlServiceFactoryOld
{
private Map<String, QueryExecutionFactory> keyToSparqlService = new HashMap<String, QueryExecutionFactory>();
private CacheFrontend cacheFrontend = null;
public SparqlServiceFactoryOldImpl(CacheFrontend cacheFrontend) {
this.cacheFrontend = cacheFrontend;
}
@Override
public QueryExecutionFactory createSparqlService(String serviceUri, Collection<String> defaultGraphUris) {
Set<String> tmp = new TreeSet<String>(defaultGraphUris);
String key = serviceUri + tmp;
QueryExecutionFactory result;
result = keyToSparqlService.get(key);
if(result == null) {
result = new QueryExecutionFactoryHttp(serviceUri, defaultGraphUris);
//result = new QueryExecutionFactoryPag
// result = new QueryExecutionFactoryDelay(result, 1000l); // 1 second delay between queries
result = new QueryExecutionFactoryRetry(result, 3, 5000l); // 3 retries, 5 second delay between retries
if(cacheFrontend != null) {
result = new QueryExecutionFactoryCacheEx(result, cacheFrontend);
}
result = new QueryExecutionFactoryPaginated(result);
keyToSparqlService.put(key, result);
}
return result;
}
}