package eu.esdihumboldt.hale.io.codelist.skos.reader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.util.Locale;
import eu.esdihumboldt.hale.common.codelist.CodeList;
import eu.esdihumboldt.hale.common.codelist.io.CodeListReader;
import eu.esdihumboldt.hale.common.core.io.IOProviderConfigurationException;
import eu.esdihumboldt.hale.common.core.io.ProgressIndicator;
import eu.esdihumboldt.hale.common.core.io.impl.AbstractImportProvider;
import eu.esdihumboldt.hale.common.core.io.report.IOReport;
import eu.esdihumboldt.hale.common.core.io.report.IOReporter;
import eu.esdihumboldt.hale.common.core.io.report.impl.IOMessageImpl;
/**
* Reads a SKOS code list from rdf file or url
*
* @author Arun
*/
public class SkosCodeListReader extends AbstractImportProvider implements CodeListReader {
private CodeList codelist;
private String language;
@Override
public boolean isCancelable() {
return false;
}
@Override
protected IOReport execute(ProgressIndicator progress, IOReporter reporter)
throws IOProviderConfigurationException, IOException {
progress.begin("Loading SKOS code list", ProgressIndicator.UNKNOWN);
try {
this.language = getLangauge();
URI loc = getSource().getLocation();
InputStream in = getSource().getInput();
codelist = new SkosCodeList(in, loc, this.language);
progress.setCurrentTask("Code list loaded.");
reporter.setSuccess(true);
} catch (Exception ex) {
reporter.error(new IOMessageImpl("Error in loading skos code list", ex));
reporter.setSuccess(false);
}
return reporter;
}
@Override
protected String getDefaultTypeName() {
return "SKOS code list";
}
@Override
public CodeList getCodeList() {
return codelist;
}
/**
* Get language. By default Locale language is used.
*
* @return String
*/
public String getLangauge() {
return Locale.getDefault().getLanguage();
}
}