001    package com.saelist.util;
002    
003    import org.jaxen.XPath;
004    import org.saxpath.SAXPathException;
005    import java.util.*;
006    import java.io.*;
007    import com.saelist.stx.parser.*;
008    import com.saelist.stx.xpath.*;
009    import com.saelist.util.*;
010    import org.apache.log4j.*;
011    
012    
013    /*
014        TODO: reporting - substitutions of the form {xpath} ...
015    
016        For example:
017    
018          findfiles args[ select[ "./*" ] report[ "{@name} {@length} {../@name}" ] ]
019    
020    
021      */
022    
023    public class FindFile {
024    
025      public static Logger logger = Logger.getLogger(FindFile.class.getName());
026    
027      private static ConsoleAppender appender = new ConsoleAppender(new PatternLayout("%-6r [%15.15t] %-5p %30.30c %x - %m\n"), "System.err");
028      private static Level oldRootLogLevel = Logger.getRootLogger().getLevel();
029      private static String javatestsrc_dir = System.getProperty("javatestsrc.dir");
030    
031    
032      public static void main(String[] args) throws Exception {
033        Logger.getRootLogger().addAppender(appender);
034        Logger.getRootLogger().setLevel(Level.ERROR);
035    
036        File file = new File(".");
037    
038        XPath xpath = new FileXPath(Strings.join(args, " "));
039    
040        List result = xpath.selectNodes(file);
041    
042        System.out.println(Strings.join(result,"\n"));
043    
044    
045        Logger.getRootLogger().removeAppender(appender);
046        Logger.getRootLogger().setLevel(oldRootLogLevel);
047      }
048    
049    
050    
051    
052    }
053    
054    
055    
056    
057    
058    
059    
060    
061    
062    
063    
064