All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.xmind.core.internal.zip.ZipFileInputSource Maven / Gradle / Ivy

Go to download

Plugin that manages JBehave stories storage in XMind mindmap file, which allows design jBehave tests right after the brainstorm

The newest version!
/* ******************************************************************************
 * Copyright (c) 2006-2012 XMind Ltd. and others.
 * 
 * This file is a part of XMind 3. XMind releases 3 and
 * above are dual-licensed under the Eclipse Public License (EPL),
 * which is available at http://www.eclipse.org/legal/epl-v10.html
 * and the GNU Lesser General Public License (LGPL), 
 * which is available at http://www.gnu.org/licenses/lgpl.html
 * See http://www.xmind.net/license.html for details.
 * 
 * Contributors:
 *     XMind Ltd. - initial API and implementation
 *******************************************************************************/
package org.xmind.core.internal.zip;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

import org.xmind.core.Core;
import org.xmind.core.io.IInputSource;

public class ZipFileInputSource implements IInputSource {

    private static class EntryIterAdapter implements Iterator {

        private Enumeration entries;

        /**
         * @param entries
         */
        public EntryIterAdapter(Enumeration entries) {
            super();
            this.entries = entries;
        }

        /*
         * (non-Javadoc)
         * 
         * @see java.util.Iterator#hasNext()
         */
        public boolean hasNext() {
            return entries.hasMoreElements();
        }

        /*
         * (non-Javadoc)
         * 
         * @see java.util.Iterator#next()
         */
        public String next() {
            ZipEntry entry = entries.nextElement();
            if (entry == null)
                return null;
            return entry.getName();
        }

        /*
         * (non-Javadoc)
         * 
         * @see java.util.Iterator#remove()
         */
        public void remove() {
            throw new UnsupportedOperationException();
        }

    }

    private ZipFile zipFile;

    public ZipFileInputSource(ZipFile zipFile) {
        this.zipFile = zipFile;
    }

    public Iterator getEntries() {
        return new EntryIterAdapter(zipFile.entries());
    }

    public boolean hasEntry(String entryName) {
        return zipFile.getEntry(entryName) != null;
    }

    public InputStream getEntryStream(String entryName) {
        ZipEntry entry = zipFile.getEntry(entryName);
        if (entry == null)
            return null;
        try {
            return zipFile.getInputStream(entry);
        } catch (IOException e) {
            Core.getLogger().log(e);
        }
        return null;
    }

    public InputStream openEntryStream(String entryName) throws IOException {
        ZipEntry entry = zipFile.getEntry(entryName);
        if (entry == null)
            throw new FileNotFoundException(entryName);
        return zipFile.getInputStream(entry);
    }

    public boolean isEntryAvailable(String entryName) {
        ZipEntry entry = zipFile.getEntry(entryName);
        return entry != null && !entry.isDirectory();
    }

    public void closeZipFile() {
        try {
            zipFile.close();
        } catch (IOException e) {
            Core.getLogger().log(e);
        }
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.xmind.core.io.IInputSource#getEntrySize(java.lang.String)
     */
    public long getEntrySize(String entryName) {
        ZipEntry entry = zipFile.getEntry(entryName);
        if (entry != null) {
            return entry.getSize();
        }
        return -1;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.xmind.core.io.IInputSource#getEntryTime(java.lang.String)
     */
    public long getEntryTime(String entryName) {
        ZipEntry entry = zipFile.getEntry(entryName);
        if (entry != null) {
            return entry.getTime();
        }
        return -1;
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (obj == this)
            return true;
        if (obj == null || !(obj instanceof ZipFileInputSource))
            return false;
        ZipFileInputSource that = (ZipFileInputSource) obj;
        return this.zipFile.equals(that.zipFile);
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        return this.zipFile.hashCode();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy