1 package org.apache.maven.scm.provider.svn.svnexe.command;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.ArrayList;
24 import java.util.Iterator;
25 import java.util.List;
26
27 import org.apache.maven.scm.ScmFile;
28 import org.apache.maven.scm.ScmFileStatus;
29 import org.apache.maven.scm.util.AbstractConsumer;
30
31
32
33
34
35 public abstract class AbstractFileCheckingConsumer
36 extends AbstractConsumer
37 {
38 protected File workingDirectory;
39
40 private final List<ScmFile> files = new ArrayList<>();
41
42 protected int revision;
43
44 private boolean filtered;
45
46 public AbstractFileCheckingConsumer( File workingDirectory )
47 {
48 this.workingDirectory = workingDirectory;
49 }
50
51
52 public final void consumeLine( String line )
53 {
54 if ( line.length() <= 3 )
55 {
56 return;
57 }
58
59 if ( logger.isDebugEnabled() )
60 {
61 logger.debug( line );
62 }
63
64 try
65 {
66 parseLine( line );
67 }
68 catch ( RuntimeException re )
69 {
70 logger.warn( "RuntimeException while parsing: " + line , re );
71 throw re;
72 }
73 }
74
75 protected abstract void parseLine( String line );
76
77 protected List<ScmFile> getFiles()
78 {
79
80 if ( !filtered )
81 {
82 for ( Iterator<ScmFile> ite = files.iterator(); ite.hasNext(); )
83 {
84 ScmFile file = ite.next();
85 if ( !file.getStatus().equals( ScmFileStatus.DELETED )
86 && !new File( workingDirectory, file.getPath() ).isFile() )
87 {
88 ite.remove();
89 }
90 }
91
92 filtered = true;
93 }
94
95 return files;
96 }
97
98 protected final int parseInt( String revisionString )
99 {
100 try
101 {
102 return Integer.parseInt( revisionString );
103 }
104 catch ( NumberFormatException ex )
105 {
106 return 0;
107 }
108 }
109
110 protected void addFile( ScmFile file )
111 {
112 files.add( file );
113 }
114
115 public final int getRevision()
116 {
117 return revision;
118 }
119
120 public File getWorkingDirectory()
121 {
122 return workingDirectory;
123 }
124
125 }