View Javadoc
1 /*** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package net.sourceforge.pmd.cpd; 5 6 import java.util.Comparator; 7 import java.util.List; 8 9 public class MarkComparator implements Comparator { 10 11 private final int comparisonUpdateInterval; 12 private CPDListener l; 13 private long comparisons; 14 private List tokens; 15 16 public MarkComparator(CPDListener l, List tokens) { 17 this(l, tokens, 10000); 18 } 19 20 public MarkComparator(CPDListener l, List tokens, int comparisonUpdateInterval) { 21 this.l = l; 22 this.tokens = tokens; 23 this.comparisonUpdateInterval = comparisonUpdateInterval; 24 } 25 26 public int compare(Object o1, Object o2) { 27 comparisons++; 28 if (comparisons % comparisonUpdateInterval == 0) { 29 l.comparisonCountUpdate(comparisons); 30 } 31 32 Mark mark1 = (Mark)o1; 33 Mark mark2 = (Mark)o2; 34 for (int i = 1; i < tokens.size(); i++) { 35 int cmp = tokenAt(i, mark1).compareTo(tokenAt(i, mark2)); 36 if (cmp != 0) { 37 return cmp; 38 } 39 } 40 return 0; 41 } 42 43 public TokenEntry tokenAt(int index, Mark mark) { 44 return (TokenEntry)tokens.get((index + mark.getIndexIntoTokenArray()) % tokens.size()); 45 } 46 }

This page was automatically generated by Maven