ckan2zenodo-library/src/main/java/org/gcube/data/publishing/ckan2zenodo/TransformerManager.java

46 lines
1.3 KiB
Java

package org.gcube.data.publishing.ckan2zenodo;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.gcube.common.resources.gcore.GenericResource;
import org.gcube.data.publishing.ckan2zenodo.commons.IS;
import org.gcube.data.publishing.ckan2zenodo.model.faults.ConfigurationException;
import lombok.Synchronized;
import org.gcube.data.publishing.ckan2zenodo.model.parsing.Mappings;
public class TransformerManager {
private static DocumentBuilder builder=null;
@Synchronized
private static DocumentBuilder getBuilder() throws ParserConfigurationException {
if(builder==null) {
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
}
return builder;
}
public Translator getByProfile(String profile) throws ConfigurationException {
for(GenericResource r: IS.queryForGenericResources("Ckan-Zenodo-Mappings")){
if (r.profile().name().equals(profile)) {
Mappings m = IS.readMappings(r);
if(m == null) return new Translator();
else return new Translator(m);
}
}
throw new ConfigurationException("No specific mapping for the catalogue item has been configured. "
+ "By continuing with the upload some metadata might not be upload to Zenodo.");
}
}