AriadnePlus/dnet-ariadneplus-publisher/src/main/java/eu/dnetlib/ariadneplus/publisher/AriadnePlusPublisherHelper....

98 lines
3.2 KiB
Java

package eu.dnetlib.ariadneplus.publisher;
import java.io.IOException;
import java.net.URISyntaxException;
import eu.dnetlib.ariadneplus.jrr.JRRPublisher;
import eu.dnetlib.ariadneplus.virtuoso.VirtuosoClient;
import eu.dnetlib.ariadneplus.virtuoso.VirtuosoClientFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* Created by Alessia Bardi on 11/08/2017.
*
* @author Alessia Bardi
*/
@Component
public class AriadnePlusPublisherHelper {
private static final Log log = LogFactory.getLog(AriadnePlusPublisherHelper.class);
public enum AriadnePlusTargets{
VIRTUOSO, JRR
}
@Autowired
private VirtuosoClientFactory virtuosoClientFactory;
@Autowired
private JRRPublisher jrrPublisher;
public void publish(final String record, final AriadnePlusTargets target) throws AriadnePlusPublisherException {
switch(target){
case VIRTUOSO:
publishVirtuoso(record);
break;
case JRR:
try {
publishJRR(record);
break;
} catch(IOException | URISyntaxException | InterruptedException e){
throw new AriadnePlusPublisherException(e);
}
default: throw new AriadnePlusPublisherException("Target "+target+" not supported yet");
}
}
public long unpublish(final String datasourceInterface, final AriadnePlusTargets target) throws AriadnePlusPublisherException {
long res = 0;
switch(target){
case VIRTUOSO:
res = unpublishVirtuoso(datasourceInterface);
break;
default: throw new AriadnePlusPublisherException("Target "+target+" not supported yet");
}
return res;
}
private void publishVirtuoso(final String record) throws AriadnePlusPublisherException {
log.debug("Publishing on virtuoso");
VirtuosoClient virtuosoClient = this.virtuosoClientFactory.getVirtuosoClient();
virtuosoClient.feed(record);
}
private void publishJRR(final String record)
throws AriadnePlusPublisherException, IOException, URISyntaxException, InterruptedException {
log.debug("Publishing on JRR (registry and catalogue)");
jrrPublisher.register(record);
}
private int unpublishJRR(final String datasourceInterface){
//TODO: for this to work we have to add somewhere the information about the dsInterface from which the resource was initially collected
//Note that this method might not be a good idea if we want to keep the uuid and only update the facets/rels
//maybe it is worth to implement the incremental in the ResourceRegistrator. We slow down things, but it may be worthy...
log.debug("Unpublishing from registry "+datasourceInterface);
//TODO: implement me
throw new UnsupportedOperationException("Not implemented yet");
}
private long unpublishVirtuoso(final String datasourceInterface) {
log.info("Unpublishing from virtuoso "+datasourceInterface);
VirtuosoClient virtuosoClient = this.virtuosoClientFactory.getVirtuosoClient();
long deletedTriples = virtuosoClient.drop(datasourceInterface);
log.info("# triples deleted for "+datasourceInterface+": "+deletedTriples);
return deletedTriples;
}
public void dropRegistry(){
log.debug("Dropping JRR");
//TODO: implement me
throw new UnsupportedOperationException("Not implemented yet");
}
}