Extract inserting link to original change into own import step
Change-Id: Icbb53014c21b082ef65bd82ad261df1c36e48de0
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/InsertLinkToOriginalChangeStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/InsertLinkToOriginalChangeStep.java
new file mode 100644
index 0000000..0205745
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/InsertLinkToOriginalChangeStep.java
@@ -0,0 +1,109 @@
+//Copyright (C) 2015 The Android Open Source Project
+//
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+
+package com.googlesource.gerrit.plugins.importer;
+
+import com.google.gerrit.common.TimeUtil;
+import com.google.gerrit.extensions.common.ChangeInfo;
+import com.google.gerrit.reviewdb.client.Account;
+import com.google.gerrit.reviewdb.client.Change;
+import com.google.gerrit.reviewdb.client.ChangeMessage;
+import com.google.gerrit.reviewdb.server.ReviewDb;
+import com.google.gerrit.server.ChangeMessagesUtil;
+import com.google.gerrit.server.ChangeUtil;
+import com.google.gerrit.server.CurrentUser;
+import com.google.gerrit.server.IdentifiedUser;
+import com.google.gerrit.server.notedb.ChangeUpdate;
+import com.google.gerrit.server.project.ChangeControl;
+import com.google.gerrit.server.project.NoSuchChangeException;
+import com.google.gwtorm.server.OrmException;
+import com.google.inject.Inject;
+import com.google.inject.assistedinject.Assisted;
+
+import java.io.IOException;
+
+class InsertLinkToOriginalChangeStep {
+
+ private final CurrentUser currentUser;
+ private final ChangeUpdate.Factory updateFactory;
+ private final IdentifiedUser.GenericFactory genericUserFactory;
+ private final ChangeControl.GenericFactory changeControlFactory;
+ private final ReviewDb db;
+ private final ChangeMessagesUtil cmUtil;
+ private final String fromGerrit;
+ private final Change change;
+ private final ChangeInfo changeInfo;
+
+ interface Factory {
+ InsertLinkToOriginalChangeStep create(String fromGerrit, Change change,
+ ChangeInfo changeInfo);
+ }
+
+ @Inject
+ InsertLinkToOriginalChangeStep(CurrentUser currentUser,
+ ChangeUpdate.Factory updateFactory,
+ IdentifiedUser.GenericFactory genericUserFactory,
+ ChangeControl.GenericFactory changeControlFactory,
+ ReviewDb db,
+ ChangeMessagesUtil cmUtil,
+ @Assisted String fromGerrit,
+ @Assisted Change change,
+ @Assisted ChangeInfo changeInfo) {
+ this.currentUser = currentUser;
+ this.updateFactory = updateFactory;
+ this.genericUserFactory = genericUserFactory;
+ this.changeControlFactory = changeControlFactory;
+ this.db = db;
+ this.cmUtil = cmUtil;
+ this.fromGerrit = fromGerrit;
+ this.change = change;
+ this.changeInfo = changeInfo;
+ }
+
+ void insert() throws NoSuchChangeException, OrmException, IOException {
+ insertMessage(change, "Imported from " + changeUrl(changeInfo));
+ }
+
+ private String changeUrl(ChangeInfo c) {
+ StringBuilder url = new StringBuilder();
+ url.append(ensureSlash(fromGerrit)).append(c._number);
+ return url.toString();
+ }
+
+ private void insertMessage(Change change, String message)
+ throws NoSuchChangeException, OrmException, IOException {
+ Account.Id userId = ((IdentifiedUser) currentUser).getAccountId();
+ ChangeUpdate update = updateFactory.create(control(change, userId));
+ ChangeMessage cmsg =
+ new ChangeMessage(new ChangeMessage.Key(change.getId(),
+ ChangeUtil.messageUUID(db)), userId, TimeUtil.nowTs(),
+ change.currentPatchSetId());
+ cmsg.setMessage(message);
+ cmUtil.addChangeMessage(db, update, cmsg);
+ update.commit();
+ }
+
+ private ChangeControl control(Change change, Account.Id id)
+ throws NoSuchChangeException {
+ return changeControlFactory.controlFor(change,
+ genericUserFactory.create(id));
+ }
+
+ private static String ensureSlash(String in) {
+ if (in != null && !in.endsWith("/")) {
+ return in + "/";
+ }
+ return in;
+ }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/Module.java b/src/main/java/com/googlesource/gerrit/plugins/importer/Module.java
index 5f092d7..d61e68f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/Module.java
@@ -50,5 +50,6 @@
install(new FactoryModuleBuilder().build(ReplayMessagesStep.Factory.class));
install(new FactoryModuleBuilder().build(AddApprovalsStep.Factory.class));
install(new FactoryModuleBuilder().build(AddHashtagsStep.Factory.class));
+ install(new FactoryModuleBuilder().build(InsertLinkToOriginalChangeStep.Factory.class));
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java
index 8c6f07b..dafc7ba 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java
@@ -14,23 +14,14 @@
package com.googlesource.gerrit.plugins.importer;
-import com.google.gerrit.common.TimeUtil;
import com.google.gerrit.common.errors.NoSuchAccountException;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.restapi.RestApiException;
-import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.client.ChangeMessage;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
-import com.google.gerrit.server.ChangeMessagesUtil;
-import com.google.gerrit.server.ChangeUtil;
-import com.google.gerrit.server.CurrentUser;
-import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.index.ChangeIndexer;
-import com.google.gerrit.server.notedb.ChangeUpdate;
-import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.validators.ValidationException;
import com.google.gwtorm.server.OrmException;
@@ -61,14 +52,10 @@
private final ReplayMessagesStep.Factory replayMessagesFactory;
private final AddApprovalsStep.Factory addApprovalsFactory;
private final AddHashtagsStep.Factory addHashtagsFactory;
+ private final InsertLinkToOriginalChangeStep.Factory insertLinkToOriginalFactory;
private final AccountUtil accountUtil;
private final ReviewDb db;
private final ChangeIndexer indexer;
- private final ChangeUpdate.Factory updateFactory;
- private final ChangeMessagesUtil cmUtil;
- private final CurrentUser currentUser;
- private final IdentifiedUser.GenericFactory genericUserFactory;
- private final ChangeControl.GenericFactory changeControlFactory;
private final String fromGerrit;
private final RemoteApi api;
private final Repository repo;
@@ -81,14 +68,10 @@
ReplayMessagesStep.Factory replayMessagesFactory,
AddApprovalsStep.Factory addApprovalsFactory,
AddHashtagsStep.Factory addHashtagsFactory,
+ InsertLinkToOriginalChangeStep.Factory insertLinkToOriginalFactory,
AccountUtil accountUtil,
ReviewDb db,
ChangeIndexer indexer,
- ChangeUpdate.Factory updateFactory,
- ChangeMessagesUtil cmUtil,
- CurrentUser currentUser,
- IdentifiedUser.GenericFactory genericUserFactory,
- ChangeControl.GenericFactory changeControlFactory,
@Assisted("from") String fromGerrit,
@Assisted("user") String user,
@Assisted("password") String password,
@@ -99,14 +82,10 @@
this.replayMessagesFactory = replayMessagesFactory;
this.addApprovalsFactory = addApprovalsFactory;
this.addHashtagsFactory = addHashtagsFactory;
+ this.insertLinkToOriginalFactory = insertLinkToOriginalFactory;
this.accountUtil = accountUtil;
this.db = db;
this.indexer = indexer;
- this.updateFactory = updateFactory;
- this.cmUtil = cmUtil;
- this.currentUser = currentUser;
- this.genericUserFactory = genericUserFactory;
- this.changeControlFactory = changeControlFactory;
this.fromGerrit = fromGerrit;
this.api = new RemoteApi(fromGerrit, user, password);
this.repo = repo;
@@ -139,7 +118,7 @@
addApprovalsFactory.create(change, c).add();
addHashtagsFactory.create(change, c).add();
- insertLinkToOriginalChange(change, c);
+ insertLinkToOriginalFactory.create(fromGerrit,change, c).insert();
indexer.index(db, change);
}
@@ -164,41 +143,4 @@
return Constants.R_HEADS + branch;
}
}
-
- private void insertLinkToOriginalChange(Change change,
- ChangeInfo c) throws NoSuchChangeException, OrmException, IOException {
- insertMessage(change, "Imported from " + changeUrl(c));
- }
-
- private String changeUrl(ChangeInfo c) {
- StringBuilder url = new StringBuilder();
- url.append(ensureSlash(fromGerrit)).append(c._number);
- return url.toString();
- }
-
- private void insertMessage(Change change, String message)
- throws NoSuchChangeException, OrmException, IOException {
- Account.Id userId = ((IdentifiedUser) currentUser).getAccountId();
- ChangeUpdate update = updateFactory.create(control(change, userId));
- ChangeMessage cmsg =
- new ChangeMessage(new ChangeMessage.Key(change.getId(),
- ChangeUtil.messageUUID(db)), userId, TimeUtil.nowTs(),
- change.currentPatchSetId());
- cmsg.setMessage(message);
- cmUtil.addChangeMessage(db, update, cmsg);
- update.commit();
- }
-
- private ChangeControl control(Change change, Account.Id id)
- throws NoSuchChangeException {
- return changeControlFactory.controlFor(change,
- genericUserFactory.create(id));
- }
-
- private static String ensureSlash(String in) {
- if (in != null && !in.endsWith("/")) {
- return in + "/";
- }
- return in;
- }
}