Submit whole topic: check if all changes are submittable

We were checking only if the current change was submittable, but we
really need to check all changes.

Change-Id: Ief424e7bd32f5d552b3adc18fc3c7c2ff7c46df2
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
index cadd55c..86ce3b99 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java
@@ -391,16 +391,20 @@
     ReviewDb db = dbProvider.get();
     ChangeData cd = changeDataFactory.create(db, rsrc.getControl());
 
-    List<SubmitRecord> submitRecords = checkSubmitRule(cd,
-        rsrc.getPatchSet(), force);
+    List<ChangeData> changesByTopic = queryProvider.get().byTopicOpen(topic);
+    String problems = problemsForSubmittingChanges(changesByTopic, caller);
+    if (problems != null) {
+      throw new ResourceConflictException(problems);
+    }
 
     Change change = rsrc.getChange();
     ChangeUpdate update = updateFactory.create(rsrc.getControl(), timestamp);
+
+    List<SubmitRecord> submitRecords = checkSubmitRule(cd,
+        rsrc.getPatchSet(), force);
     update.submit(submitRecords);
 
     db.changes().beginTransaction(change.getId());
-
-    List<ChangeData> changesByTopic = queryProvider.get().byTopicOpen(topic);
     try {
       BatchMetaDataUpdate batch = approve(rsrc, update, caller, timestamp);
       // Write update commit after all normalized label commits.