public static List<File> getFilesFromDir (String directory, List<String> exclusionPattern) {
		if (directory == null || directory.equals("")) {
			return null;
		}
		File directoryToScan = new File(directory);
		File[] dirList = directoryToScan.listFiles();
		List<File> fixedSizeResult = Arrays.asList(dirList);
		List<File> result = new ArrayList<>(fixedSizeResult);
		for (File potentialDir : dirList) {
			if (potentialDir.isDirectory()) {
				result.addAll(getFilesFromDir(potentialDir.getAbsolutePath(), exclusionPattern));
			}
		}
		List<Integer> fileToRemove = new ArrayList<>();
		for (int i = 0; i < result.size(); i++) {
			for (int j = 0; j < exclusionPattern.size(); j++) {
				if (result.get(i).getAbsolutePath().indexOf(exclusionPattern.get(j)) > 0) {
					fileToRemove.add(i);
					j = exclusionPattern.size();
				}
			}
		}
		for (int i = fileToRemove.size() - 1; i >= 0; i--) {
			result.remove(fileToRemove.get(i).intValue());
		}
		return result;
	}