Fix wrong "Code Review -1" on cross-repo below independent review

Before this fix, a cross-repo could receive a non blocking "Code
Review -1" with a message stating that it was depending on a
non-merged review. This was wrong as the non-merged review was above
and not below the cross-repo.

Change-Id: Icb772439294dacec56e80f99b45afdc85961939b
diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
index 5cadfbf..834df61 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AtomicityHelper.java
@@ -2,6 +2,7 @@
 
 import com.google.gerrit.common.data.SubmitRecord;
 import com.google.gerrit.extensions.api.changes.SubmitInput;
+import com.google.gerrit.extensions.client.ChangeStatus;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.reviewdb.client.Project;
@@ -10,6 +11,7 @@
 import com.google.gerrit.server.account.AccountByEmailCache;
 import com.google.gerrit.server.change.ChangesCollection;
 import com.google.gerrit.server.change.GetRelated;
+import com.google.gerrit.server.change.GetRelated.ChangeAndCommit;
 import com.google.gerrit.server.change.GetRelated.RelatedInfo;
 import com.google.gerrit.server.change.PostReview;
 import com.google.gerrit.server.change.RevisionResource;
@@ -82,7 +84,29 @@
       RevisionResource r = getRevisionResource(project, number);
     RelatedInfo related = getRelated.apply(r);
     log.debug(String.format("Checking for related changes on review %d", number));
-    return related.changes.size() > 0;
+
+    String checkedCommitSha1 = r.getPatchSet().getRevision().get();
+    int firstParentIndex = 0;
+    int i = 0;
+    for (ChangeAndCommit c: related.changes) {
+      if (checkedCommitSha1.equals(c.commit.commit)) {
+          firstParentIndex = i+1;
+          log.debug(String.format("First parent index on review %d is %d on commit %s", number, firstParentIndex, c.commit.commit));
+          break;
+      }
+      i++;
+    }
+
+    boolean hasNonMergedParent = false;
+    for (ChangeAndCommit c: related.changes.subList(firstParentIndex, related.changes.size())) {
+      if (!ChangeStatus.MERGED.toString().equals(c.status)) {
+         log.info(String.format("Found non merged parent commit on review %d: %s", number, c.commit.commit));
+         hasNonMergedParent = true;
+         break;
+      }
+    }
+
+    return hasNonMergedParent;
   }
 
   /**