]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Patch 21381: New "force" attribute added to FOP task, update to documentation.
authorGlen Mazza <gmazza@apache.org>
Wed, 30 Jul 2003 22:01:35 +0000 (22:01 +0000)
committerGlen Mazza <gmazza@apache.org>
Wed, 30 Jul 2003 22:01:35 +0000 (22:01 +0000)
Submitted by: Sean Gilligan (seanlist at msgilligan dot com)

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196761 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/anttask.xml
src/java/org/apache/fop/tools/anttasks/Fop.java

index 6516a0a9c73921d48c1b935d4664f209cb5edd60..5d4cb98c039df6eb0cda19b8c913f756b6072770 100644 (file)
        <td>Output directory</td> 
        <td>Required if a fileset is used to specify the files to render; optional for fofile. (Can alternatively specify the full path in the fofile value.)</td> 
       </tr> 
+      <!--tr Commented out; implemented only in 1.0 currently>
+       <td>force</td> 
+       <td>If <code>true</code>, always generate target file, even if source file has not changed.</td> 
+       <td>No, default is <code>false</code></td> 
+      </tr--> 
       <!--tr  Commented out; attribute is currently unimplemented according to the code> 
        <td>basedir</td> 
        <td>Directory to work from</td> 
index 9c3007199e7ee9a51151fb47aee8f82f5b847c2c..a54d07558249bb5ed7ae85809a29bf2a5d25e96f 100644 (file)
@@ -104,6 +104,7 @@ public class Fop extends Task {
     private File userConfig;
     private int messageType = Project.MSG_VERBOSE;
     private boolean logFiles = true;
+    private boolean force = false;
 
     /**
      * Sets the filename for the userconfig.xml.
@@ -153,6 +154,24 @@ public class Fop extends Task {
         return this.filesets;
     }
 
+    /**
+     * Set whether to check dependencies, or to always generate;
+     * optional, default is false.
+     *
+     * @param force true if always generate.
+     */
+    public void setForce(boolean force) {
+        this.force = force;
+    }
+
+    /**
+     * Gets the force attribute
+     * @return the force attribute
+     */
+    public boolean getForce() {
+        return force;
+    }
+
     /**
      * Sets the output file.
      * @param outFile File to output to
@@ -265,7 +284,7 @@ public class Fop extends Task {
     public boolean getLogFiles() {
         return this.logFiles;
     }
-
+    
     /**
      * @see org.apache.tools.ant.Task#execute()
      */
@@ -395,7 +414,10 @@ class FOPTaskStarter extends Starter {
         int rint = determineRenderer(task.getFormat());
         String newExtension = determineExtension(rint);
 
+        // actioncount = # of fofiles actually processed through FOP
         int actioncount = 0;
+        // skippedcount = # of fofiles which haven't changed (force = "false")
+        int skippedcount = 0; 
 
         // deal with single source file
         if (task.getFofile() != null) {
@@ -407,8 +429,17 @@ class FOPTaskStarter extends Starter {
                 if (task.getOutdir() != null) {
                     outf = new File(task.getOutdir(), outf.getName());
                 }
-                render(task.getFofile(), outf, rint);
-                actioncount++;
+                
+                // Render if "force" flag is set OR 
+                // OR output file doesn't exist OR
+                // output file is older than input file
+                if (task.getForce() || !outf.exists() 
+                    || (task.getFofile().lastModified() > outf.lastModified() )) {
+                    render(task.getFofile(), outf, rint);
+                    actioncount++;
+                } else if (outf.exists() && (task.getFofile().lastModified() <= outf.lastModified() )) {
+                    skippedcount++;
+                }
             }
         }
 
@@ -446,14 +477,26 @@ class FOPTaskStarter extends Starter {
                     task.log("Error setting base URL", Project.MSG_DEBUG);
                 }
 
-                render(f, outf, rint);
-                actioncount++;
+                // Render if "force" flag is set OR 
+                // OR output file doesn't exist OR
+                // output file is older than input file
+                if (task.getForce() || !outf.exists() 
+                    || (f.lastModified() > outf.lastModified() )) {
+                    render(f, outf, rint);
+                    actioncount++;
+                } else if (outf.exists() && (f.lastModified() <= outf.lastModified() )) {
+                    skippedcount++;
+                }
             }
         }
-
-        if (actioncount == 0) {
+        
+        if (actioncount + skippedcount == 0) {
             task.log("No files processed. No files were selected by the filesets "
                 + "and no fofile was set." , Project.MSG_WARN);
+        } else if (skippedcount > 0) {  
+            task.log(skippedcount + " xslfo file(s) skipped (no change found"
+                + " since last generation; set force=\"true\" to override)."
+                , Project.MSG_INFO);
         }
     }