/** * Verify that the list has an appropriate unbroken chain of back links. * * @param list the list of splices to validate * @return true if the list has an unbroken chain of back links */ boolean spliceListIsValid(final ObjectArrayList<GobyAlignment> list) { if (list != null && list.size() > 1) { Alignments.AlignmentEntry prevEntry = list.get(0).entry; for (int i = 1; i < list.size(); i++) { Alignments.AlignmentEntry currentEntry = list.get(i).entry; if (!currentEntry.hasSplicedBackwardAlignmentLink()) return false; else { Alignments.RelatedAlignmentEntry currentBackwardLink = currentEntry.getSplicedBackwardAlignmentLink(); if ((prevEntry.getQueryIndex() != currentEntry.getQueryIndex()) || (prevEntry.getFragmentIndex() != currentBackwardLink.getFragmentIndex()) || (prevEntry.getPosition() != currentBackwardLink.getPosition()) || (prevEntry.getTargetIndex() != currentBackwardLink.getTargetIndex())) { return false; } } prevEntry = currentEntry; } } return true; }