You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@locus.apache.org on 2000/11/16 09:59:26 UTC

cvs commit: jakarta-ant/src/main/org/apache/tools/ant/util SourceFileScanner.java

bodewig     00/11/16 00:59:26

  Modified:    .        WHATSNEW
               src/main/org/apache/tools/ant/taskdefs Copy.java
               src/main/org/apache/tools/ant/util SourceFileScanner.java
  Log:
  Added logging to SourceFileScanner.
  
  Revision  Changes    Path
  1.49      +2 -0      jakarta-ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/WHATSNEW,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- WHATSNEW	2000/11/10 17:07:19	1.48
  +++ WHATSNEW	2000/11/16 08:59:25	1.49
  @@ -28,6 +28,8 @@
   * <cab> can work on non-Windows platforms with the help of libcabinet. 
     See http://trill.cis.fordham.edu/~barbacha/cabinet_library/.
   
  +* <FTP> now supports passive mode.
  +
   Fixed bugs:
   -----------
   
  
  
  
  1.8       +1 -1      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Copy.java
  
  Index: Copy.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Copy.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Copy.java	2000/11/15 17:45:41	1.7
  +++ Copy.java	2000/11/16 08:59:26	1.8
  @@ -266,7 +266,7 @@
           if (forceOverwrite) {
               toCopy = names;
           } else {
  -            SourceFileScanner ds = new SourceFileScanner();
  +            SourceFileScanner ds = new SourceFileScanner(this);
               toCopy = ds.restrict(names, fromDir, toDir, mapper);
           }
           
  
  
  
  1.2       +47 -5     jakarta-ant/src/main/org/apache/tools/ant/util/SourceFileScanner.java
  
  Index: SourceFileScanner.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/util/SourceFileScanner.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SourceFileScanner.java	2000/11/15 17:45:41	1.1
  +++ SourceFileScanner.java	2000/11/16 08:59:26	1.2
  @@ -54,6 +54,9 @@
   
   package org.apache.tools.ant.util;
   
  +import org.apache.tools.ant.Project;
  +import org.apache.tools.ant.Task;
  +
   import java.io.File;
   import java.util.Vector;
   
  @@ -69,7 +72,16 @@
    */
   public class SourceFileScanner {
   
  +    protected Task task;
  +
       /**
  +     * @param task The task we should log messages through
  +     */
  +    public SourceFileScanner(Task task) {
  +        this.task = task;
  +    }
  +
  +    /**
        * Restrict the given set of files to those that are newer than
        * their corresponding target files.
        *
  @@ -81,24 +93,54 @@
        */
       public String[] restrict(String[] files, File srcDir, File destDir,
                                FileNameMapper mapper) {
  +
  +        long now = (new java.util.Date()).getTime();
  +        StringBuffer targetList = new StringBuffer();
  +
           Vector v = new Vector();
           for (int i=0; i< files.length; i++) {
   
               String[] targets = mapper.mapFileName(files[i]);
               if (targets == null || targets.length == 0) {
  +                task.log(files[i]+" skipped - don\'t know how to handle it",
  +                         Project.MSG_VERBOSE);
                   continue;
               }
   
               File src = new File(srcDir, files[i]);
  -            for (int j=0; j<targets.length; j++) {
  -                File dest = new File(destDir, targets[j]);
  -                if (!dest.exists() ||
  -                    src.lastModified() > dest.lastModified()) {
  +            if (src.lastModified() > now) {
  +                task.log("Warning: "+files[i]+" modified in the future.", 
  +                         Project.MSG_WARN);
  +            }
   
  +            boolean added = false;
  +            targetList.setLength(0);
  +            for (int j=0; !added && j<targets.length; j++) {
  +                File dest = new File(destDir, targets[j]);
  +                if (!dest.exists()) {
  +                    task.log(files[i]+" added as "+dest.getAbsolutePath()+" doesn\'t exist.",
  +                             Project.MSG_VERBOSE);
                       v.addElement(files[i]);
  -                    break;
  +                    added = true;
  +                } else if (src.lastModified() > dest.lastModified()) {
  +                    task.log(files[i]+" added as "+dest.getAbsolutePath()+" is outdated.",
  +                             Project.MSG_VERBOSE);
  +                    v.addElement(files[i]);
  +                    added = true;
  +                } else {
  +                    if (targetList.length() > 0) {
  +                        targetList.append(", ");
  +                    }
  +                    targetList.append(dest.getAbsolutePath());
                   }
               }
  +
  +            if (!added) {
  +                task.log(files[i]+" omitted as "+targetList.toString()
  +                         + (targets.length == 1 ? " is" : " are ")
  +                         + " up to date.", Project.MSG_VERBOSE);
  +            }
  +            
           }
           String[] result = new String[v.size()];
           v.copyInto(result);