blob: ba3e56de8e63cb5d90fa8b345144cf3c8f64a365 (
plain)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
package org.jetbrains.idea.svn.api;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.svn.SvnVcs;
import org.jetbrains.idea.svn.add.AddClient;
import org.jetbrains.idea.svn.annotate.AnnotateClient;
import org.jetbrains.idea.svn.browse.BrowseClient;
import org.jetbrains.idea.svn.change.ChangeListClient;
import org.jetbrains.idea.svn.checkin.CheckinClient;
import org.jetbrains.idea.svn.checkin.ImportClient;
import org.jetbrains.idea.svn.checkout.CheckoutClient;
import org.jetbrains.idea.svn.checkout.ExportClient;
import org.jetbrains.idea.svn.cleanup.CleanupClient;
import org.jetbrains.idea.svn.conflict.ConflictClient;
import org.jetbrains.idea.svn.content.ContentClient;
import org.jetbrains.idea.svn.copy.CopyMoveClient;
import org.jetbrains.idea.svn.delete.DeleteClient;
import org.jetbrains.idea.svn.diff.DiffClient;
import org.jetbrains.idea.svn.history.HistoryClient;
import org.jetbrains.idea.svn.integrate.MergeClient;
import org.jetbrains.idea.svn.lock.LockClient;
import org.jetbrains.idea.svn.info.InfoClient;
import org.jetbrains.idea.svn.status.StatusClient;
import org.jetbrains.idea.svn.properties.PropertyClient;
import org.jetbrains.idea.svn.revert.RevertClient;
import org.jetbrains.idea.svn.update.RelocateClient;
import org.jetbrains.idea.svn.update.UpdateClient;
import org.jetbrains.idea.svn.upgrade.UpgradeClient;
import org.tmatesoft.svn.core.wc.ISVNStatusFileProvider;
/**
* @author Konstantin Kolosovsky.
*/
public abstract class ClientFactory {
@NotNull
protected SvnVcs myVcs;
protected AddClient addClient;
protected AnnotateClient annotateClient;
protected ContentClient contentClient;
protected HistoryClient historyClient;
protected RevertClient revertClient;
protected DeleteClient deleteClient;
protected StatusClient statusClient;
protected InfoClient infoClient;
protected CopyMoveClient copyMoveClient;
protected ConflictClient conflictClient;
protected PropertyClient propertyClient;
protected MergeClient mergeClient;
protected ChangeListClient changeListClient;
protected CheckoutClient checkoutClient;
protected LockClient myLockClient;
protected CleanupClient myCleanupClient;
protected RelocateClient myRelocateClient;
protected VersionClient myVersionClient;
protected ImportClient myImportClient;
protected ExportClient myExportClient;
protected UpgradeClient myUpgradeClient;
protected BrowseClient myBrowseClient;
protected DiffClient myDiffClient;
protected CheckinClient myCheckinClient;
protected RepositoryFeaturesClient myRepositoryFeaturesClient;
protected ClientFactory(@NotNull SvnVcs vcs) {
myVcs = vcs;
setup();
}
protected abstract void setup();
@NotNull
public AddClient createAddClient() {
return prepare(addClient);
}
@NotNull
public AnnotateClient createAnnotateClient() {
return prepare(annotateClient);
}
@NotNull
public ContentClient createContentClient() {
return prepare(contentClient);
}
@NotNull
public HistoryClient createHistoryClient() {
return prepare(historyClient);
}
@NotNull
public RevertClient createRevertClient() {
return prepare(revertClient);
}
@NotNull
public StatusClient createStatusClient() {
return prepare(statusClient);
}
@NotNull
public StatusClient createStatusClient(@Nullable ISVNStatusFileProvider provider, @NotNull ProgressTracker handler) {
return createStatusClient();
}
@NotNull
public InfoClient createInfoClient() {
return prepare(infoClient);
}
// TODO: Update this in same like other clients - move to corresponding package, rename clients
// New instances should be always created by this method, as setXxx() methods are currently used in update logic
@NotNull
public abstract UpdateClient createUpdateClient();
@NotNull
public DeleteClient createDeleteClient() {
return prepare(deleteClient);
}
@NotNull
public CopyMoveClient createCopyMoveClient() {
return prepare(copyMoveClient);
}
@NotNull
public ConflictClient createConflictClient() {
return prepare(conflictClient);
}
@NotNull
public PropertyClient createPropertyClient() {
return prepare(propertyClient);
}
@NotNull
public MergeClient createMergeClient() {
return prepare(mergeClient);
}
@NotNull
public ChangeListClient createChangeListClient() {
return prepare(changeListClient);
}
@NotNull
public CheckoutClient createCheckoutClient() {
return prepare(checkoutClient);
}
@NotNull
public LockClient createLockClient() {
return prepare(myLockClient);
}
@NotNull
public CleanupClient createCleanupClient() {
return prepare(myCleanupClient);
}
@NotNull
public RelocateClient createRelocateClient() {
return prepare(myRelocateClient);
}
@NotNull
public VersionClient createVersionClient() {
return prepare(myVersionClient);
}
@NotNull
public ImportClient createImportClient() {
return prepare(myImportClient);
}
@NotNull
public ExportClient createExportClient() {
return prepare(myExportClient);
}
@NotNull
public UpgradeClient createUpgradeClient() {
return prepare(myUpgradeClient);
}
@NotNull
public BrowseClient createBrowseClient() {
return prepare(myBrowseClient);
}
@NotNull
public DiffClient createDiffClient() {
return prepare(myDiffClient);
}
@NotNull
public CheckinClient createCheckinClient() {
return prepare(myCheckinClient);
}
@NotNull
public RepositoryFeaturesClient createRepositoryFeaturesClient() {
return prepare(myRepositoryFeaturesClient);
}
@NotNull
protected <T extends SvnClient> T prepare(@NotNull T client) {
client.setVcs(myVcs);
client.setFactory(this);
return client;
}
}
|