|
From: <pat...@us...> - 2011-02-11 13:38:43
|
Revision: 1206
http://cishell.svn.sourceforge.net/cishell/?rev=1206&view=rev
Author: pataphil
Date: 2011-02-11 13:38:37 +0000 (Fri, 11 Feb 2011)
Log Message:
-----------
* Added CollectionUtilities.collectionEnumerationElements
* Added MapUtilities.mapKeyToIndices
* Added ZipIOException and ZipUtilities
* Not reviewed.
Modified Paths:
--------------
trunk/core/org.cishell.utilities/src/org/cishell/utilities/CollectionUtilities.java
trunk/core/org.cishell.utilities/src/org/cishell/utilities/MapUtilities.java
Added Paths:
-----------
trunk/core/org.cishell.utilities/src/org/cishell/utilities/ZipIOException.java
trunk/core/org.cishell.utilities/src/org/cishell/utilities/ZipUtilities.java
Modified: trunk/core/org.cishell.utilities/src/org/cishell/utilities/CollectionUtilities.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/CollectionUtilities.java 2011-02-11 13:37:40 UTC (rev 1205)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/CollectionUtilities.java 2011-02-11 13:38:37 UTC (rev 1206)
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Dictionary;
+import java.util.Enumeration;
import java.util.Iterator;
public class CollectionUtilities {
@@ -31,4 +32,13 @@
public static<T> T get(Collection<T> values, int index) {
return (T) values.toArray()[index];
}
+
+ public static<T> Collection<T> collectionEnumerationElements(
+ Enumeration<T> source, Collection<T> target) {
+ while (source.hasMoreElements()) {
+ target.add(source.nextElement());
+ }
+
+ return target;
+ }
}
Modified: trunk/core/org.cishell.utilities/src/org/cishell/utilities/MapUtilities.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/MapUtilities.java 2011-02-11 13:37:40 UTC (rev 1205)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/MapUtilities.java 2011-02-11 13:38:37 UTC (rev 1206)
@@ -64,6 +64,16 @@
return valuesByIndex;
}
+ public static<K> Map<K, Integer> mapKeyToIndices(List<K> keys) {
+ Map<K, Integer> indexByKeys = new HashMap<K, Integer>();
+
+ for (int ii = 0; ii < keys.size(); ii++) {
+ indexByKeys.put(keys.get(ii), ii);
+ }
+
+ return indexByKeys;
+ }
+
public static<K, V> void valuesByKeys(
Map<K, V> items, Collection<K> keys, Collection<V> target) {
for (K key : keys) {
Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/ZipIOException.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/ZipIOException.java (rev 0)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/ZipIOException.java 2011-02-11 13:38:37 UTC (rev 1206)
@@ -0,0 +1,21 @@
+package org.cishell.utilities;
+
+public class ZipIOException extends Exception {
+ private static final long serialVersionUID = 1L;
+
+ public ZipIOException() {
+ super();
+ }
+
+ public ZipIOException(String arg0) {
+ super(arg0);
+ }
+
+ public ZipIOException(Throwable arg0) {
+ super(arg0);
+ }
+
+ public ZipIOException(String arg0, Throwable arg1) {
+ super(arg0, arg1);
+ }
+}
\ No newline at end of file
Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/ZipUtilities.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/ZipUtilities.java (rev 0)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/ZipUtilities.java 2011-02-11 13:38:37 UTC (rev 1206)
@@ -0,0 +1,143 @@
+package org.cishell.utilities;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipOutputStream;
+
+public class ZipUtilities {
+ static final int BUFFER_SIZE = 2048;
+
+ public static void zipFiles(Collection<File> files, ZipOutputStream zipOut)
+ throws ZipIOException {
+ try {
+ for (File file : files) {
+ writeFileToZipFile(file, zipOut);
+ }
+
+ zipOut.close();
+ } catch (IOException e) {
+ throw new ZipIOException(e.getMessage(), e);
+ }
+ }
+
+ public static void zipFiles(Collection<File> files, File targetZipFile)
+ throws ZipIOException {
+ try {
+ zipFiles(
+ files,
+ new ZipOutputStream(
+ new BufferedOutputStream(new FileOutputStream(targetZipFile))));
+ } catch (FileNotFoundException e) {
+ throw new ZipIOException(e.getMessage(), e);
+ }
+ }
+
+ public static void writeFileToZipFile(File file, ZipOutputStream zipOut)
+ throws ZipIOException {
+ try {
+ byte data[] = new byte[BUFFER_SIZE];
+ BufferedInputStream fileInput =
+ new BufferedInputStream(new FileInputStream(file), BUFFER_SIZE);
+ ZipEntry entry = new ZipEntry(file.getName());
+ zipOut.putNextEntry(entry);
+ int count;
+
+ while ((count = fileInput.read(data, 0, BUFFER_SIZE)) != -1) {
+ zipOut.write(data, 0, count);
+ }
+
+ fileInput.close();
+ } catch (FileNotFoundException e) {
+ throw new ZipIOException(e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ZipIOException(e.getMessage(), e);
+ }
+ }
+
+ public static File readFileFromZipFile(ZipEntry entry, ZipFile zipFile) throws IOException {
+ long size = entry.getSize();
+
+ if (size > 0) {
+ BufferedInputStream reader = new BufferedInputStream(zipFile.getInputStream(entry));
+ String fileName = new File(entry.getName()).getName();
+ File outputFile =
+ FileUtilities.createTemporaryFileInDefaultTemporaryDirectory(fileName, "");
+ BufferedOutputStream output =
+ new BufferedOutputStream(new FileOutputStream(outputFile), BUFFER_SIZE);
+
+ byte readBytes[] = new byte[BUFFER_SIZE];
+ int readByteCount;
+
+ while ((readByteCount = reader.read(readBytes, 0, BUFFER_SIZE)) != -1) {
+ output.write(readBytes, 0, readByteCount);
+ }
+
+ output.close();
+
+ return outputFile;
+ } else {
+ return null;
+ }
+ }
+
+ public static Map<String, ZipEntry> mapFileNamesToEntries(
+ ZipFile zipFile, boolean includeDirectories) throws IOException {
+ Collection<ZipEntry> entries = collectEntries(zipFile);
+ Map<String, ZipEntry> fileNamesToEntries = new HashMap<String, ZipEntry>();
+
+ for (ZipEntry entry : entries) {
+ if (includeDirectories) {
+ if (entry.isDirectory()) {
+ fileNamesToEntries.put(entry.getName(), entry);
+ }
+ } else if (!entry.isDirectory()) {
+ fileNamesToEntries.put(entry.getName(), entry);
+ }
+ }
+
+ return fileNamesToEntries;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static Collection<ZipEntry> collectEntries(ZipFile zipFile) throws IOException {
+ Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zipFile.entries();
+
+ return CollectionUtilities.collectionEnumerationElements(
+ entries, new ArrayList<ZipEntry>());
+ }
+
+ public static void main(String[] args) {
+ String filePath =
+ "C:\\Documents and Settings\\pataphil\\Desktop\\org.cishell.utility.swt.zip";
+
+ try {
+ ZipFile zipFile = new ZipFile(filePath);
+ Map<String, ZipEntry> entriesByName = mapFileNamesToEntries(zipFile, false);
+
+ int count = 0;
+ for (String key : entriesByName.keySet()) {
+ System.err.println(key + ": " + entriesByName.get(key));
+ count++;
+
+ if (count == 2) {
+ readFileFromZipFile(entriesByName.get(key), zipFile);
+ }
+ }
+ } catch (IOException e) {
+ System.err.println("Exception: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|