Package net.sourceforge.align.comparator

Source Code of net.sourceforge.align.comparator.SequentialComparator

package net.sourceforge.align.comparator;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import net.sourceforge.align.Alignment;

/**
* Reprezentuje porównywacz sekwencyjny.
*
* @author Jarek Lipski (loomchild)
*/
public class SequentialComparator implements Comparator {

  /**
   * Porównuje listy dopasowań. Zeby dopasowania były uznane za identyczne
   * muszą być takie same i występować w takim samym porządku.
   * Nie działa gdy w tekście występują powtórzone dopasowania ponieważ
   * może wtedy nie znaleźć najdłuższego możliwego dopasowania.
   * @param leftAlignmentList Pierwsza lista dopasowań.
   * @param rightAlignmentList Druga lista dopasowań.
   * @return Zwraca listę różnic.
   */
  public Diff compare(List<Alignment> leftAlignmentList,
      List<Alignment> rightAlignmentList) {
    List<Alignment> leftOnlyAlignmentList = new ArrayList<Alignment>();
    List<Alignment> rightOnlyAlignmentList = new ArrayList<Alignment>();
    int startIndex = 0;
    for (Alignment leftAlignment : leftAlignmentList) {
      int index = startIndex;
      Iterator<Alignment> rightIterator =
        rightAlignmentList.listIterator(index);
      while(rightIterator.hasNext()) {
        Alignment rightAlignment = rightIterator.next();
        if (leftAlignment.equals(rightAlignment)) {
          rightOnlyAlignmentList.addAll(
              rightAlignmentList.subList(startIndex, index));
          startIndex = index + 1;
          break;
        } else {
          ++index;
        }
      }
      //Gdy nie znaleziono identycznego dopasowania
      if (startIndex <= index) {
        leftOnlyAlignmentList.add(leftAlignment);
      }
    }
    if (startIndex < rightAlignmentList.size()) {
      rightOnlyAlignmentList.addAll(
        rightAlignmentList.subList(startIndex,
            rightAlignmentList.size()));
    }
    return new Diff(leftOnlyAlignmentList, rightOnlyAlignmentList);
  }
 
}
TOP

Related Classes of net.sourceforge.align.comparator.SequentialComparator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.