package fr.mcc.ginco.cli;
import java.io.File;
import java.io.IOException;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import fr.mcc.ginco.beans.Language;
import fr.mcc.ginco.beans.Thesaurus;
import fr.mcc.ginco.exceptions.BusinessException;
import fr.mcc.ginco.exports.ISKOSExportService;
import fr.mcc.ginco.services.ILanguagesService;
import fr.mcc.ginco.services.IMistralRevService;
import fr.mcc.ginco.services.IThesaurusService;
@Service
public class CliExporter {
private static Logger log = LoggerFactory.getLogger(App.class);
@Inject
@Named("skosExportService")
private ISKOSExportService skosExportService;
@Inject
@Named("thesaurusService")
private IThesaurusService thesaurusService;
@Inject
@Named("mistralRevService")
private IMistralRevService mistralRevService;
@Inject
@Named("languagesService")
private ILanguagesService languagesService;
@Value("${ginco.default.language}")
private String defaultLang;
public void exportSKOS(String thesaurusId, String outputFile) {
Thesaurus targetThesaurus = thesaurusService
.getThesaurusById(thesaurusId);
if (targetThesaurus != null) {
log.info("Skos exporting : " + targetThesaurus.getTitle());
File skosFile = skosExportService.getSKOSExport(targetThesaurus);
File dest = new File(outputFile);
try {
FileUtils.copyFile(skosFile, dest);
log.info("Exported " + outputFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
throw new BusinessException("Unable to find thesaurus id " + thesaurusId, "unable-to-find-thesaurus");
}
}
public void exportRevisions(String thesaurusId, String outputFile, long timestamp) {
Thesaurus targetThesaurus = thesaurusService
.getThesaurusById(thesaurusId);
if (targetThesaurus != null) {
log.info("Revisions exporting : " + targetThesaurus.getTitle());
Language lang = languagesService.getLanguageById(defaultLang);
File dest = new File(outputFile);
try {
File resFile = mistralRevService.getRevisions(targetThesaurus, timestamp, lang);
FileUtils.copyFile(resFile, dest);
log.info("Exported " + outputFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
throw new BusinessException("Unable to find thesaurus id " + thesaurusId, "unable-to-find-thesaurus");
}
}
}