1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package com.aragost.javahg.commands;
28
29 import java.util.List;
30 import java.util.Map;
31
32 import com.google.common.collect.Lists;
33 import com.google.common.collect.Maps;
34
35
36
37
38
39
40 public class StatusResult {
41 private List<String> modified = Lists.newArrayList();
42 private List<String> added = Lists.newArrayList();
43 private List<String> removed = Lists.newArrayList();
44 private List<String> clean = Lists.newArrayList();
45 private List<String> missing = Lists.newArrayList();
46 private List<String> unknown = Lists.newArrayList();
47 private List<String> ignored = Lists.newArrayList();
48
49 private Map<String, String> copied = Maps.newHashMap();
50
51
52
53
54 public List<String> getModified() {
55 return modified;
56 }
57
58
59
60
61
62
63
64
65
66
67
68
69 public List<String> getAdded() {
70 return added;
71 }
72
73
74
75
76 public List<String> getRemoved() {
77 return removed;
78 }
79
80
81
82
83 public List<String> getClean() {
84 return clean;
85 }
86
87
88
89
90 public List<String> getMissing() {
91 return missing;
92 }
93
94
95
96
97 public List<String> getUnknown() {
98 return unknown;
99 }
100
101
102
103
104 public List<String> getIgnored() {
105 return ignored;
106 }
107
108
109
110
111
112
113
114 public Map<String, String> getCopied() {
115 return copied;
116 }
117
118 void addLine(StatusLine current) {
119 String fileName = current.getFileName();
120 switch (current.getType()) {
121 case ADDED:
122 this.added.add(fileName);
123 break;
124 case CLEAN:
125 this.clean.add(fileName);
126 break;
127 case IGNORED:
128 this.ignored.add(fileName);
129 break;
130 case MISSING:
131 this.missing.add(fileName);
132 break;
133 case MODIFIED:
134 this.modified.add(fileName);
135 break;
136 case ORIGIN:
137
138
139 String newName = this.added.remove(this.added.size() - 1);
140 this.copied.put(newName, fileName);
141 break;
142 case REMOVED:
143 this.removed.add(fileName);
144 break;
145 case UNKNOWN:
146 this.unknown.add(fileName);
147 break;
148 default:
149 throw new IllegalStateException("Unhandled StatusLine type: " + current.getType());
150 }
151 }
152
153 @Override
154 public String toString() {
155 StringBuilder s = new StringBuilder("status(");
156 toStringHelper(s, this.modified, "modified");
157 toStringHelper(s, this.added, "added");
158 toStringHelper(s, this.removed, "removed");
159 toStringHelper(s, this.unknown, "unknown");
160 toStringHelper(s, this.missing, "missing");
161 toStringHelper(s, this.ignored, "ignored");
162 toStringHelper(s, this.clean, "clean");
163 s.append(")");
164 return s.toString();
165 }
166
167 private void toStringHelper(StringBuilder s, List<String> coll, String name) {
168 int size = coll.size();
169 if (size == 0) {
170 return;
171 }
172 s.append('[');
173 if (size > 5) {
174 s.append(size).append(" files");
175 } else {
176 char sep = '=';
177 s.append(name);
178 for (String e : coll) {
179 s.append(sep).append(e);
180 sep = ',';
181 }
182 }
183 s.append(']');
184 }
185 }