View Javadoc
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  		// 1. LOAD IGNORE FILES
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  }