comparison src/org/tmatesoft/hg/core/HgOutgoingCommand.java @ 194:344e8d7e4d6e

Use common low to hi-level changeset api transformer
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Fri, 15 Apr 2011 03:35:08 +0200
parents e5407b5a586a
children c9b305df0b89
comparison
equal deleted inserted replaced
193:37f3d4a596e4 194:344e8d7e4d6e
15 * contact TMate Software at support@hg4j.com 15 * contact TMate Software at support@hg4j.com
16 */ 16 */
17 package org.tmatesoft.hg.core; 17 package org.tmatesoft.hg.core;
18 18
19 import java.util.List; 19 import java.util.List;
20 import java.util.Set;
21 import java.util.TreeSet;
20 22
21 import org.tmatesoft.hg.internal.RepositoryComparator; 23 import org.tmatesoft.hg.internal.RepositoryComparator;
22 import org.tmatesoft.hg.repo.HgChangelog; 24 import org.tmatesoft.hg.repo.HgChangelog;
23 import org.tmatesoft.hg.repo.HgRemoteRepository; 25 import org.tmatesoft.hg.repo.HgRemoteRepository;
24 import org.tmatesoft.hg.repo.HgRepository; 26 import org.tmatesoft.hg.repo.HgRepository;
34 36
35 private final HgRepository localRepo; 37 private final HgRepository localRepo;
36 private HgRemoteRepository remoteRepo; 38 private HgRemoteRepository remoteRepo;
37 private boolean includeSubrepo; 39 private boolean includeSubrepo;
38 private RepositoryComparator comparator; 40 private RepositoryComparator comparator;
41 private Set<String> branches;
39 42
40 public HgOutgoingCommand(HgRepository hgRepo) { 43 public HgOutgoingCommand(HgRepository hgRepo) {
41 localRepo = hgRepo; 44 localRepo = hgRepo;
42 } 45 }
43 46
50 comparator = null; 53 comparator = null;
51 return this; 54 return this;
52 } 55 }
53 56
54 /** 57 /**
55 * PLACEHOLDER, NOT IMPLEMENTED YET. 58 * Select specific branch to pull.
59 * Multiple branch specification possible (changeset from any of these would be included in result).
60 * Note, {@link #executeLite(Object)} does not respect this setting.
56 * 61 *
57 * Select specific branch to pull 62 * @param branch - branch name, case-sensitive, non-null.
58 * @return <code>this</code> for convenience 63 * @return <code>this</code> for convenience
64 * @throws IllegalArgumentException when branch argument is null
59 */ 65 */
60 public HgOutgoingCommand branch(String branch) { 66 public HgOutgoingCommand branch(String branch) {
61 throw HgRepository.notImplemented(); 67 if (branch == null) {
68 throw new IllegalArgumentException();
69 }
70 if (branches == null) {
71 branches = new TreeSet<String>();
72 }
73 branches.add(branch);
74 return this;
62 } 75 }
63 76
64 /** 77 /**
65 * PLACEHOLDER, NOT IMPLEMENTED YET. 78 * PLACEHOLDER, NOT IMPLEMENTED YET.
66 * 79 *
70 includeSubrepo = include; 83 includeSubrepo = include;
71 throw HgRepository.notImplemented(); 84 throw HgRepository.notImplemented();
72 } 85 }
73 86
74 /** 87 /**
75 * Lightweight check for outgoing changes. 88 * Lightweight check for outgoing changes.
89 * Reported changes are from any branch (limits set by {@link #branch(String)} are not taken into account.
76 * 90 *
77 * @param context 91 * @param context
78 * @return list on local nodes known to be missing at remote server 92 * @return list on local nodes known to be missing at remote server
79 */ 93 */
80 public List<Nodeid> executeLite(Object context) throws HgException, CancelledException { 94 public List<Nodeid> executeLite(Object context) throws HgException, CancelledException {
88 */ 102 */
89 public void executeFull(final HgLogCommand.Handler handler) throws HgException, CancelledException { 103 public void executeFull(final HgLogCommand.Handler handler) throws HgException, CancelledException {
90 if (handler == null) { 104 if (handler == null) {
91 throw new IllegalArgumentException("Delegate can't be null"); 105 throw new IllegalArgumentException("Delegate can't be null");
92 } 106 }
93 getComparator(handler).visitLocalOnlyRevisions(new ChangesetTransformer(localRepo, handler)); 107 ChangesetTransformer inspector = new ChangesetTransformer(localRepo, handler);
108 inspector.limitBranches(branches);
109 getComparator(handler).visitLocalOnlyRevisions(inspector);
94 } 110 }
95 111
96 private RepositoryComparator getComparator(Object context) throws HgException, CancelledException { 112 private RepositoryComparator getComparator(Object context) throws HgException, CancelledException {
97 if (remoteRepo == null) { 113 if (remoteRepo == null) {
98 throw new IllegalArgumentException("Shall specify remote repository to compare against"); 114 throw new IllegalArgumentException("Shall specify remote repository to compare against");