aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Vladimirov <sergey@apache.org>2011-08-22 08:50:48 +0000
committerSergey Vladimirov <sergey@apache.org>2011-08-22 08:50:48 +0000
commit3c7bd51950cd89e88f2fa65d4275eda1f98e4681 (patch)
treeb90e5b80d2efc79eecb6559b72e5542126d0e8df
parent3d2c134a96d8ba7c7b4567836f02c349a97f7310 (diff)
downloadpoi-3c7bd51950cd89e88f2fa65d4275eda1f98e4681.tar.gz
poi-3c7bd51950cd89e88f2fa65d4275eda1f98e4681.zip
move POI FS entries copy methods to new POIUtils class
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1160146 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/java/org/apache/poi/POIDocument.java58
-rw-r--r--src/java/org/apache/poi/util/POIUtils.java103
2 files changed, 125 insertions, 36 deletions
diff --git a/src/java/org/apache/poi/POIDocument.java b/src/java/org/apache/poi/POIDocument.java
index fad5b47bc0..f0503a1a05 100644
--- a/src/java/org/apache/poi/POIDocument.java
+++ b/src/java/org/apache/poi/POIDocument.java
@@ -24,6 +24,8 @@ import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
+import org.apache.poi.util.POIUtils;
+
import org.apache.poi.hpsf.DocumentSummaryInformation;
import org.apache.poi.hpsf.MutablePropertySet;
import org.apache.poi.hpsf.PropertySet;
@@ -237,50 +239,34 @@ public abstract class POIDocument {
* @param target is the target POIFS to copy to
* @param excepts is a list of Strings specifying what nodes NOT to copy
*/
- protected void copyNodes(POIFSFileSystem source, POIFSFileSystem target,
- List<String> excepts) throws IOException {
- //System.err.println("CopyNodes called");
- copyNodes(source.getRoot(), target.getRoot(), excepts);
- }
-
+ @Deprecated
+ protected void copyNodes( POIFSFileSystem source, POIFSFileSystem target,
+ List<String> excepts ) throws IOException
+ {
+ POIUtils.copyNodes( source, target, excepts );
+ }
+
/**
* Copies nodes from one POIFS to the other minus the excepts
* @param source is the source POIFS to copy from
* @param target is the target POIFS to copy to
* @param excepts is a list of Strings specifying what nodes NOT to copy
*/
- protected void copyNodes(DirectoryNode sourceRoot, DirectoryNode targetRoot,
- List<String> excepts) throws IOException {
- Iterator<Entry> entries = sourceRoot.getEntries();
- while (entries.hasNext()) {
- Entry entry = entries.next();
- if (!excepts.contains(entry.getName())) {
- copyNodeRecursively(entry,targetRoot);
- }
- }
- }
-
+ @Deprecated
+ protected void copyNodes( DirectoryNode sourceRoot,
+ DirectoryNode targetRoot, List<String> excepts ) throws IOException
+ {
+ POIUtils.copyNodes( sourceRoot, targetRoot, excepts );
+ }
+
/**
* Copies an Entry into a target POIFS directory, recursively
*/
@Internal
- protected void copyNodeRecursively(Entry entry, DirectoryEntry target)
- throws IOException {
- //System.err.println("copyNodeRecursively called with "+entry.getName()+
- // ","+target.getName());
- DirectoryEntry newTarget = null;
- if (entry.isDirectoryEntry()) {
- newTarget = target.createDirectory(entry.getName());
- Iterator<Entry> entries = ((DirectoryEntry)entry).getEntries();
-
- while (entries.hasNext()) {
- copyNodeRecursively(entries.next(),newTarget);
- }
- } else {
- DocumentEntry dentry = (DocumentEntry)entry;
- DocumentInputStream dstream = new DocumentInputStream(dentry);
- target.createDocument(dentry.getName(),dstream);
- dstream.close();
- }
- }
+ @Deprecated
+ protected void copyNodeRecursively( Entry entry, DirectoryEntry target )
+ throws IOException
+ {
+ POIUtils.copyNodeRecursively( entry, target );
+ }
}
diff --git a/src/java/org/apache/poi/util/POIUtils.java b/src/java/org/apache/poi/util/POIUtils.java
new file mode 100644
index 0000000000..fa057bc572
--- /dev/null
+++ b/src/java/org/apache/poi/util/POIUtils.java
@@ -0,0 +1,103 @@
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+package org.apache.poi.util;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.poi.poifs.filesystem.DirectoryEntry;
+import org.apache.poi.poifs.filesystem.DirectoryNode;
+import org.apache.poi.poifs.filesystem.DocumentEntry;
+import org.apache.poi.poifs.filesystem.DocumentInputStream;
+import org.apache.poi.poifs.filesystem.Entry;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+
+@Internal
+public class POIUtils
+{
+
+ /**
+ * Copies an Entry into a target POIFS directory, recursively
+ */
+ @Internal
+ public static void copyNodeRecursively( Entry entry, DirectoryEntry target )
+ throws IOException
+ {
+ // System.err.println("copyNodeRecursively called with "+entry.getName()+
+ // ","+target.getName());
+ DirectoryEntry newTarget = null;
+ if ( entry.isDirectoryEntry() )
+ {
+ newTarget = target.createDirectory( entry.getName() );
+ Iterator<Entry> entries = ( (DirectoryEntry) entry ).getEntries();
+
+ while ( entries.hasNext() )
+ {
+ copyNodeRecursively( entries.next(), newTarget );
+ }
+ }
+ else
+ {
+ DocumentEntry dentry = (DocumentEntry) entry;
+ DocumentInputStream dstream = new DocumentInputStream( dentry );
+ target.createDocument( dentry.getName(), dstream );
+ dstream.close();
+ }
+ }
+
+ /**
+ * Copies nodes from one POIFS to the other minus the excepts
+ *
+ * @param source
+ * is the source POIFS to copy from
+ * @param target
+ * is the target POIFS to copy to
+ * @param excepts
+ * is a list of Strings specifying what nodes NOT to copy
+ */
+ public static void copyNodes( DirectoryNode sourceRoot,
+ DirectoryNode targetRoot, List<String> excepts ) throws IOException
+ {
+ Iterator<Entry> entries = sourceRoot.getEntries();
+ while ( entries.hasNext() )
+ {
+ Entry entry = entries.next();
+ if ( !excepts.contains( entry.getName() ) )
+ {
+ copyNodeRecursively( entry, targetRoot );
+ }
+ }
+ }
+
+ /**
+ * Copies nodes from one POIFS to the other minus the excepts
+ *
+ * @param source
+ * is the source POIFS to copy from
+ * @param target
+ * is the target POIFS to copy to
+ * @param excepts
+ * is a list of Strings specifying what nodes NOT to copy
+ */
+ public static void copyNodes( POIFSFileSystem source,
+ POIFSFileSystem target, List<String> excepts ) throws IOException
+ {
+ // System.err.println("CopyNodes called");
+ copyNodes( source.getRoot(), target.getRoot(), excepts );
+ }
+}