in ConfigurableFeatureExtractor/src/main/java/org/apache/uima/tools/cfe/OffsetDiff.java [171:254]
public void process (List<Span> source, List<Span> target)
{
findEqual(source, target);
int trg_ind = 0;
int src_ind = 0;
Span sspan = null;
Span tspan = null;
List<Span> smatched = new ArrayList<Span>();
List<Span> tmatched = new ArrayList<Span>();
while ((src_ind < source.size()) || (trg_ind < target.size())) {
int curr_state = Span.COMPARE_NONE;
if (src_ind < source.size()) {
sspan = (Span)source.get(src_ind);
}
if (trg_ind < target.size()) {
tspan = (Span)target.get(trg_ind);
}
if ((src_ind < source.size()) && (trg_ind < target.size())) {
curr_state = sspan.compare(tspan);
}
else if (trg_ind >= target.size()) {
curr_state = Span.COMPARE_FARBEHIND;
}
else if (src_ind >= source.size()) {
curr_state = Span.COMPARE_FARAHEAD;
}
switch (curr_state) {
case Span.COMPARE_CONTAINS:
print(sspan, tspan);
trg_ind = nextSpanInd(target, trg_ind);
src_ind = nextSpanInd(source, src_ind);
tmatched.add(tspan);
smatched.add(sspan);
break;
case Span.COMPARE_BELONGS:
print(sspan, tspan);
trg_ind = nextSpanInd(target, trg_ind);
src_ind = nextSpanInd(source, src_ind);
tmatched.add(tspan);
smatched.add(sspan);
break;
case Span.COMPARE_AHEAD:
print(sspan, tspan);
src_ind = nextSpanInd(source, src_ind);
trg_ind = nextSpanInd(target, trg_ind);
tmatched.add(tspan);
smatched.add(sspan);
break;
case Span.COMPARE_BEHIND:
print(sspan, tspan);
src_ind = nextSpanInd(source, src_ind);
trg_ind = nextSpanInd(target, trg_ind);
tmatched.add(tspan);
smatched.add(sspan);
break;
case Span.COMPARE_FARAHEAD:
print(null, tspan);
trg_ind = nextSpanInd(target, trg_ind);
tmatched.add(tspan);
break;
case Span.COMPARE_FARBEHIND:
print(sspan, null);
src_ind = nextSpanInd(source, src_ind);
smatched.add(sspan);
break;
}
}
source.removeAll(smatched);
target.removeAll(tmatched);
if (!source.isEmpty() || !target.isEmpty()) {
System.err.println("ERROR: comparison incomplete. source:" + source.size() + ", target:" + target.size());
}
}