comparison src/org/tmatesoft/hg/core/HgStatusCommand.java @ 148:1a7a9a20e1f9

Exceptions, javadoc. Initial cancel and progress support
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Wed, 23 Feb 2011 22:36:28 +0100
parents b9700740553a
children 6b55f10ef54b
comparison
equal deleted inserted replaced
147:a05145db4d0c 148:1a7a9a20e1f9
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 static org.tmatesoft.hg.core.HgStatus.Kind.*; 19 import static org.tmatesoft.hg.core.HgStatus.Kind.*;
20 import static org.tmatesoft.hg.repo.HgInternals.wrongLocalRevision;
20 import static org.tmatesoft.hg.repo.HgRepository.*; 21 import static org.tmatesoft.hg.repo.HgRepository.*;
21 22
22 import java.util.ConcurrentModificationException; 23 import java.util.ConcurrentModificationException;
23 24
24 import org.tmatesoft.hg.internal.ChangelogHelper; 25 import org.tmatesoft.hg.internal.ChangelogHelper;
91 mediator.needIgnored = include; 92 mediator.needIgnored = include;
92 return this; 93 return this;
93 } 94 }
94 95
95 /** 96 /**
96 * if set, either base:revision or base:workingdir 97 * If set, either base:revision or base:workingdir
97 * to unset, pass {@link HgRepository#TIP} or {@link HgRepository#BAD_REVISION} 98 * to unset, pass {@link HgRepository#TIP} or {@link HgRepository#BAD_REVISION}
98 * @param revision 99 * @param revision - local revision number to base status from
99 * @return 100 * @return <code>this</code> for convenience
100 */ 101 * @throws IllegalArgumentException when revision is negative or {@link HgRepository#WORKING_COPY}
101 102 */
102 public HgStatusCommand base(int revision) { 103 public HgStatusCommand base(int revision) {
103 if (revision == WORKING_COPY) { 104 if (revision == WORKING_COPY || wrongLocalRevision(revision)) {
104 throw new IllegalArgumentException(); 105 throw new IllegalArgumentException(String.valueOf(revision));
105 } 106 }
106 if (revision == BAD_REVISION) { 107 if (revision == BAD_REVISION) {
107 revision = TIP; 108 revision = TIP;
108 } 109 }
109 startRevision = revision; 110 startRevision = revision;
111 } 112 }
112 113
113 /** 114 /**
114 * Revision without base == --change 115 * Revision without base == --change
115 * Pass {@link HgRepository#WORKING_COPY} or {@link HgRepository#BAD_REVISION} to reset 116 * Pass {@link HgRepository#WORKING_COPY} or {@link HgRepository#BAD_REVISION} to reset
116 * @param revision 117 * @param revision - non-negative local revision number, or any of {@link HgRepository#BAD_REVISION}, {@link HgRepository#WORKING_COPY} or {@link HgRepository#TIP}
117 * @return 118 * @return <code>this</code> for convenience
119 * @throws IllegalArgumentException if local revision number doesn't specify legitimate revision.
118 */ 120 */
119 public HgStatusCommand revision(int revision) { 121 public HgStatusCommand revision(int revision) {
120 if (revision == BAD_REVISION) { 122 if (revision == BAD_REVISION) {
121 revision = WORKING_COPY; 123 revision = WORKING_COPY;
122 } 124 }
123 if (revision != TIP && revision != WORKING_COPY && revision < 0) { 125 if (wrongLocalRevision(revision)) {
124 throw new IllegalArgumentException(String.valueOf(revision)); 126 throw new IllegalArgumentException(String.valueOf(revision));
125 } 127 }
126 endRevision = revision; 128 endRevision = revision;
127 return this; 129 return this;
128 } 130 }
129 131
130 /** 132 /**
131 * Shorthand for {@link #base(int) cmd.base(BAD_REVISION)}{@link #change(int) .revision(revision)} 133 * Shorthand for {@link #base(int) cmd.base(BAD_REVISION)}{@link #change(int) .revision(revision)}
132 * 134 *
133 * @param revision compare given revision against its parent 135 * @param revision compare given revision against its parent
134 * @return 136 * @return <code>this</code> for convenience
135 */ 137 */
136 public HgStatusCommand change(int revision) { 138 public HgStatusCommand change(int revision) {
137 base(BAD_REVISION); 139 base(BAD_REVISION);
138 return revision(revision); 140 return revision(revision);
139 } 141 }
140 142
141 // pass null to reset 143 /**
144 * Limit status operation to certain sub-tree.
145 *
146 * @param pathMatcher - matcher to use, pass <code>null/<code> to reset
147 * @return <code>this</code> for convenience
148 */
142 public HgStatusCommand match(Path.Matcher pathMatcher) { 149 public HgStatusCommand match(Path.Matcher pathMatcher) {
143 mediator.matcher = pathMatcher; 150 mediator.matcher = pathMatcher;
144 return this; 151 return this;
145 } 152 }
146 153