comparison cmdline/org/tmatesoft/hg/console/Main.java @ 423:9c9c442b5f2e

Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Fri, 23 Mar 2012 22:51:18 +0100
parents ccd7d25e5aea
children 6437d261048a
comparison
equal deleted inserted replaced
422:5d1cc7366d04 423:9c9c442b5f2e
26 import java.util.HashSet; 26 import java.util.HashSet;
27 import java.util.List; 27 import java.util.List;
28 import java.util.Map; 28 import java.util.Map;
29 29
30 import org.junit.Assert; 30 import org.junit.Assert;
31 import org.tmatesoft.hg.core.HgBadStateException;
32 import org.tmatesoft.hg.core.HgCallbackTargetException; 31 import org.tmatesoft.hg.core.HgCallbackTargetException;
33 import org.tmatesoft.hg.core.HgCatCommand; 32 import org.tmatesoft.hg.core.HgCatCommand;
34 import org.tmatesoft.hg.core.HgChangeset; 33 import org.tmatesoft.hg.core.HgChangeset;
35 import org.tmatesoft.hg.core.HgChangesetFileSneaker; 34 import org.tmatesoft.hg.core.HgChangesetFileSneaker;
36 import org.tmatesoft.hg.core.HgChangesetTreeHandler; 35 import org.tmatesoft.hg.core.HgChangesetTreeHandler;
55 import org.tmatesoft.hg.repo.HgInternals; 54 import org.tmatesoft.hg.repo.HgInternals;
56 import org.tmatesoft.hg.repo.HgManifest; 55 import org.tmatesoft.hg.repo.HgManifest;
57 import org.tmatesoft.hg.repo.HgManifest.Flags; 56 import org.tmatesoft.hg.repo.HgManifest.Flags;
58 import org.tmatesoft.hg.repo.HgMergeState; 57 import org.tmatesoft.hg.repo.HgMergeState;
59 import org.tmatesoft.hg.repo.HgRepository; 58 import org.tmatesoft.hg.repo.HgRepository;
59 import org.tmatesoft.hg.repo.HgRuntimeException;
60 import org.tmatesoft.hg.repo.HgStatusCollector; 60 import org.tmatesoft.hg.repo.HgStatusCollector;
61 import org.tmatesoft.hg.repo.HgStatusInspector; 61 import org.tmatesoft.hg.repo.HgStatusInspector;
62 import org.tmatesoft.hg.repo.HgSubrepoLocation; 62 import org.tmatesoft.hg.repo.HgSubrepoLocation;
63 import org.tmatesoft.hg.repo.HgSubrepoLocation.Kind; 63 import org.tmatesoft.hg.repo.HgSubrepoLocation.Kind;
64 import org.tmatesoft.hg.repo.HgWorkingCopyStatusCollector; 64 import org.tmatesoft.hg.repo.HgWorkingCopyStatusCollector;
129 private void buildFileLog() throws Exception { 129 private void buildFileLog() throws Exception {
130 HgLogCommand cmd = new HgLogCommand(hgRepo); 130 HgLogCommand cmd = new HgLogCommand(hgRepo);
131 cmd.file("file1", false); 131 cmd.file("file1", false);
132 cmd.execute(new HgChangesetTreeHandler() { 132 cmd.execute(new HgChangesetTreeHandler() {
133 public void next(HgChangesetTreeHandler.TreeElement entry) { 133 public void next(HgChangesetTreeHandler.TreeElement entry) {
134 try { 134 StringBuilder sb = new StringBuilder();
135 StringBuilder sb = new StringBuilder(); 135 HashSet<Nodeid> test = new HashSet<Nodeid>(entry.childRevisions());
136 HashSet<Nodeid> test = new HashSet<Nodeid>(entry.childRevisions()); 136 for (HgChangeset cc : entry.children()) {
137 for (HgChangeset cc : entry.children()) { 137 sb.append(cc.getRevisionIndex());
138 sb.append(cc.getRevisionIndex()); 138 sb.append(':');
139 sb.append(':'); 139 sb.append(cc.getNodeid().shortNotation());
140 sb.append(cc.getNodeid().shortNotation()); 140 sb.append(", ");
141 sb.append(", "); 141 }
142 final Pair<Nodeid, Nodeid> parents = entry.parentRevisions();
143 final boolean isJoin = !parents.first().isNull() && !parents.second().isNull();
144 final boolean isFork = entry.children().size() > 1;
145 final HgChangeset cset = entry.changeset();
146 System.out.printf("%d:%s - %s\n", cset.getRevisionIndex(), cset.getNodeid().shortNotation(), cset.getComment());
147 if (!isJoin && !isFork && !entry.children().isEmpty()) {
148 System.out.printf("\t=> %s\n", sb);
149 }
150 if (isJoin) {
151 HgChangeset p1 = entry.parents().first();
152 HgChangeset p2 = entry.parents().second();
153 System.out.printf("\tjoin <= (%d:%s, %d:%s)", p1.getRevisionIndex(), p1.getNodeid().shortNotation(), p2.getRevisionIndex(), p2.getNodeid().shortNotation());
154 if (isFork) {
155 System.out.print(", ");
142 } 156 }
143 final Pair<Nodeid, Nodeid> parents = entry.parentRevisions(); 157 }
144 final boolean isJoin = !parents.first().isNull() && !parents.second().isNull(); 158 if (isFork) {
145 final boolean isFork = entry.children().size() > 1; 159 if (!isJoin) {
146 final HgChangeset cset = entry.changeset(); 160 System.out.print('\t');
147 System.out.printf("%d:%s - %s\n", cset.getRevisionIndex(), cset.getNodeid().shortNotation(), cset.getComment());
148 if (!isJoin && !isFork && !entry.children().isEmpty()) {
149 System.out.printf("\t=> %s\n", sb);
150 } 161 }
151 if (isJoin) { 162 System.out.printf("fork => [%s]", sb);
152 HgChangeset p1 = entry.parents().first(); 163 }
153 HgChangeset p2 = entry.parents().second(); 164 if (isJoin || isFork) {
154 System.out.printf("\tjoin <= (%d:%s, %d:%s)", p1.getRevisionIndex(), p1.getNodeid().shortNotation(), p2.getRevisionIndex(), p2.getNodeid().shortNotation()); 165 System.out.println();
155 if (isFork) {
156 System.out.print(", ");
157 }
158 }
159 if (isFork) {
160 if (!isJoin) {
161 System.out.print('\t');
162 }
163 System.out.printf("fork => [%s]", sb);
164 }
165 if (isJoin || isFork) {
166 System.out.println();
167 }
168 } catch (HgException ex) {
169 ex.printStackTrace();
170 } 166 }
171 } 167 }
172 }); 168 });
173 } 169 }
174 170
195 } 191 }
196 if (join) { 192 if (join) {
197 System.out.print("]"); 193 System.out.print("]");
198 } 194 }
199 fileLocalRevisions++; 195 fileLocalRevisions++;
200 } catch (HgException ex) { 196 } catch (HgRuntimeException ex) {
201 ex.printStackTrace(); 197 ex.printStackTrace();
202 } 198 }
203 } 199 }
204 }); 200 });
205 System.out.println(); 201 System.out.println();
384 final ByteArrayChannel sink = new ByteArrayChannel(); 380 final ByteArrayChannel sink = new ByteArrayChannel();
385 r.putContentTo(sink); 381 r.putContentTo(sink);
386 return String.format("%s %s (%d bytes)", r.getPath(), r.getRevision(), sink.toArray().length); 382 return String.format("%s %s (%d bytes)", r.getPath(), r.getRevision(), sink.toArray().length);
387 } 383 }
388 384
389 private void testFileStatus() throws HgException, IOException { 385 private void testFileStatus() throws Exception {
390 // final Path path = Path.create("src/org/tmatesoft/hg/util/"); 386 // final Path path = Path.create("src/org/tmatesoft/hg/util/");
391 // final Path path = Path.create("src/org/tmatesoft/hg/internal/Experimental.java"); 387 // final Path path = Path.create("src/org/tmatesoft/hg/internal/Experimental.java");
392 // final Path path = Path.create("missing-dir/"); 388 // final Path path = Path.create("missing-dir/");
393 // HgWorkingCopyStatusCollector wcsc = HgWorkingCopyStatusCollector.create(hgRepo, path); 389 // HgWorkingCopyStatusCollector wcsc = HgWorkingCopyStatusCollector.create(hgRepo, path);
394 HgWorkingCopyStatusCollector wcsc = HgWorkingCopyStatusCollector.create(hgRepo, new PathGlobMatcher("mi**")); 390 HgWorkingCopyStatusCollector wcsc = HgWorkingCopyStatusCollector.create(hgRepo, new PathGlobMatcher("mi**"));
504 System.out.printf("%d : %s\n", manifestRevision, nid); 500 System.out.printf("%d : %s\n", manifestRevision, nid);
505 return true; 501 return true;
506 } 502 }
507 503
508 public boolean next(Nodeid nid, String fname, String flags) { 504 public boolean next(Nodeid nid, String fname, String flags) {
509 throw new HgBadStateException(HgManifest.Inspector2.class.getName()); 505 throw new IllegalStateException(HgManifest.Inspector2.class.getName());
510 } 506 }
511 public boolean next(Nodeid nid, Path fname, Flags flags) { 507 public boolean next(Nodeid nid, Path fname, Flags flags) {
512 System.out.println(nid + "\t" + fname + "\t\t" + flags); 508 System.out.println(nid + "\t" + fname + "\t\t" + flags);
513 return true; 509 return true;
514 } 510 }
527 } 523 }
528 public void dir(Path p) { 524 public void dir(Path p) {
529 System.out.println(p); 525 System.out.println(p);
530 } 526 }
531 public void file(HgFileRevision fileRevision) { 527 public void file(HgFileRevision fileRevision) {
532 try { 528 System.out.print(fileRevision.getRevision());;
533 System.out.print(fileRevision.getRevision());; 529 System.out.print(" ");
534 System.out.print(" "); 530 System.out.printf("%s %s", fileRevision.getParents().first().shortNotation(), fileRevision.getParents().second().shortNotation());
535 System.out.printf("%s %s", fileRevision.getParents().first().shortNotation(), fileRevision.getParents().second().shortNotation()); 531 System.out.print(" ");
536 System.out.print(" "); 532 System.out.println(fileRevision.getPath());
537 System.out.println(fileRevision.getPath());
538 } catch (HgException ex) {
539 throw new HgCallbackTargetException.Wrap(ex);
540 }
541 } 533 }
542 534
543 public void end(Nodeid manifestRevision) { 535 public void end(Nodeid manifestRevision) {
544 System.out.println(); 536 System.out.println();
545 } 537 }