}
/**
- * Copies nodes from one POIFS to the other minus the excepts
+ * Copies all the nodes from one POIFS Directory to another
*
* @param source
- * is the source POIFS to copy from
+ * is the source Directory to copy from
* @param target
- * is the target POIFS to copy to
+ * is the target Directory to copy to
+ * @param excepts
+ * is a list of Strings specifying what nodes NOT to copy
+ */
+ public static void copyNodes(DirectoryEntry sourceRoot,
+ DirectoryEntry targetRoot) throws IOException
+ {
+ for (Entry entry : sourceRoot) {
+ copyNodeRecursively( entry, targetRoot );
+ }
+ }
+
+ /**
+ * Copies nodes from one Directory to the other minus the excepts
+ *
+ * @param source The filtering source Directory to copy from
+ * @param target The filtering target Directory to copy to
+ */
+ public static void copyNodes( FilteringDirectoryNode filteredSource,
+ FilteringDirectoryNode filteredTarget ) throws IOException
+ {
+ // Nothing special here, just overloaded types to make the
+ // recommended new way to handle this clearer
+ copyNodes( (DirectoryEntry)filteredSource, (DirectoryEntry)filteredTarget );
+ }
+
+ /**
+ * Copies nodes from one Directory to the other minus the excepts
+ *
+ * @param source
+ * is the source Directory to copy from
+ * @param target
+ * is the target Directory to copy to
* @param excepts
* is a list of Strings specifying what nodes NOT to copy
+ * @deprecated use {@link FilteringDirectoryNode} instead
*/
public static void copyNodes( DirectoryEntry sourceRoot,
DirectoryEntry targetRoot, List<String> excepts )
}
/**
- * Copies nodes from one POIFS to the other minus the excepts
+ * Copies all nodes from one POIFS to the other
*
* @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 ) throws IOException
+ {
+ copyNodes( source.getRoot(), target.getRoot() );
+ }
+
+ /**
+ * Copies nodes from one POIFS to the other, minus the excepts.
+ * This delegates the filtering work to {@link FilteringDirectoryNode},
+ * so excepts can be of the form "NodeToExclude" or
+ * "FilteringDirectory/ExcludedChildNode"
+ *
+ * @param source is the source POIFS to copy from
+ * @param target is the target POIFS to copy to
+ * @param excepts is a list of Entry Names to be excluded from the 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 );
+ copyNodes(
+ new FilteringDirectoryNode(source.getRoot(), excepts),
+ new FilteringDirectoryNode(target.getRoot(), excepts)
+ );
}
/**