Atsuhiko Yamanaka wrote:

Hi,

2006/5/10, Kev Jackson <[EMAIL PROTECTED]>:

In the SFTP code, there's mention of selectors not supported on remote
filesystems.  Why is taht?  The SFTPDirectoryScanner inherits from the
normal DirectoyScanner (which does support selectors), is there a
problem with the SFTP protocol that will not allow selectors to work?


That logic comes from ftp task, but I guess that DateSelector expects only
java.io.File instances, but remote files are not  java.io.File.

Would it be possible to alter DateSelector to use resources instead and see if that works?

Anyway, after quick and ugly hack, I could get files with date selector.

At least you got that far, to be honest I've not managed to look through all the code and determine what I would need to do to implement any of the selectors

In that hack, I get an instance of DateSelector and invoke its
'isSelected' method
whith dummy java.io.File instance whose 'lastModifiedTime' is setted
as timestam of
remote file.  It is too ugly to post here, so I'll wait for reponses
from Ant experts.

Currently I'm hacking around with building a list of include patterns based on filenames (each of the log files will have a filename corresponding to the date pattern YYYY-MM-DD) - this is so brittle it's untrue, so I'd be happier to use the 'hacked up' code you've put together for my use case - I doubt anyone would ever need to do this again, so I'm not bothered about how messy the code is in the jar files (I'm treating Ant as a simple lib), and I doubt the rest of the ant team would want it to be included in the distribution

...horrible kludgy code to prove the hoops I'm having to jump through

      ArrayList includes = new ArrayList();
       try {
           SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD");
           Date now = new Date();
           now = sdf.parse((sdf.format(now)));
           if (null != from && null == to) {
               Date f = sdf.parse(from);
System.out.println("Attempting to select files after : "+from);
               //after chosen date
               //ds.setDatetime(from); <- elegant using date selector
               //ds.setWhen(TimeComparison.AFTER);
               //fs.addDate(ds);
Calendar c = Calendar.getInstance(); <- nasty using clandar etc
               //loop around calendar adding one to each day
               //until calendar == today
for (c.setTime(f); c.getTime().equals(now); c.add(Calendar.DAY_OF_MONTH, 1)) {
                   includes.add("*"+sdf.format(c.getTime())+"*");
                   System.out.println("*"+sdf.format(c.getTime())+"*");
               }
          .... code elided
       } catch (ParseException e) {
           //do nothing
       }
       String[] includePatterns = new String[includes.size()];
       for(int i = 0, size = includes.size(); i<size; i++) {
           includePatterns[i] = (String)includes.get(i);
       }
       fs.appendIncludes(includePatterns);
       return fs;

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

Reply via email to