1 package org.csc.phynixx.loggersystem.logger.channellogger;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import java.io.File;
25
26
27
28
29 class LogFileTraverser {
30
31 public interface ICollectorCallback {
32 void match(File file, LogFilenameMatcher.LogFilenameParts parts);
33 }
34
35 private LogFilenameMatcher logFileMatcher = null;
36
37
38 LogFileTraverser(LogFilenameMatcher logFileMatcher, File startDirectory, ICollectorCallback cb) {
39 super();
40 this.logFileMatcher = logFileMatcher;
41 if (startDirectory.exists() && startDirectory.isDirectory()) {
42 this.iterateDirectory(startDirectory, cb);
43 }
44 }
45
46
47 private void iterateDirectory(File startDirectory, ICollectorCallback cb) {
48 File[] files = startDirectory.listFiles();
49 if (files == null || files.length == 0) {
50 return;
51 }
52 for (int i = 0; i < files.length; i++) {
53 if (files[i].isDirectory()) {
54 iterateDirectory(files[i], cb);
55 } else {
56 LogFilenameMatcher.LogFilenameParts parts =
57 this.logFileMatcher.matches(files[i].getName());
58 if (parts != null) {
59 cb.match(files[i], parts);
60 }
61 }
62 }
63
64 }
65
66
67 }