97 lines
3.6 KiB
Java
97 lines
3.6 KiB
Java
package eu.dnetlib.data.collective.transformation;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.dom4j.DocumentException;
|
|
|
|
import eu.dnetlib.data.collective.transformation.engine.functions.DateVocabulary;
|
|
import eu.dnetlib.data.collective.transformation.engine.functions.IVocabulary;
|
|
import eu.dnetlib.data.collective.transformation.engine.functions.PersonVocabulary;
|
|
// import eu.dnetlib.data.collective.transformation.engine.functions.PmcVocabulary;
|
|
import eu.dnetlib.data.collective.transformation.engine.functions.Vocabulary;
|
|
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpDocumentNotFoundException;
|
|
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
|
|
import eu.dnetlib.enabling.locators.DefaultUniqueServiceLocator;
|
|
|
|
/**
|
|
* @author jochen
|
|
*
|
|
*/
|
|
public class VocabularyRegistry {
|
|
|
|
private static final Log log = LogFactory.getLog(VocabularyRegistry.class);
|
|
private static final String dateVocabularyName = "DateISO8601";
|
|
// private static final String pmcVocabularyName = "PMC";
|
|
private static final String personVocabularyName = "Person";
|
|
|
|
@Resource
|
|
private DefaultUniqueServiceLocator uniqueServiceLocator;
|
|
private VocabularyMap vocabularies;
|
|
private boolean isInitialized = false;
|
|
|
|
public void init() {
|
|
String vocabularyQueryPrefix = "collection('/db/DRIVER/VocabularyDSResources/VocabularyDSResourceType')//RESOURCE_PROFILE";
|
|
String targetVocabulary = "";
|
|
for (String key : vocabularies.getMap().keySet()) {
|
|
try {
|
|
Vocabulary v = vocabularies.getMap().get(key);
|
|
targetVocabulary = vocabularies.getMap().get(key).getName();
|
|
v.setResource(new eu.dnetlib.common.profile.Resource(uniqueServiceLocator.getIsLookupService().getResourceProfileByQuery(
|
|
vocabularyQueryPrefix + "[.//VOCABULARY_NAME='" + targetVocabulary + "' or .//VOCABULARY_NAME/@code='" + targetVocabulary + "'] ")));
|
|
} catch (ISLookUpDocumentNotFoundException e) {
|
|
throw new IllegalStateException("vocabulary profile not found for name or code " + targetVocabulary, e);
|
|
} catch (ISLookUpException e) {
|
|
log.fatal("ISLookupException in VocabularyRegistry, key = " + key + " : ", e);
|
|
throw new IllegalStateException(e);
|
|
} catch (DocumentException e) {
|
|
log.fatal("DocumentException in VocabularyRegistry, key = " + key + " : ", e);
|
|
throw new IllegalStateException(e);
|
|
}
|
|
}
|
|
vocabularies.getMap().put(dateVocabularyName, new DateVocabulary());
|
|
vocabularies.getMap().put(personVocabularyName, new PersonVocabulary());
|
|
// PmcVocabulary pmcVocab = new PmcVocabulary();
|
|
// pmcVocab.setMappingFile(mappingFile);
|
|
// vocabularies.getMap().put(pmcVocabularyName, pmcVocab);
|
|
isInitialized = true;
|
|
log.info("VocabularyRegistry is initialized.");
|
|
}
|
|
|
|
public IVocabulary getVocabulary(final String aVocabularyName) {
|
|
if (!isInitialized) {
|
|
init();
|
|
}
|
|
return vocabularies.getMap().get(aVocabularyName);
|
|
}
|
|
|
|
public VocabularyMap getVocabularies() {
|
|
if (!isInitialized) {
|
|
init();
|
|
}
|
|
return vocabularies;
|
|
}
|
|
|
|
public void setVocabularies(final VocabularyMap vocabularies) {
|
|
this.vocabularies = vocabularies;
|
|
}
|
|
|
|
public void addVocabulary(final String aVocabularyName, final Vocabulary aVocabulary) {
|
|
this.vocabularies.getMap().put(aVocabularyName, aVocabulary);
|
|
}
|
|
|
|
public void removeVocabulary(final String aVocabulary) {
|
|
this.vocabularies.getMap().remove(aVocabulary);
|
|
}
|
|
|
|
public DefaultUniqueServiceLocator getUniqueServiceLocator() {
|
|
return uniqueServiceLocator;
|
|
}
|
|
|
|
public void setUniqueServiceLocator(final DefaultUniqueServiceLocator uniqueServiceLocator) {
|
|
this.uniqueServiceLocator = uniqueServiceLocator;
|
|
}
|
|
|
|
}
|