package won.protocol.util.linkeddata;
import org.apache.jena.query.Dataset;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.URI;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* User: ypanchenko
* Date: 06.11.2015
*/
public class CachingAllButListsLinkedDataSource extends CachingLinkedDataSource
{
//TODO instead of predefined resources should look into RDF and decide whether it is a list or not
//TODO actually the connection itself should also not be cached - i.e. status can be updated
private Pattern pattern_connections_list_uri = Pattern.compile("(.+)/connections(/)?");
private final Logger logger = LoggerFactory.getLogger(getClass());
@Override
public Dataset getDataForResource(URI resource) {
if (isCachingAllowed(resource)) {
return super.getDataForResource(resource);
} else {
Dataset dataset = linkedDataRestClient.readResourceData(resource);
//TODO debug log level
logger.info("connections list uri request performed");
return dataset;
}
}
@Override
public Dataset getDataForResource(URI resource, URI requesterWebID) {
if (isCachingAllowed(resource)) {
return super.getDataForResource(resource, requesterWebID);
} else {
Dataset dataset = linkedDataRestClient.readResourceData(resource, requesterWebID);
logger.info("connections list uri request performed");
return dataset;
}
}
private boolean isCachingAllowed(final Pattern noCachePattern, final URI resource) {
Matcher matcher = noCachePattern.matcher(resource.toString());
if (matcher.matches()) {
return false;
}
return true;
}
private boolean isCachingAllowed(final URI resource) {
return isCachingAllowed(pattern_connections_list_uri, resource);
}
}