Package edu.stanford.bmir.protege.web.server.owlapi

Source Code of edu.stanford.bmir.protege.web.server.owlapi.ZipArchiveProjectSourcesExtractor$ExtractedZipArchiveProjectSources

package edu.stanford.bmir.protege.web.server.owlapi;

import com.google.common.base.Optional;
import com.google.common.collect.Lists;
import edu.stanford.bmir.protege.web.server.logging.WebProtegeLogger;
import edu.stanford.bmir.protege.web.server.logging.WebProtegeLoggerManager;
import edu.stanford.bmir.protege.web.server.util.OntologyDocumentFileFilter;
import edu.stanford.bmir.protege.web.server.util.TempFileFactory;
import edu.stanford.bmir.protege.web.server.util.ZipFileExtractor;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.semanticweb.owlapi.io.FileDocumentSource;
import org.semanticweb.owlapi.io.OWLOntologyDocumentSource;
import org.semanticweb.owlapi.model.OWLOntologyIRIMapper;
import org.semanticweb.owlapi.util.AutoIRIMapper;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collection;

/**
* @author Matthew Horridge,
*         Stanford University,
*         Bio-Medical Informatics Research Group
*         Date: 19/02/2014
*/
public class ZipArchiveProjectSourcesExtractor implements RawProjectSourcesExtractor {

    private TempFileFactory tempFileFactory;

    private RootOntologyDocumentFileMatcher rootOntologyDocumentFileMatcher;

    private static WebProtegeLogger logger = WebProtegeLoggerManager.get(ZipArchiveProjectSourcesExtractor.class);

    public ZipArchiveProjectSourcesExtractor(TempFileFactory tempFileFactory, RootOntologyDocumentFileMatcher rootOntologyDocumentFileMatcher) {
        this.tempFileFactory = tempFileFactory;
        this.rootOntologyDocumentFileMatcher = rootOntologyDocumentFileMatcher;
    }

    @Override
    public RawProjectSources extractProjectSources(File inputFile) throws IOException {
        return extractZipFile(inputFile);
    }


    private RawProjectSources extractZipFile(File zipFile) throws IOException {
        File tempDirectory = tempFileFactory.createTempDirectory();
        ZipFileExtractor extractor = new ZipFileExtractor();
        extractor.extractFileToDirectory(zipFile, tempDirectory);
        Optional<File> rootOntologyDocument = getRootOntologyDocumentFile(tempDirectory);
        if(!rootOntologyDocument.isPresent()) {
            throw new FileNotFoundException(rootOntologyDocumentFileMatcher.getErrorMessage());
        }
        return new ExtractedZipArchiveProjectSources(rootOntologyDocument.get(), tempDirectory);
    }

    @SuppressWarnings("unchecked")
    private Optional<File> getRootOntologyDocumentFile(File tempDirectory) {
        Collection<File> ontologyDocumentFiles = FileUtils.listFiles(tempDirectory,
                new OntologyDocumentFileFilter(),
                TrueFileFilter.INSTANCE);
        for(File file : ontologyDocumentFiles) {
            if(rootOntologyDocumentFileMatcher.isRootOntologyDocument(file)) {
                return Optional.of(file);
            }
        }
        return Optional.absent();
    }

    private static class ExtractedZipArchiveProjectSources implements RawProjectSources {

        private File rootOntologyDocument;

        private File baseDirectory;

        private ExtractedZipArchiveProjectSources(File rootOntologyDocument, File baseDirectory) {
            this.rootOntologyDocument = rootOntologyDocument;
            this.baseDirectory = baseDirectory;
        }

        @Override
        public Collection<OWLOntologyDocumentSource> getDocumentSources() {
            return Lists.<OWLOntologyDocumentSource>newArrayList(new FileDocumentSource(rootOntologyDocument));
        }

        @Override
        public OWLOntologyIRIMapper getOntologyIRIMapper() {
            return new AutoIRIMapper(baseDirectory, true);
        }

        @Override
        public void cleanUpTemporaryFiles() throws IOException {
            FileUtils.deleteDirectory(baseDirectory);
        }
    }

}
TOP

Related Classes of edu.stanford.bmir.protege.web.server.owlapi.ZipArchiveProjectSourcesExtractor$ExtractedZipArchiveProjectSources

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.