[Schmitzm-commits] r1554 - trunk/schmitzm-core/src/main/java/de/schmitzm/io
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Apr 14 22:15:15 CEST 2011
Author: mojays
Date: 2011-04-14 22:15:13 +0200 (Thu, 14 Apr 2011)
New Revision: 1554
Added:
trunk/schmitzm-core/src/main/java/de/schmitzm/io/FilterUtil.java
Modified:
trunk/schmitzm-core/src/main/java/de/schmitzm/io/IOUtil.java
Log:
new utility class FilterUtil; All FileFilter stuff moved from IOUtil to FilterUtil; old methods marked as deprecated in IOUtil for compatibility reasons)
Added: trunk/schmitzm-core/src/main/java/de/schmitzm/io/FilterUtil.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/io/FilterUtil.java 2011-04-14 11:12:50 UTC (rev 1553)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/io/FilterUtil.java 2011-04-14 20:15:13 UTC (rev 1554)
@@ -0,0 +1,283 @@
+package de.schmitzm.io;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileReader;
+import java.io.IOException;
+
+import org.apache.commons.io.filefilter.FileFilterUtils;
+import org.apache.commons.io.filefilter.IOFileFilter;
+
+/**
+ * Helper methods for {@link FileFilter}.
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ */
+public class FilterUtil {
+ /**
+ * Modi fuer Filter.
+ *
+ * @see #createSimpleFileFilter(String, FilterMode)
+ * @see #createRegExFileFilter(String, FilterMode)
+ * @author mojays
+ *
+ */
+ public static enum FilterMode {
+ /** Der Filter liefert nur Dateien, aber keine Verzeichnisse. */
+ FILES_ONLY,
+ /** Der Filter liefert nur Verzeichnisse, aber keine Dateien. */
+ DIR_ONLY,
+ /** Der Filter liefert Dateien und Verzeichnisse. */
+ ALL
+ }
+
+ /**
+ * {@link FileFilter}, der alle Dateien akzeptiert, aber keine
+ * Verzeichnisse.
+ */
+ public static final FileFilter ALL_FILES_FILTER = createSimpleFileFilter(
+ "*", FilterMode.FILES_ONLY);
+ /**
+ * {@link FileFilter}, der alle Verzeichnisse akzeptiert, aber keine
+ * "normalen" Dateien.
+ */
+ public static final FileFilter ALL_DIRS_FILTER = createSimpleFileFilter(
+ "*", FilterMode.DIR_ONLY);
+ /** {@link FileFilter}, der alle Dateien und Verzeichnisse akzeptiert. */
+ public static final FileFilter ALL_FILTER = createSimpleFileFilter("*",
+ FilterMode.ALL);
+
+ /**
+ * This {@link IOFileFilter} returns <code>false</code> for files that
+ * should be omitted during export and when calculating the size of a
+ * {@link DpEntry} folder.
+ */
+ public static final IOFileFilter BlacklistedFilesFilter = new IOFileFilter() {
+
+ @Override
+ public boolean accept(File file) {
+ if (file.getName().equals("Thumbs.db"))
+ return false;
+ if (file.getName().endsWith("~"))
+ return false;
+ if (file.getName().toLowerCase().endsWith("bak"))
+ return false;
+ if (file.getName().equals("build.xml"))
+ return false;
+ if (file.getName().equals("pom.xml"))
+ return false;
+ return true;
+ }
+
+ @Override
+ public boolean accept(File dir, String name) {
+ return accept(new File(dir, name));
+ }
+ };
+
+ /**
+ * This filter omits SVN and CSV sub-folders.<br/>
+ * This {@link IOFileFilter} returns <code>false</code> for folder that
+ * should be omitted during export and when calculating the size of a
+ * {@link DpEntry} folder or chen copying folders in general.
+ */
+ public static final IOFileFilter BlacklistedFoldersFilter = FileFilterUtils
+ .makeCVSAware(FileFilterUtils.makeSVNAware(null));
+
+
+ /**
+ * Prueft, ob ein {@link File} einen angegebenen {@link FilterMode}
+ * erfuellt.
+ *
+ * @param file
+ * eine Datei oder ein Verzeichnis
+ * @param mode
+ * Filter-Modus (wenn {@code null} wird {@link FilterMode#ALL}
+ * angenommen
+ * @return {@code false} wenn die angegebenen Datei {@code null} ist
+ */
+ public static boolean fileFitsFilterMode(File file, FilterMode mode) {
+ if (mode == null)
+ mode = FilterMode.ALL;
+ final boolean acceptFiles = FilterMode.ALL.equals(mode)
+ || FilterMode.FILES_ONLY.equals(mode);
+ final boolean acceptDirs = FilterMode.ALL.equals(mode)
+ || FilterMode.DIR_ONLY.equals(mode);
+
+ return file != null
+ && (file.isDirectory() && acceptDirs ||
+ file.isFile() && acceptFiles);
+ }
+
+ /**
+ * Erstellt einen Filter fuer einen regulaeren Ausdruck.
+ *
+ * @param filterStr
+ * definiert den Filter
+ */
+ public static FileFilter createRegExFileFilter(final String regEx,
+ final FilterMode mode) {
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().matches(regEx);
+ }
+ };
+ }
+
+ /**
+ * Erstellt einen Filter fuer einen Filter-String. Dieser kann als Wildcard
+ * das Zeichen "*" enthalten. Alle anderen Zeichen werden direkt als Filter
+ * verwendet.
+ *
+ * @param filterStr
+ * definiert den Filter
+ */
+ public static FileFilter createSimpleFileFilter(String filterStr,
+ final FilterMode mode) {
+ // Gross/Klein-Schreibung ignorieren
+ filterStr = filterStr.toLowerCase();
+
+ // ##### Filter definiert den "inneren" Teil eines Dateinames #####
+ if (filterStr.startsWith("*") && filterStr.endsWith("*")) {
+ // Filter besteht nur aus "*" --> alle Dateien akzeptieren
+ if (filterStr.length() <= 2)
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode);
+ }
+ };
+ // "inneren" Teil des Filters extrahieren
+ final String condStr = filterStr.substring(1,
+ filterStr.length() - 1);
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().toLowerCase().contains(condStr);
+ }
+ };
+ }
+
+ // ##### Filter definiert den Anfang eines Dateinames #####
+ if (filterStr.endsWith("*")) {
+ // Anfang des Filters extrahieren
+ final String condStr = filterStr.substring(0,
+ filterStr.length() - 1);
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().toLowerCase().startsWith(condStr);
+ }
+ };
+ }
+ // ##### Filter definiert das Ende eines Dateinames #####
+ if (filterStr.startsWith("*")) {
+ // Ende des Filters extrahieren
+ final String condStr = filterStr.substring(1);
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().toLowerCase().endsWith(condStr);
+ }
+ };
+ }
+ // ##### Filter definiert den genauen Dateinamen #####
+ final String condStr = filterStr;
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().equalsIgnoreCase(condStr);
+ }
+ };
+ }
+
+ /**
+ * Creates a filter which checks whether a file contains a
+ * given pattern by simple {@link String#contains(CharSequence)}
+ * check for every text line.
+ * @param pattern a pattern
+ * @param ignoreCase indicates whether the check should be case-insensitive
+ */
+ public static FileFilter createFileContentContainsFilter(String pattern, boolean ignoreCase) {
+ final String _pattern = ignoreCase ? pattern.toLowerCase() : pattern;
+ final boolean _ignoreCase = ignoreCase;
+
+ return new FileFilter() {
+ @Override
+ public boolean accept(File file) {
+ BufferedReader in = null;
+ try {
+ in = new BufferedReader( new FileReader(file) );
+ String line = null;
+ for (; (line = in.readLine()) != null;) {
+ if ( _ignoreCase )
+ line = line.toLowerCase();
+ if ( line.contains(_pattern) )
+ return true;
+ }
+ } catch (Exception err) {
+ return false;
+ } finally {
+ IOUtil.closeReader(in);
+ }
+ return false;
+ }
+ };
+ }
+
+ /**
+ * Creates a filter which checks whether a file content matches
+ * regular expression by {@link String#matches(String)}.
+ * @param pattern a pattern
+ */
+ public static FileFilter createFileContentRegExFilter(String pattern) {
+ final String _pattern = pattern;
+
+ return new FileFilter() {
+ @Override
+ public boolean accept(File file) {
+ try {
+ String content = IOUtil.readFileAsString(file);
+ return content.matches(_pattern);
+ } catch (IOException err) {
+ }
+ return false;
+ }
+ };
+ }
+
+ /**
+ * Creates a {@link FileFilter} which checks whether all of
+ * the given filters are satisfied.
+ * @param filters filters
+ */
+ public static FileFilter createAndCombinedFilter(final FileFilter... filters) {
+ return new FileFilter() {
+ @Override
+ public boolean accept(File file) {
+ for ( FileFilter f : filters)
+ if ( !f.accept(file) )
+ return false;
+ return true;
+ }
+ };
+ }
+
+ /**
+ * Creates a {@link FileFilter} which checks whether at least one
+ * of the given filters is satisfied.
+ * @param filters filters
+ */
+ public static FileFilter createOrCombinedFilter(final FileFilter... filters) {
+ return new FileFilter() {
+ @Override
+ public boolean accept(File file) {
+ for ( FileFilter f : filters)
+ if ( f.accept(file) )
+ return true;
+ return false;
+ }
+ };
+ }
+
+}
Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/io/IOUtil.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/io/IOUtil.java 2011-04-14 11:12:50 UTC (rev 1553)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/io/IOUtil.java 2011-04-14 20:15:13 UTC (rev 1554)
@@ -56,6 +56,7 @@
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Enumeration;
+import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
@@ -70,6 +71,7 @@
import org.apache.commons.lang.SystemUtils;
import org.apache.log4j.Logger;
+import de.schmitzm.io.FilterUtil.FilterMode;
import de.schmitzm.lang.LangUtil;
/**
@@ -81,103 +83,9 @@
* @version 1.0
*/
public class IOUtil {
-
private static Logger LOGGER = Logger.getLogger(IOUtil.class.getName());
/**
- * {@link FileFilter}, der alle Dateien akzeptiert, aber keine
- * Verzeichnisse.
- */
- public static final FileFilter ALL_FILES_FILTER = createSimpleFileFilter(
- "*", FilterMode.FILES_ONLY);
- /**
- * {@link FileFilter}, der alle Verzeichnisse akzeptiert, aber keine
- * "normalen" Dateien.
- */
- public static final FileFilter ALL_DIRS_FILTER = createSimpleFileFilter(
- "*", FilterMode.DIR_ONLY);
- /** {@link FileFilter}, der alle Dateien und Verzeichnisse akzeptiert. */
- public static final FileFilter ALL_FILTER = createSimpleFileFilter("*",
- FilterMode.ALL);
-
- /**
- * This {@link IOFileFilter} returns <code>false</code> for files that
- * should be omitted during export and when calculating the size of a
- * {@link DpEntry} folder.
- */
- public static final IOFileFilter BlacklistedFilesFilter = new IOFileFilter() {
-
- @Override
- public boolean accept(File file) {
- if (file.getName().equals("Thumbs.db"))
- return false;
- if (file.getName().endsWith("~"))
- return false;
- if (file.getName().toLowerCase().endsWith("bak"))
- return false;
- if (file.getName().equals("build.xml"))
- return false;
- if (file.getName().equals("pom.xml"))
- return false;
- return true;
- }
-
- @Override
- public boolean accept(File dir, String name) {
- return accept(new File(dir, name));
- }
- };
-
- /**
- * This filter omits SVN and CSV sub-folders.<br/>
- * This {@link IOFileFilter} returns <code>false</code> for folder that
- * should be omitted during export and when calculating the size of a
- * {@link DpEntry} folder or chen copying folders in general.
- */
- public static final IOFileFilter BlacklistedFoldersFilter = FileFilterUtils
- .makeCVSAware(FileFilterUtils.makeSVNAware(null));
-
- /**
- * Modi fuer Filter.
- *
- * @see IOUtil#createSimpleFileFilter(String, FilterMode)
- * @see IOUtil#createRegExFileFilter(String, FilterMode)
- * @author mojays
- *
- */
- public static enum FilterMode {
- /** Der Filter liefert nur Dateien, aber keine Verzeichnisse. */
- FILES_ONLY,
- /** Der Filter liefert nur Verzeichnisse, aber keine Dateien. */
- DIR_ONLY,
- /** Der Filter liefert Dateien und Verzeichnisse. */
- ALL
- }
-
- /**
- * Prueft, ob ein {@link File} einen angegebenen {@link FilterMode}
- * erfuellt.
- *
- * @param file
- * eine Datei oder ein Verzeichnis
- * @param mode
- * Filter-Modus (wenn {@code null} wird {@link FilterMode#ALL}
- * angenommen
- * @return {@code false} wenn die angegebenen Datei {@code null} ist
- */
- public static boolean fileFitsFilterMode(File file, FilterMode mode) {
- if (mode == null)
- mode = FilterMode.ALL;
- final boolean acceptFiles = FilterMode.ALL.equals(mode)
- || FilterMode.FILES_ONLY.equals(mode);
- final boolean acceptDirs = FilterMode.ALL.equals(mode)
- || FilterMode.DIR_ONLY.equals(mode);
-
- return file != null
- && (file.isDirectory() && acceptDirs || acceptFiles);
- }
-
- /**
* Liefert den Index des Dateinames, an der die Dateinamen-Erweiterung
* (inkl. Punkt) beginnt.
*
@@ -475,7 +383,27 @@
}
}
- /**
+ /**
+ * Versucht einen Eingabe-Stream zu schliessen.<br>
+ * Dabei werden bei Misserfolg keine Exceptions geworfen! SK: bei
+ * <code>null</code> wird true zurueckgegeben
+ *
+ * @param in
+ * zu schliessender Stream
+ * @return <code>false</code> falls das Schliessen nicht erfolgreich war
+ */
+ public static boolean closeReader(Reader in) {
+ if (in == null)
+ return true;
+ try {
+ in.close();
+ } catch (Exception err) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
* Versucht einen Eingabe-Stream zu schliessen.<br>
* Dabei werden bei Misserfolg keine Exceptions geworfen! SK: bei
* <code>null</code> wird true zurueckgegeben
@@ -587,88 +515,6 @@
}
/**
- * Erstellt einen Filter fuer einen regulaeren Ausdruck.
- *
- * @param filterStr
- * definiert den Filter
- */
- public static FileFilter createRegExFileFilter(final String regEx,
- final FilterMode mode) {
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file, mode)
- && file.getName().matches(regEx);
- }
- };
- }
-
- /**
- * Erstellt einen Filter fuer einen Filter-String. Dieser kann als Wildcard
- * das Zeichen "*" enthalten. Alle anderen Zeichen werden direkt als Filter
- * verwendet.
- *
- * @param filterStr
- * definiert den Filter
- */
- public static FileFilter createSimpleFileFilter(String filterStr,
- final FilterMode mode) {
- // Gross/Klein-Schreibung ignorieren
- filterStr = filterStr.toLowerCase();
-
- // ##### Filter definiert den "inneren" Teil eines Dateinames #####
- if (filterStr.startsWith("*") && filterStr.endsWith("*")) {
- // Filter besteht nur aus "*" --> alle Dateien akzeptieren
- if (filterStr.length() <= 2)
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file, mode);
- }
- };
- // "inneren" Teil des Filters extrahieren
- final String condStr = filterStr.substring(1,
- filterStr.length() - 1);
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file, mode)
- && file.getName().toLowerCase().contains(condStr);
- }
- };
- }
-
- // ##### Filter definiert den Anfang eines Dateinames #####
- if (filterStr.endsWith("*")) {
- // Anfang des Filters extrahieren
- final String condStr = filterStr.substring(0,
- filterStr.length() - 1);
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file, mode)
- && file.getName().toLowerCase().startsWith(condStr);
- }
- };
- }
- // ##### Filter definiert das Ende eines Dateinames #####
- if (filterStr.startsWith("*")) {
- // Ende des Filters extrahieren
- final String condStr = filterStr.substring(1);
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file, mode)
- && file.getName().toLowerCase().endsWith(condStr);
- }
- };
- }
- // ##### Filter definiert den genauen Dateinamen #####
- final String condStr = filterStr;
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file, mode)
- && file.getName().equalsIgnoreCase(condStr);
- }
- };
- }
-
- /**
* A replacement for File.toURI().toURL().
* <p>
* The handling of file.toURL() is broken; the handling of
@@ -769,6 +615,31 @@
return new File(path3);
}
+ /**
+ * Searches for files in a directory (and its sub folders).
+ * @param dir directory to search in
+ * @param fileFilter filter for the files to search for
+ * @param recursive indicates whether sub directories are
+ * scanned
+ * @param foundFiles list to store the found files in (if {@code null}
+ * a new list is created and returned)
+ */
+ public static Vector<File> findFiles(File dir, FileFilter fileFilter, boolean recursive, Vector<File> foundFiles) {
+ if ( foundFiles == null )
+ foundFiles = new Vector<File>();
+ if ( dir == null || !dir.isDirectory() )
+ return foundFiles;
+
+ File[] files = dir.listFiles(fileFilter);
+ LangUtil.addObjectsToVector(files, foundFiles);
+ if ( recursive ) {
+ File[] subDirs = dir.listFiles(FilterUtil.ALL_DIRS_FILTER);
+ for ( File subDir : subDirs )
+ findFiles(subDir,fileFilter,recursive,foundFiles);
+ }
+ return foundFiles;
+ }
+
/**
* Loescht Dateien oder Verzeichnisse in einem Verzeichnis. Das Verzeichnis
* selbst wird dabei NICHT geloescht, auch wenn es am Ende leer ist!
@@ -841,8 +712,8 @@
LOGGER.error("Missing arguments for DELDIR.");
}
File currDir = new File(".");
- FileFilter filter = createSimpleFileFilter(arg[1],
- FilterMode.DIR_ONLY);
+ FileFilter filter = FilterUtil.createSimpleFileFilter(arg[1],
+ FilterUtil.FilterMode.DIR_ONLY);
int delCount = deleteFiles(currDir, filter, true, true);
} else {
LOGGER.error("Unknown function: " + func);
@@ -1714,5 +1585,115 @@
}
}
+
+ //#######################################################
+ // deprecated stuff which now is located in FilterUtil
+ //#######################################################
+ /**
+ * {@link FileFilter}, der alle Dateien akzeptiert, aber keine
+ * Verzeichnisse.
+ * @deprecated use {@link FilterUtil#ALL_FILES_FILTER}
+ */
+ public static final FileFilter ALL_FILES_FILTER = FilterUtil.ALL_FILES_FILTER;
+ /**
+ * {@link FileFilter}, der alle Verzeichnisse akzeptiert, aber keine
+ * "normalen" Dateien.
+ * @deprecated use {@link FilterUtil#ALL_DIRS_FILTER}
+ */
+ public static final FileFilter ALL_DIRS_FILTER = FilterUtil.ALL_DIRS_FILTER;
+ /**
+ * {@link FileFilter}, der alle Dateien und Verzeichnisse akzeptiert.
+ * @deprecated use {@link FilterUtil#ALL_FILTER}
+ */
+ public static final FileFilter ALL_FILTER = FilterUtil.ALL_FILTER;
+ /**
+ * This {@link IOFileFilter} returns <code>false</code> for files that
+ * should be omitted during export and when calculating the size of a
+ * {@link DpEntry} folder.
+ * @deprecated use {@link FilterUtil#BlacklistedFilesFilter}
+ */
+ public static final IOFileFilter BlacklistedFilesFilter = FilterUtil.BlacklistedFilesFilter;
+
+ /**
+ * This filter omits SVN and CSV sub-folders.<br/>
+ * This {@link IOFileFilter} returns <code>false</code> for folder that
+ * should be omitted during export and when calculating the size of a
+ * {@link DpEntry} folder or chen copying folders in general.
+ * @deprecated use {@link FilterUtil#BlacklistedFoldersFilter}
+ */
+ public static final IOFileFilter BlacklistedFoldersFilter = FilterUtil.BlacklistedFoldersFilter;
+
+ /**
+ * Modi fuer Filter.
+ *
+ * @see IOUtil#createSimpleFileFilter(String, FilterMode)
+ * @see IOUtil#createRegExFileFilter(String, FilterMode)
+ * @author mojays
+ * @deprecated use {@link FilterUtil.FilterMode}
+ */
+ public static enum FilterMode {
+ /** Der Filter liefert nur Dateien, aber keine Verzeichnisse. */
+ FILES_ONLY,
+ /** Der Filter liefert nur Verzeichnisse, aber keine Dateien. */
+ DIR_ONLY,
+ /** Der Filter liefert Dateien und Verzeichnisse. */
+ ALL;
+
+ /**
+ * Unfortunately enums can not be inherited, so we have to use
+ * a stupid converted method.
+ * @return
+ */
+ public FilterUtil.FilterMode convert() {
+ switch( this ) {
+ case ALL: return FilterUtil.FilterMode.ALL;
+ case DIR_ONLY: return FilterUtil.FilterMode.DIR_ONLY;
+ case FILES_ONLY: return FilterUtil.FilterMode.FILES_ONLY;
+ }
+ throw new UnsupportedOperationException("FilterMode can not be converted: "+this);
+ }
+ }
+
+ /**
+ * Prueft, ob ein {@link File} einen angegebenen {@link FilterMode}
+ * erfuellt.
+ *
+ * @param file
+ * eine Datei oder ein Verzeichnis
+ * @param mode
+ * Filter-Modus (wenn {@code null} wird {@link FilterMode#ALL}
+ * angenommen
+ * @return {@code false} wenn die angegebenen Datei {@code null} ist
+ * @deprecated use {@link FilterUtil#fileFitsFilterMode(File, de.schmitzm.io.FilterUtil.FilterMode)}
+ */
+ public static boolean fileFitsFilterMode(File file, FilterMode mode) {
+ return FilterUtil.fileFitsFilterMode(file, mode != null ? mode.convert() : null);
+ }
+
+ /**
+ * Erstellt einen Filter fuer einen regulaeren Ausdruck.
+ *
+ * @param filterStr
+ * definiert den Filter
+ * @deprecated use {@link FilterUtil#createRegExFileFilter(String, de.schmitzm.io.FilterUtil.FilterMode)}
+ */
+ public static FileFilter createRegExFileFilter(final String regEx,
+ final FilterMode mode) {
+ return FilterUtil.createRegExFileFilter(regEx, mode != null ? mode.convert() : null);
+ }
+
+ /**
+ * Erstellt einen Filter fuer einen Filter-String. Dieser kann als Wildcard
+ * das Zeichen "*" enthalten. Alle anderen Zeichen werden direkt als Filter
+ * verwendet.
+ *
+ * @param filterStr
+ * definiert den Filter
+ * @deprecated use {@link FilterUtil#createSimpleFileFilter(String, de.schmitzm.io.FilterUtil.FilterMode)}
+ */
+ public static FileFilter createSimpleFileFilter(String filterStr,
+ final FilterMode mode) {
+ return FilterUtil.createSimpleFileFilter(filterStr, mode != null ? mode.convert() : null);
+ }
}
More information about the Schmitzm-commits
mailing list