+++ /dev/null
-package net.sourceforge.phpeclipse.mover;
-
-import java.io.File;
-import java.io.IOException;
-
-public class DirectoryWalker {
-
- protected IMover[] fMover;
- protected IFilter[] fFilter;
- /**
- * creates a new DirectoryWalker
- * mover and filter array should have the same length !
- */
- public DirectoryWalker(IMover[] mover, IFilter[] filter) {
- this.fMover = mover;
- this.fFilter = filter;
- }
-
- /**
- * creates a new DirectoryWalker with a IFilter.DEFAULT_FILTER
- */
- public DirectoryWalker(IMover[] mover) {
- this.fMover = mover;
- this.fFilter = new IFilter[mover.length];
- for (int i = 0; i < mover.length; i++) {
- this.fFilter[i] = IFilter.DEFAULT_FILTER;
- }
- }
- /**
- * walks through the source directory, processing files as it
- * goes along to create the target directory
- * @param source source directory
- * @param target target directory
- * @throws IOException error with the file system
- * @throws XMException error caught by the application
- */
- public void walk(String source, String target) throws IOException {
- try {
-
- walk(new File(source), new File(target));
- } finally {
-
- }
- }
-
- /**
- * actual implementation of the walking
- * @param source source directory
- * @param target target directory
- * @throws IOException error with the file system
- * @return true if walking should continue, false if the messenger
- * has asked for the end of the walking
- */
- protected boolean walk(File source, File target) throws IOException {
-
- if (!(target.exists() && target.isDirectory()))
- if (!target.mkdirs())
- return false;
-
- for (int j = 0; j < fMover.length; j++) {
- File[] dirs;
- File[] docs;
- int idirs = 0, idocs = 0;
- if (source.isDirectory()) {
- File[] files = source.listFiles();
- dirs = new File[files.length];
- docs = new File[files.length];
- String fileName;
-
- for (int i = 0; i < files.length; i++) {
- if (files[i].isDirectory()) {
- if (fFilter[j].isDirectoryOk(files[i])) {
- dirs[idirs++] = files[i];
- }
- } else if (files[i].isFile()) {
- if (fFilter[j].isFileOk(files[i])) {
- docs[idocs++] = files[i];
- }
- } else
- return false;
- }
- } else {
- dirs = new File[0];
- docs = new File[1];
- docs[0] = source;
- idocs = 1;
- }
-
- for (int i = 0; i < idocs; i++) {
- System.out.println(docs[i].getAbsolutePath());
-
- File result = fMover[j].move(docs[i], target);
- }
-
- System.out.println("directories");
- for (int i = 0; i < idirs; i++) {
- System.out.println(dirs[i].getAbsolutePath());
- if (!walk(dirs[i], new File(target, dirs[i].getName())))
- return false;
- }
- }
-
- return true;
- }
-}
\ No newline at end of file