You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ni...@apache.org on 2006/07/24 18:23:46 UTC

svn commit: r425111 - in /jakarta/commons/proper/io/trunk/src: java/org/apache/commons/io/FileUtils.java test/org/apache/commons/io/FileUtilsTestCase.java

Author: niallp
Date: Mon Jul 24 09:23:45 2006
New Revision: 425111

URL: http://svn.apache.org/viewvc?rev=425111&view=rev
Log:
IO-88 Add isFileOlder() methods to FileUtils (counterparts to existing isFileNewer() methods)

Modified:
    jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileUtils.java
    jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileUtilsTestCase.java

Modified: jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileUtils.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileUtils.java?rev=425111&r1=425110&r2=425111&view=diff
==============================================================================
--- jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileUtils.java (original)
+++ jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileUtils.java Mon Jul 24 09:23:45 2006
@@ -1291,4 +1291,70 @@
         return file.lastModified() > timeMillis;
     }
 
+
+    //-----------------------------------------------------------------------
+    /**
+     * Tests if the specified <code>File</code> is older than the reference
+     * <code>File</code>.
+     *
+     * @param file  the <code>File</code> of which the modification date must
+     * be compared, not null
+     * @param reference  the <code>File</code> of which the modification date
+     * is used, not null
+     * @return true if the <code>File</code> exists and has been modified before
+     * the reference <code>File</code>
+     * @throws IllegalArgumentException if the file is null
+     * @throws IllegalArgumentException if the reference file is null or doesn't exist
+     */
+     public static boolean isFileOlder(File file, File reference) {
+        if (reference == null) {
+            throw new IllegalArgumentException("No specified reference file");
+        }
+        if (!reference.exists()) {
+            throw new IllegalArgumentException("The reference file '"
+                    + file + "' doesn't exist");
+        }
+        return isFileOlder(file, reference.lastModified());
+    }
+
+    /**
+     * Tests if the specified <code>File</code> is older than the specified
+     * <code>Date</code>.
+     * 
+     * @param file  the <code>File</code> of which the modification date
+     * must be compared, not null
+     * @param date  the date reference, not null
+     * @return true if the <code>File</code> exists and has been modified
+     * before the given <code>Date</code>.
+     * @throws IllegalArgumentException if the file is null
+     * @throws IllegalArgumentException if the date is null
+     */
+    public static boolean isFileOlder(File file, Date date) {
+        if (date == null) {
+            throw new IllegalArgumentException("No specified date");
+        }
+        return isFileOlder(file, date.getTime());
+    }
+
+    /**
+     * Tests if the specified <code>File</code> is older than the specified
+     * time reference.
+     *
+     * @param file  the <code>File</code> of which the modification date must
+     * be compared, not null
+     * @param timeMillis  the time reference measured in milliseconds since the
+     * epoch (00:00:00 GMT, January 1, 1970)
+     * @return true if the <code>File</code> exists and has been modified before
+     * the given time reference.
+     * @throws IllegalArgumentException if the file is null
+     */
+     public static boolean isFileOlder(File file, long timeMillis) {
+        if (file == null) {
+            throw new IllegalArgumentException("No specified file");
+        }
+        if (!file.exists()) {
+            return false;
+        }
+        return file.lastModified() < timeMillis;
+    }
 }

Modified: jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileUtilsTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileUtilsTestCase.java?rev=425111&r1=425110&r2=425111&view=diff
==============================================================================
--- jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileUtilsTestCase.java (original)
+++ jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileUtilsTestCase.java Mon Jul 24 09:23:45 2006
@@ -23,6 +23,7 @@
 import java.net.URL;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -353,11 +354,110 @@
             FileUtils.sizeOfDirectory(file));
     }
 
-    // isFileNewer
+    // isFileNewer / isFileOlder
+    public void testIsFileNewerOlder() throws Exception {
+        File reference   = new File(getTestDirectory(), "FileUtils-reference.txt");
+        File oldFile     = new File(getTestDirectory(), "FileUtils-old.txt");
+        File newFile     = new File(getTestDirectory(), "FileUtils-new.txt");
+        File invalidFile = new File(getTestDirectory(), "FileUtils-invalid-file.txt");
+
+        // Create Files
+        createFile(oldFile, 0);
+        spin(oldFile.lastModified());
+        long now = System.currentTimeMillis();
+        Date date = new Date();
+        createFile(reference, 0);
+        spin(reference.lastModified());
+        createFile(newFile, 0);
+
+        // Test isFileNewer()
+        assertFalse("Old File - Newer - File", FileUtils.isFileNewer(oldFile, reference));
+        assertFalse("Old File - Newer - Date", FileUtils.isFileNewer(oldFile, date));
+        assertFalse("Old File - Newer - Mili", FileUtils.isFileNewer(oldFile, now));
+        assertTrue("New File - Newer - File", FileUtils.isFileNewer(newFile, reference));
+        assertTrue("New File - Newer - Date", FileUtils.isFileNewer(newFile, date));
+        assertTrue("New File - Newer - Mili", FileUtils.isFileNewer(newFile, now));
+        assertFalse("Invalid - Newer - File", FileUtils.isFileNewer(invalidFile, reference));
+        
+        // Test isFileOlder()
+        assertTrue("Old File - Older - File", FileUtils.isFileOlder(oldFile, reference));
+        assertTrue("Old File - Older - Date", FileUtils.isFileOlder(oldFile, date));
+        assertTrue("Old File - Older - Mili", FileUtils.isFileOlder(oldFile, now));
+        assertFalse("New File - Older - File", FileUtils.isFileOlder(newFile, reference));
+        assertFalse("New File - Older - Date", FileUtils.isFileOlder(newFile, date));
+        assertFalse("New File - Older - Mili", FileUtils.isFileOlder(newFile, now));
+        assertFalse("Invalid - Older - File", FileUtils.isFileOlder(invalidFile, reference));
+        
+        
+        // ----- Test isFileNewer() exceptions -----
+        // Null File
+        try {
+            FileUtils.isFileNewer(null, now);
+            fail("Newer Null, expected IllegalArgumentExcepion");
+        } catch (IllegalArgumentException expected) {
+            // expected result
+        }
+        
+        // Null reference File
+        try {
+            FileUtils.isFileNewer(oldFile, (File)null);
+            fail("Newer Null reference, expected IllegalArgumentExcepion");
+        } catch (IllegalArgumentException expected) {
+            // expected result
+        }
+        
+        // Invalid reference File
+        try {
+            FileUtils.isFileNewer(oldFile, invalidFile);
+            fail("Newer invalid reference, expected IllegalArgumentExcepion");
+        } catch (IllegalArgumentException expected) {
+            // expected result
+        }
+        
+        // Null reference Date
+        try {
+            FileUtils.isFileNewer(oldFile, (Date)null);
+            fail("Newer Null date, expected IllegalArgumentExcepion");
+        } catch (IllegalArgumentException expected) {
+            // expected result
+        }
+
+
+        // ----- Test isFileOlder() exceptions -----
+        // Null File
+        try {
+            FileUtils.isFileOlder(null, now);
+            fail("Older Null, expected IllegalArgumentExcepion");
+        } catch (IllegalArgumentException expected) {
+            // expected result
+        }
+        
+        // Null reference File
+        try {
+            FileUtils.isFileOlder(oldFile, (File)null);
+            fail("Older Null reference, expected IllegalArgumentExcepion");
+        } catch (IllegalArgumentException expected) {
+            // expected result
+        }
+        
+        // Invalid reference File
+        try {
+            FileUtils.isFileOlder(oldFile, invalidFile);
+            fail("Older invalid reference, expected IllegalArgumentExcepion");
+        } catch (IllegalArgumentException expected) {
+            // expected result
+        }
+        
+        // Null reference Date
+        try {
+            FileUtils.isFileOlder(oldFile, (Date)null);
+            fail("Older Null date, expected IllegalArgumentExcepion");
+        } catch (IllegalArgumentException expected) {
+            // expected result
+        }
+
+    }
 
-//    // TODO Finish test
-//    public void XtestIsFileNewer() {}
-//
 //    // TODO Remove after debugging
 //    private void log(Object obj) {
 //        System.out.println(
@@ -828,6 +928,13 @@
             IOUtils.LINE_SEPARATOR + "some text" + IOUtils.LINE_SEPARATOR;
         String actual = FileUtils.readFileToString(file, "US-ASCII");
         assertEquals(expected, actual);
+    }
+
+    private void spin(long now) throws InterruptedException {
+        final long end = now + 1000;
+        while (System.currentTimeMillis() <= end) {
+            Thread.sleep(Math.max(1, end - System.currentTimeMillis()));
+        }
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org