Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DirectoryList.java
   *
   * Copyright 2008 Mark Logic Corporation.
   * Portions Copyright 2007 Sun Microsystems, Inc.
   * All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common
  * Development and Distribution License("CDDL") (collectively, the
  * "License"). You may not use this file except in compliance with the
  * License. You can obtain a copy of the License at
  * https://xproc.dev.java.net/public/CDDL+GPL.html or
  * docs/CDDL+GPL.txt in the distribution. See the License for the
  * specific language governing permissions and limitations under the
  * License. When distributing the software, include this License Header
  * Notice in each file and include the License file at docs/CDDL+GPL.txt.
  */
 
 package com.xmlcalabash.library;
 
 import java.io.File;
 import java.net.URI;
 
 

Author(s):
ndw
 
 public class DirectoryList extends DefaultStep {
     private static final QName _name = new QName("""name");
     private static final QName _path = new QName("""path");
     private static final QName _include_filter = new QName("""include-filter");
     private static final QName _exclude_filter = new QName("""exclude-filter");
     private static final QName c_directory = new QName("c"."directory");
     private static final QName c_file = new QName("c"."file");
     private static final QName c_other  = new QName("c"."other");
     private static final QName px_show_excluded = new QName(."show-excluded");
     private WritablePipe result = null;
     private String path = ".";
     private String inclFilter = null;
     private String exclFilter = null;

    
Creates a new instance of DirectoryList
 
     public DirectoryList(XProcRuntime runtimeXAtomicStep step) {
         super(runtime,step);
     }
 
     public void setOutput(String portWritablePipe pipe) {
          = pipe;
     }
 
     public void reset() {
         .resetWriter();
     }
 
     public void run() throws SaxonApiException {
         super.run();
 
         if (.getSafeMode()) {
             throw XProcException.dynamicError(21);
         }
 
         if (getOption() != null) {
             URI pathbase = getOption().getBaseURI();
             String pathstr = URIUtils.encode(getOption().getString());
              = pathbase.resolve(pathstr).toASCIIString();
         } else {
              = .getNode().getBaseURI().resolve(".").toASCIIString();
         }
 
         .finer(null.getNode(), "path: " + );
 
         RuntimeValue value = getOption();
         if (value != null) {
              = value.getString();
             .finer(null.getNode(), "include: " + );
         }
         value = getOption();
         if (value != null) {
              = value.getString();
             .finer(null.getNode(), "exclude: " + );
         }
 
         File dir = URIUtils.getFile();
         String dirname = null;
 
        try {
            dir = dir.getCanonicalFile();
            dirname = dir.getName();
        } catch (IOException ioe) {
            throw new XProcException(ioe);
        }
        if (!dir.isDirectory()) {
            throw XProcException.stepError(17);
        }
        if (!dir.canRead()) {
            throw XProcException.stepError(12);
        }
        boolean showExcluded = "true".equals(.getExtensionAttribute());
        TreeWriter tree = new TreeWriter();
        tree.startDocument(.getNode().getBaseURI());
        tree.addStartElement();
        tree.addAttribute(dirname);
        tree.addAttribute(.dir.toURI().toASCIIString());
        tree.startContent();
        File[] contents = dir.listFiles();
        for (File file : contents) {
            boolean use = true;
            String filename = file.getName();
            .finer(null.getNode(), "name: " + filename);
            if ( != null) {
                use = filename.matches();
                .finer(null.getNode(), "include: " + use);
            }
            if ( != null) {
                use = use && !filename.matches();
                .finer(null.getNode(), "exclude: " + !use);
            }
            if (use) {
                if (file.isDirectory()) {
                    tree.addStartElement();
                    tree.addAttribute(file.getName());
                    tree.addEndElement();
                    finest(.getNode(), "Including directory: " + file.getName());
                } else if (file.isFile()) {
                    tree.addStartElement();
                    tree.addAttribute(file.getName());
                    tree.addEndElement();
                    finest(.getNode(), "Including file: " + file.getName());
                } else {
                    tree.addStartElement();
                    tree.addAttribute(file.getName());
                    tree.addEndElement();
                    finest(.getNode(), "Including other: " + file.getName());
                }
            } else if (showExcluded) {
                tree.addComment(" excluded: " + file.getName() + " ");
                finest(.getNode(), "Excluding: " + file.getName());
            }
        }
        tree.addEndElement();
        tree.endDocument();
        .write(tree.getResult());
    }
New to GrepCode? Check out our FAQ X