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