return;
}
// Debug: Raw output
for (int i=0; i<rd.length; i++ ) {
RangeDifference rdi = rd[i];
log( rdi.kindString() + " left " + rdi.leftStart() + "," + rdi.leftLength()
+ " right " + rdi.rightStart() + "," + rdi.rightLength() );
}
log("top level LCS done; now performing child actions ...");
int leftIdx = 0;
for (int i=0; i<rd.length; i++ ) {
RangeDifference rdi = rd[i];
// No change
if (rdi.leftStart() > leftIdx) {
for (int k = leftIdx ; k< rdi.leftStart() ; k++) {
// This just goes straight into the output,
// since it is the same on the left and the right.
// Since it is the same on both side, we handle
// it here (on the left side), and
// ignore it on the right
//out.append("\n<!-- Adding same -->\n");
addComment("Adding same", formatter);
formatter.declarePrefixMapping(leftESC.getItem(k).getPrefixMapping());
formatEventSequence(leftESC.getItem(k), formatter);
//out.append("\n<!-- .. Adding same done -->");
addComment(".. Adding same done ", formatter);
// If we wanted to difference sdt's which
// were treated the as the same (via their id)
// this is where we'd have to change
// (in addition to changing EventSequence for
// such things so that hashcode returned their
// id!)
}
leftIdx = rdi.leftStart();
}
EventSequence seq1 = new EventSequence();
// Evil hack - doesn't work
// seq1.mapPrefix("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w");
for (int k = rdi.leftStart() ; k< rdi.leftEnd() ; k++) {
if (rdi.kind()==rdi.CHANGE) {
// This we need to diff
//leftReport.append( "#" );
seq1.addSequence(leftESC.getItem(k));
// Don't forget our existing prefix mappings!
PrefixMapping existingPM = leftESC.getItem(k).getPrefixMapping();
addToPrefixMapping(seq1.getPrefixMapping(), existingPM);
} else {
// Does this happen?
// This just goes straight into the output,
formatter.declarePrefixMapping(leftESC.getItem(k).getPrefixMapping());
//out.append("\n<!-- Adding same II -->\n");
addComment("Adding same II", formatter);
formatEventSequence(leftESC.getItem(k), formatter);
//out.append("\n<!-- .. Adding same done -->");
addComment(".. Adding same done", formatter);
}
}
EventSequence seq2 = new EventSequence();
// Evil hack - doesn't work
//seq2.mapPrefix("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w");
for (int k = rdi.rightStart() ; k< rdi.rightEnd() ; k++) {
if (rdi.kind()==rdi.CHANGE) {
// This is the RHS of the diff
//rightReport.append( "#" );
seq2.addSequence(rightESC.getItem(k));
// Don't forget our existing prefix mappings!
PrefixMapping existingPM = rightESC.getItem(k).getPrefixMapping();
addToPrefixMapping(seq2.getPrefixMapping(), existingPM);
}
}
leftIdx = rdi.leftEnd();
// ok, now perform this diff
//log("performing diff");
//out.append("\n<!-- Differencing -->\n");
addComment("Differencing", formatter);