org.xmind.core.internal.zip.ZipFileInputSource Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xmindjbehaveplugin Show documentation
Show all versions of xmindjbehaveplugin Show documentation
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 extends ZipEntry> entries;
/**
* @param entries
*/
public EntryIterAdapter(Enumeration extends ZipEntry> 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