Author: sebb
Date: Wed Dec 10 16:37:57 2014
New Revision: 1644470
URL: http://svn.apache.org/r1644470
Log:
NET-562 FTPFile.toFormattedString should print only signficant parts of the
parsed date
+set Calendar to indicate which parts are significant remaining parsers
TODO: improve tests - ensure all more significant fields are set
Modified:
commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java
commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java
commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/VMSFTPEntryParserTest.java
Modified:
commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java
URL:
http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java?rev=1644470&r1=1644469&r2=1644470&view=diff
==============================================================================
---
commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java
(original)
+++
commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java
Wed Dec 10 16:37:57 2014
@@ -129,6 +129,7 @@ public class FTPTimestampParserImpl impl
if (working.after(now)) { // must have been last year instead
working.add(Calendar.YEAR, -1);
}
+ setPrecision(recentDateFormat, working);
return working;
}
}
@@ -150,9 +151,39 @@ public class FTPTimestampParserImpl impl
+serverTime.getTime().toString(),
pp.getErrorIndex());
}
+ setPrecision(defaultDateFormat, working);
return working;
}
+ private void setPrecision(SimpleDateFormat dateFormat, Calendar working) {
+ final String FORMAT_CHARS="HmsS"; // assume date is always present
+ String pattern = dateFormat.toPattern();
+ char lastChar=0;
+ for(char ch : FORMAT_CHARS.toCharArray()) {
+ if (pattern.indexOf(ch) == -1){
+ lastChar = ch;
+ break;
+ }
+ }
+ if (lastChar == 0) { // matched the lot
+ return;
+ }
+ switch(lastChar) {
+ case 'S':
+ working.clear(Calendar.MILLISECOND);
+ break;
+ case 's':
+ working.clear(Calendar.SECOND);
+ break;
+ case 'm':
+ working.clear(Calendar.MINUTE);
+ break;
+ case 'H':
+ working.clear(Calendar.HOUR_OF_DAY);
+ break;
+ }
+ }
+
/**
* @return Returns the defaultDateFormat.
*/
Modified:
commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java?rev=1644470&r1=1644469&r2=1644470&view=diff
==============================================================================
---
commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java
(original)
+++
commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java
Wed Dec 10 16:37:57 2014
@@ -247,6 +247,24 @@ public class UnixFTPEntryParserTest exte
}
+ public void testPrecisionMinutes() {
+ FTPFile file = getParser().parseFTPEntry("drwxr-xr-x 2 user
group 4096 Mar 2 15:13 zxbox");
+ assertNotNull(file);
+ Calendar stamp = file.getTimestamp();
+ assertNotNull(stamp);
+ assertTrue("Expected minute to be set", stamp.isSet(Calendar.MINUTE));
+ assertFalse("Expected second to be unset",
stamp.isSet(Calendar.SECOND));
+ }
+
+ public void testPrecisionDays() {
+ FTPFile file = getParser().parseFTPEntry("drwxr-xr-x 2 user
group 4096 Mar 2 2014 zxbox");
+ assertNotNull(file);
+ Calendar stamp = file.getTimestamp();
+ assertNotNull(stamp);
+ assertTrue("Expected day to be set",
stamp.isSet(Calendar.DAY_OF_MONTH));
+ assertFalse("Expected hour to be unset",
stamp.isSet(Calendar.HOUR_OF_DAY));
+ }
+
private void checkPermissions(FTPFile f) {
assertTrue("Should have user read permission.", f.hasPermission(
FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION));
Modified:
commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/VMSFTPEntryParserTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/VMSFTPEntryParserTest.java?rev=1644470&r1=1644469&r2=1644470&view=diff
==============================================================================
---
commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/VMSFTPEntryParserTest.java
(original)
+++
commons/proper/net/trunk/src/test/java/org/apache/commons/net/ftp/parser/VMSFTPEntryParserTest.java
Wed Dec 10 16:37:57 2014
@@ -18,6 +18,7 @@ package org.apache.commons.net.ftp.parse
import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.util.Calendar;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPFileEntryParser;
@@ -204,6 +205,16 @@ public class VMSFTPEntryParserTest exten
checkPermisions(file, 0400);
}
+ public void testPrecisionSeconds() {
+ FTPFile file = getParser().parseFTPEntry("1-JUN.LIS;1 9/9
2-JUN-1998 07:32:04 [TRANSLATED] (RWED,RD,,)");
+ assertNotNull(file);
+ Calendar stamp = file.getTimestamp();
+ assertNotNull(stamp);
+ assertTrue("Expected hour to be set",
stamp.isSet(Calendar.HOUR_OF_DAY));
+ assertTrue("Expected second to be set", stamp.isSet(Calendar.SECOND));
+ assertFalse("Expected millisecond to be unset",
stamp.isSet(Calendar.MILLISECOND));
+ }
+
@Override
protected String[] getBadListing()
{