1 package net.avcompris.base.testutil.processes;
2
3 import static com.google.common.collect.Iterables.toArray;
4 import static org.apache.commons.lang3.StringUtils.isBlank;
5
6 import java.io.File;
7 import java.util.ArrayList;
8 import java.util.List;
9
10 import org.apache.commons.io.FileUtils;
11 import org.apache.commons.lang3.ArrayUtils;
12
13 abstract class ExtractAllScmIgnoresProcessXXX extends
14 AbstractProcess<ScmIgnore, ScmIgnore[]> {
15
16 protected ExtractAllScmIgnoresProcessXXX(final String... projectNames) {
17
18 this.projectNames = projectNames;
19 }
20
21 private final String[] projectNames;
22
23 @Override
24 public final void execute() throws Exception {
25
26
27
28 for (final File f : new File("src/test/samples/workspace-001")
29 .listFiles()) {
30
31 if (f.isDirectory() && !f.getName().startsWith(".")
32 && ArrayUtils.contains(projectNames, f.getName())) {
33
34 final List<String> i = new ArrayList<String>();
35
36 final boolean isSvn;
37
38 final boolean isHg;
39
40 final File svnFile = new File(f, "svn-dir-prop-base");
41
42 final File hgFile = new File(f, "hg-ignore");
43
44 if (svnFile.exists()) {
45
46 isSvn = true;
47
48 boolean inSvnIgnore = false;
49
50 final List<String> lines = FileUtils.readLines(svnFile);
51 for (final String line : lines) {
52 final String t = line.trim();
53 if (!inSvnIgnore) {
54 if (t.equals("svn:ignore")) {
55 inSvnIgnore = true;
56 }
57 } else {
58 if (t.equals("END")) {
59 break;
60 } else if (!isBlank(t) && !t.startsWith("V ")) {
61 i.add(t);
62 }
63 }
64 }
65
66 } else {
67
68 isSvn = false;
69 }
70
71 if (hgFile.exists()) {
72
73 isHg = true;
74
75 final List<String> lines = FileUtils.readLines(hgFile);
76
77 } else {
78
79 isHg = false;
80 }
81
82 final ScmIgnore current = new ScmIgnore(f.getName(), isSvn,
83 isHg, i);
84
85 setCurrent(current);
86
87 ignores.add(current);
88 }
89 }
90 }
91
92 private final List<ScmIgnore> ignores = new ArrayList<ScmIgnore>();
93
94 @Override
95 public final ScmIgnore[] getResult() {
96
97 return toArray(ignores, ScmIgnore.class);
98 }
99 }