Collection<ColumnRangeConvertHelper> colRangeHelpers = new ArrayList<ColumnRangeConvertHelper>();
if (pNumSpecsSet != null) {
// an array to keep track of distinct numbers are already converted
NumberArray usedNumbers = new NumberArray(pNumChar);
usedNumbers.deassignArray();
for (int iw = 0; iw < pNumChar; iw++) {
MesquiteNumber aNumber = new MesquiteNumber();
MesquiteNumber secondNumber = new MesquiteNumber();
pNumSpecsSet.placeValue(iw, aNumber);
// bypass this char if the number is already converted
if (usedNumbers.findValue(aNumber) < 0) {
int continuing = 1;
ColumnRangeConvertHelper aHelper = new ColumnRangeConvertHelper();
aHelper.setNumber(aNumber);
int startIndex = CharacterStates.toExternal(iw);
ColumnRange range = new ColumnRange();
range.setStartColIndex(startIndex - 1);
for (int ic = iw + 1; ic < pNumChar; ic = ic + 1) {
pNumSpecsSet.placeValue(ic, secondNumber);
if (secondNumber.equals(aNumber)) {
if (continuing == 0) {
// discontinue
range = new ColumnRange();
range.setStartColIndex(ic);
continuing = 1;
} else if (continuing == 1) {
// continuing
}
} else if (range != null) {
// found the last index:
range.setEndColIndex(ic - 1);
aHelper.getColRanges().add(range);
range = null;
continuing = 0;
}
}
if (range != null) {
range.setEndColIndex(pNumChar - 1);
aHelper.getColRanges().add(range);
}
colRangeHelpers.add(aHelper);
// save the converted number
usedNumbers.setOpenValue(aNumber);
if (LOGGER.isDebugEnabled()) {
StringBuilder sb = new StringBuilder();
sb.append(aHelper.getNumber()).append(":");
for (ColumnRange aRange : aHelper.getColRanges()) {