dnet-core/dnet-core-components/src/main/java/eu/dnetlib/enabling/is/store/BulkResourceImporter.java

116 lines
2.8 KiB
Java

package eu.dnetlib.enabling.is.store;
import org.springframework.beans.factory.annotation.Required;
import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
import eu.dnetlib.enabling.is.registry.schema.OpaqueResourceValidator;
import eu.dnetlib.enabling.is.registry.schema.ValidationException;
import eu.dnetlib.enabling.is.store.rmi.ISStoreException;
import eu.dnetlib.enabling.is.store.rmi.ISStoreService;
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
import eu.dnetlib.enabling.tools.OpaqueResource;
import eu.dnetlib.enabling.tools.XQueryUtils;
/**
* This class implements a bulk resource import, i.e. importing stuff straight into the store, bypassing checks and policies imposed by the
* registry service.
*
* TODO: move from registry based to store based.
*
* @author marko
*
*/
public class BulkResourceImporter {
/**
* xquery utils, needed to map resources with the xmldb collection names.
*/
private XQueryUtils xqueryUtils;
/**
* service locator.
*/
private UniqueServiceLocator serviceLocator;
/**
* resource validator.
*/
private OpaqueResourceValidator resourceValidator;
/**
* set to false to skip validation.
*/
private boolean validating = true;
/**
* bulk loading enabled.
*/
private boolean enabled = true;
/**
* register a resource bypassing the checks.
*
* @param resource
* a resource
* @throws ISRegistryException
* could happen
*/
public void importResource(final OpaqueResource resource) throws ISRegistryException {
try {
if (validating) {
resourceValidator.validate(resource);
}
serviceLocator.getService(ISStoreService.class, true).insertXML(xqueryUtils.getFileName(resource), xqueryUtils.getCollectionAbsPath(resource),
resource.asString());
} catch (final ISStoreException e) {
throw new ISRegistryException(e);
} catch (final ValidationException e) {
throw new ISRegistryException(e);
}
}
public XQueryUtils getXqueryUtils() {
return xqueryUtils;
}
@Required
public void setXqueryUtils(final XQueryUtils xqueryUtils) {
this.xqueryUtils = xqueryUtils;
}
@Required
public void setResourceValidator(final OpaqueResourceValidator resourceValidator) {
this.resourceValidator = resourceValidator;
}
public OpaqueResourceValidator getResourceValidator() {
return resourceValidator;
}
public void setValidating(final boolean validating) {
this.validating = validating;
}
public boolean isValidating() {
return validating;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(final boolean enabled) {
this.enabled = enabled;
}
public UniqueServiceLocator getServiceLocator() {
return serviceLocator;
}
@Required
public void setServiceLocator(final UniqueServiceLocator serviceLocator) {
this.serviceLocator = serviceLocator;
}
}