public void process()

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());
        }
    }