Open Source Repository

Home /jodd/jodd-3.3.2 | Repository Home



jodd/io/findfile/WildcardFileScanner.java
// Copyright (c) 2003-2012, Jodd Team (jodd.org). All Rights Reserved.

package jodd.io.findfile;


import jodd.io.FileNameUtil;
import jodd.util.Wildcard;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * Wildcard file scanner.
 */
public class WildcardFileScanner extends FileScanner {

  protected final String wildcard;
  protected boolean usePathWildcards;
  protected List<File> files;

  public WildcardFileScanner(String wildcard) {
    this(wildcard, false);
  }

  public WildcardFileScanner(String wildcard, boolean usePathWildcards) {
    files = new ArrayList<File>();
    this.wildcard = wildcard;
    this.usePathWildcards = usePathWildcards;
  }

  public boolean isUsePathWildcards() {
    return usePathWildcards;
  }

  /**
   * Set path wildcard matching algorithm.
   */
  public void setUsePathWildcards(boolean usePathWildcards) {
    this.usePathWildcards = usePathWildcards;
  }

  @Override
  protected void onFile(File file) {
    String path = file.getAbsolutePath();
    path = FileNameUtil.separatorsToUnix(path);

    boolean match = usePathWildcards ?
        Wildcard.matchPath(path, wildcard:
        Wildcard.match(path, wildcard;


    if (match) {
      files.add(file);
    }
  }

  /**
   * Returns matched files.
   */
  public List<File> getMatchedFiles() {
    return files;
  }

  /**
   * Lists all matched files.
   */
  public List<File> list(File root) {
    files.clear();
    scan(root);
    return files;
  }

  /**
   * Lists all matched files.
   */
  public List<File> list(String root) {
    files.clear();
    scan(root);
    return files;
  }
}