1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jadira.scanner.classfile.filter;
17
18 import java.io.File;
19
20 import org.jadira.scanner.core.api.Filter;
21 import org.jadira.scanner.core.filter.AbstractFilter;
22
23
24
25
26 public class PackageFileFilter extends AbstractFilter<File> implements Filter<File> {
27
28 private static final char FILE_SEPARATOR = System.getProperty("file.separator").charAt(0);
29
30 private final String name;
31
32 public PackageFileFilter(String name, boolean trimTrailingClassName) {
33
34 String myName = name.replace('.', FILE_SEPARATOR);
35
36 if (trimTrailingClassName) {
37 int lastDirIndex = myName.lastIndexOf(FILE_SEPARATOR);
38 if (lastDirIndex == -1) {
39 this.name = myName;
40 } else {
41 this.name = myName.substring(0, lastDirIndex);
42 }
43 } else {
44 this.name = myName;
45 }
46 }
47
48 @Override
49 public boolean accept(File element) {
50
51 String matchName = element.getPath();
52 int lastDirIndex = matchName.lastIndexOf(FILE_SEPARATOR);
53 if (lastDirIndex != -1) {
54 matchName = element.getPath().substring(0, lastDirIndex);
55 }
56
57 boolean accept = matchName.endsWith(name);
58 return accept;
59 }
60 }