1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.scm.provider.svn.svnexe.command.checkout;
20
21 import java.io.File;
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import org.apache.commons.lang3.StringUtils;
26 import org.apache.maven.scm.ScmFile;
27 import org.apache.maven.scm.ScmFileStatus;
28 import org.apache.maven.scm.provider.svn.svnexe.command.AbstractFileCheckingConsumer;
29
30
31
32
33
34 public class SvnCheckOutConsumer extends AbstractFileCheckingConsumer {
35 private static final String CHECKED_OUT_REVISION_TOKEN = "Checked out revision";
36
37 private final List<ScmFile> files = new ArrayList<>();
38
39 public SvnCheckOutConsumer(File workingDirectory) {
40 super(workingDirectory);
41 }
42
43
44
45
46 protected void parseLine(String line) {
47 String statusString = line.substring(0, 1);
48
49 String file = line.substring(3).trim();
50
51 if (file.startsWith(getWorkingDirectory().getAbsolutePath())) {
52 file = StringUtils.substring(
53 file, getWorkingDirectory().getAbsolutePath().length() + 1);
54 }
55
56 ScmFileStatus status;
57
58 if (line.startsWith(CHECKED_OUT_REVISION_TOKEN)) {
59 String revisionString = line.substring(CHECKED_OUT_REVISION_TOKEN.length() + 1, line.length() - 1);
60
61 revision = parseInt(revisionString);
62
63 return;
64 } else if (statusString.equals("A")) {
65 status = ScmFileStatus.ADDED;
66 } else if (statusString.equals("U")) {
67 status = ScmFileStatus.UPDATED;
68 } else {
69
70
71 return;
72 }
73
74 addFile(new ScmFile(file, status));
75 }
76
77
78
79
80
81 public List<ScmFile> getCheckedOutFiles() {
82 return getFiles();
83 }
84
85 protected void addFile(ScmFile file) {
86 files.add(file);
87 }
88
89 protected List<ScmFile> getFiles() {
90 List<ScmFile> onlyFiles = new ArrayList<>();
91 for (ScmFile file : files) {
92
93 if (!(!file.getStatus().equals(ScmFileStatus.DELETED)
94 && !new File(getWorkingDirectory(), file.getPath()).isFile())
95 || !(!file.getStatus().equals(ScmFileStatus.DELETED)
96 && !new File(getWorkingDirectory().getParent(), file.getPath()).isFile())) {
97 onlyFiles.add(file);
98 }
99 }
100
101 return onlyFiles;
102 }
103 }