DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=29469>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=29469

[vfs] selector, toolbox and ant packages

           Summary: [vfs] selector, toolbox and ant packages
           Product: Commons
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Enhancement
          Priority: Other
         Component: Sandbox
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Hi folks,

Here comes a BIG ADDITION suggestion.
35 files, 30 classes, 3 packages.
But let me tell you right away that the code is well documented.

Selector package
----------------
This takes the FileSelector API to the next level.
Crucial to note is the FileSetSelector that extends
FileSelector by adding one more method namely
traverseDescendentsInverted(FileInfo).
The point is to allow selectors to combine with logical
operators AND, OR, NOT. NOT is the only problem when considering
when should we traverse further the directory tree and when can we stop.
Think of 3 sets:
A = All files under baseDir
S = All selected files under baseDir
I = All not selected files under baseDir (A DIFFERENCE S = I)
If you know that everything under foo/bar is not included
then when negating this you know that everything under foo/bar is included.
For most of the selectors this is very easy to implement
but with PatternSelector it is a challange and that is also
where most of the performace gain can be achieved.
The purpose of this package is to replace Ant's selectors with
a version that is VFS enabled and more "set oriented" (sorry the vague expression).
NOTE: Using regexes, makes this package jdk1.4 and up. Is that a problem?
I am sure it is problem if pushing this package to Ant.
In any case a separate regex package can be used or this can be coded
without regexes (maybe it would become more efficient that way).
I have also extended the existing FileSelectors (FileDepthSelector etc.)
to show how the FileSetSelector works.

Toolbox
-------
Toolbox has 4 tools:
- FileScanner
- Copier
- Deleter
- Synchronizer
These tools do the work of the corresponding
Ant tasks but are fully usable through the API.
FileScanner and the set oriented selectors are
in close relationship.

Ant
---
I thought making a new package for Ant tasks so that they
would not get mixed with the existing "tasks" package.
There are also 2 properties files that define ant tasks and types.
I have used the same names as in ant prefixed with "vfs-".
Eg. vfs-fileset, vfs-copy ...
To make these packages compile a few tiny patches need to be applied
to existing code

===================================================================
retrieving revision 1.8
diff -B -b -u -r1.8 AllFileSelector.java
@@ -21,7 +21,7 @@
  */
-public final class AllFileSelector
+public class AllFileSelector
     implements FileSelector
{
     /**
===================================================================
retrieving revision 1.9
diff -B -b -u -r1.9 FileDepthSelector.java
@@ -21,11 +21,11 @@
  */
-public final class FileDepthSelector
+public class FileDepthSelector
     implements FileSelector
{
-    private final int minDepth;
-    private final int maxDepth;
+    protected int minDepth;
+    protected int maxDepth;
     public FileDepthSelector(int minDepth, int maxDepth)
     {
===================================================================
retrieving revision 1.6
diff -B -b -u -r1.6 FileTypeSelector.java
@@ -24,7 +24,7 @@
public class FileTypeSelector
     implements FileSelector
{
-    private final FileType type;
+    protected final FileType type;
     public FileTypeSelector(final FileType type)
     {
This makes the extending of these classes possible.

- Rami Ojares

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to