FileFilter.java revision 051ed37b54dbc163dcfd67bf63f5ee749963ca20
1738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber/******************************************************************************* 237115f4ba4f6126b8c3352ac890c653e428a7dd8Marc R. Hoffmann * Copyright (c) 2009, 2013 Mountainminds GmbH & Co. KG and Contributors 3738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * All rights reserved. This program and the accompanying materials 4738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * are made available under the terms of the Eclipse Public License v1.0 5738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * which accompanies this distribution, and is available at 6738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * http://www.eclipse.org/legal/epl-v10.html 7738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * 8738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * Contributors: 9738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * Evgeny Mandrikov - initial API and implementation 1022f5498ca7eb64071f788a166f3054ec7bee658dKyle Lieber * Kyle Lieber - implementation of CheckMojo 11051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov * 12738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber *******************************************************************************/ 13738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieberpackage org.jacoco.maven; 14738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber 15738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieberimport org.apache.commons.collections.CollectionUtils; 16051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikovimport org.codehaus.plexus.util.FileUtils; 17738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieberimport org.codehaus.plexus.util.StringUtils; 18738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber 19051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikovimport java.io.File; 20051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikovimport java.io.IOException; 21051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikovimport java.util.List; 22051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov 23738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber/** 24738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * A file filter using includes/excludes patterns. 25738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber */ 26738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieberpublic class FileFilter { 27738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber 28738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber private static final String DEFAULT_INCLUDES = "**"; 29738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber private static final String DEFAULT_EXCLUDES = ""; 30738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber 31738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber private final List<String> includes; 32738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber private final List<String> excludes; 33738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber 34738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber /** 35738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * Construct a new FileFilter 36738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * 37738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * @param includes 38738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * list of includes patterns 39738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * @param excludes 40738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * list of excludes patterns 41738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber */ 42738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber public FileFilter(final List<String> includes, final List<String> excludes) { 43738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber this.includes = includes; 44738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber this.excludes = excludes; 45738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber } 46738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber 47738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber /** 48051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov * Returns a list of files. 49051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov * 50051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov * @param directory 51051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov * the directory to scan 52051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov * @return a list of files 53051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov * @throws IOException 54051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov */ 55051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov @SuppressWarnings("unchecked") 56051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov public List<String> getFileNames(final File directory) throws IOException { 57051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov return FileUtils.getFileNames(directory, getIncludes(), getExcludes(), 58051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov false); 59051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov } 60051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov 61051ed37b54dbc163dcfd67bf63f5ee749963ca20Evgeny Mandrikov /** 62738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * Get the includes pattern 63738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * 64738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * @return the pattern 65738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber */ 66738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber public String getIncludes() { 67738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber return this.buildPattern(this.includes, DEFAULT_INCLUDES); 68738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber } 69738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber 70738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber /** 71738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * Get the excludes pattern 72738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * 73738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber * @return the pattern 74738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber */ 75738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber public String getExcludes() { 76738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber return this.buildPattern(this.excludes, DEFAULT_EXCLUDES); 77738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber } 78738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber 79738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber private String buildPattern(final List<String> patterns, 80738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber final String defaultPattern) { 81738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber String pattern = defaultPattern; 82738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber if (CollectionUtils.isNotEmpty(patterns)) { 83738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber pattern = StringUtils.join(patterns.iterator(), ","); 84738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber } 85738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber return pattern; 86738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber } 87738bc0db5c9d895b2f984a499f3428cfa5376ae9Kyle Lieber} 88