Changeset 5735 for CMDIValidator


Ignore:
Timestamp:
10/20/14 16:26:44 (10 years ago)
Author:
Oliver Schonefeld
Message:
  • expose file filter to command line tool and provide wildcard file natching
Location:
CMDIValidator/trunk/cmdi-validator-tool
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CMDIValidator/trunk/cmdi-validator-tool/pom.xml

    r5387 r5735  
    6161            <artifactId>humanize-slim</artifactId>
    6262            <version>1.1.5</version>
     63        </dependency>
     64        <dependency>
     65                <groupId>commons-io</groupId>
     66                <artifactId>commons-io</artifactId>
     67                <version>2.4</version>
    6368        </dependency>
    6469    </dependencies>
  • CMDIValidator/trunk/cmdi-validator-tool/src/main/java/eu/clarin/cmdi/validator/tool/CMDIValidatorTool.java

    r5402 r5735  
    2020
    2121import java.io.File;
     22import java.io.FileFilter;
    2223import java.io.PrintWriter;
    2324import java.util.Locale;
     
    2526import java.util.concurrent.atomic.AtomicInteger;
    2627import java.util.concurrent.atomic.AtomicLong;
    27 
    2828import net.java.truevfs.access.TFile;
    2929import net.java.truevfs.access.TVFS;
     
    3838import org.apache.commons.cli.Options;
    3939import org.apache.commons.cli.ParseException;
     40import org.apache.commons.io.filefilter.WildcardFileFilter;
    4041import org.slf4j.Logger;
    4142import org.slf4j.LoggerFactory;
     
    6869    private static final char OPT_NO_SCHEMATRON          = 'S';
    6970    private static final char OPT_SCHEMATRON_FILE        = 's';
     71    private static final char OPT_FILENAME_FILTER        = 'F';
    7072    private static final char OPT_CHECK_PIDS             = 'p';
    7173    private static final char OPT_CHECK_AND_RESOLVE_PIDS = 'P';
     
    8890        boolean disableSchematron = false;
    8991        File schematronFile       = null;
     92        FileFilter fileFilter     = null;
    9093        boolean checkPids         = false;
    9194        boolean checkAndResolvePids   = false;
     
    168171                schematronFile = new File(name);
    169172            }
     173            if (line.hasOption(OPT_FILENAME_FILTER)) {
     174                String wildcard = line.getOptionValue(OPT_FILENAME_FILTER);
     175                if ((wildcard == null) || wildcard.isEmpty()) {
     176                    throw new ParseException("invalid argument for -" +
     177                            OPT_FILENAME_FILTER);
     178                }
     179                try {
     180                    fileFilter = new WildcardFileFilter(wildcard);
     181                } catch (IllegalArgumentException e) {
     182                    throw new ParseException("invalid argument for -" +
     183                            OPT_FILENAME_FILTER);
     184                }
     185            }
     186
    170187            if (line.hasOption(OPT_CHECK_PIDS)) {
    171188                checkPids = true;
     
    223240                    if (estimate && logger.isInfoEnabled()) {
    224241                        logger.debug("counting files ...");
    225                         totalFileCount = countFiles(archive);
     242                        totalFileCount = countFiles(archive, fileFilter);
    226243                    }
    227244
     
    243260                    if (disableSchematron) {
    244261                        builder.disableSchematron();
     262                    }
     263                    if (fileFilter != null) {
     264                        builder.fileFilter(fileFilter);
    245265                    }
    246266
     
    438458                .create(OPT_SCHEMATRON_FILE));
    439459        options.addOptionGroup(g3);
     460        options.addOption(OptionBuilder
     461                .withDescription("only process filenames matching a wildcard")
     462                .hasArg()
     463                .withArgName("WILDCARD")
     464                .withLongOpt("file-filter")
     465                .create(OPT_FILENAME_FILTER));
    440466        OptionGroup g4 = new OptionGroup();
    441467        g4.addOption(OptionBuilder
     
    452478
    453479
    454     private static final int countFiles(TFile directory) {
     480    private static final int countFiles(TFile directory,
     481            FileFilter fileFilter) {
    455482        int count = 0;
    456483        final TFile[] entries = directory.listFiles();
     
    458485            for (TFile entry : entries) {
    459486                if (entry.isDirectory()) {
    460                     count += countFiles(entry);
     487                    count += countFiles(entry, fileFilter);
    461488                } else {
     489                    if ((fileFilter != null) && !fileFilter.accept(entry)) {
     490                        continue;
     491                    }
    462492                    count++;
    463493                }
Note: See TracChangeset for help on using the changeset viewer.