fixed issue #796 Columnize by key/value columns creates empty lines
This commit is contained in:
parent
35b01fb33b
commit
7a2a0eb52f
@ -81,6 +81,14 @@ public class ColumnModel implements Jsonizable {
|
||||
return ++_maxCellIndex;
|
||||
}
|
||||
|
||||
synchronized public void removeCellIndex(int index) {
|
||||
if (index > _maxCellIndex - 1)
|
||||
return;
|
||||
|
||||
columns.remove(index);
|
||||
_maxCellIndex--;
|
||||
}
|
||||
|
||||
synchronized public void setKeyColumnIndex(int keyColumnIndex) {
|
||||
// TODO: check validity of new cell index, e.g., it's not in any group
|
||||
this._keyColumnIndex = keyColumnIndex;
|
||||
|
@ -251,6 +251,18 @@ public class KeyValueColumnizeOperation extends AbstractOperation {
|
||||
allColumns.addAll(newColumns);
|
||||
allColumns.addAll(newNoteColumns);
|
||||
|
||||
// clean up the reused column model and row model
|
||||
int smallIndex = Math.min(keyColumnIndex, valueColumnIndex);
|
||||
int bigIndex = Math.max(keyColumnIndex, valueColumnIndex);
|
||||
|
||||
project.columnModel.removeCellIndex(bigIndex);
|
||||
project.columnModel.removeCellIndex(smallIndex);
|
||||
|
||||
for (Row row : newRows) {
|
||||
row.cells.remove(bigIndex);
|
||||
row.cells.remove(smallIndex);
|
||||
}
|
||||
|
||||
return new HistoryEntry(
|
||||
historyEntryID,
|
||||
project,
|
||||
|
@ -140,13 +140,15 @@ public class TransposeTests extends RefineTest {
|
||||
Assert.assertEquals(project.columnModel.columns.get(3).getName(), "c");
|
||||
Assert.assertEquals(project.columnModel.columns.get(4).getName(), "d");
|
||||
Assert.assertEquals(project.rows.size(), 3);
|
||||
Assert.assertEquals(project.rows.get(0).cells.size(), 5);
|
||||
Assert.assertEquals(project.rows.get(1).cells.size(), 5);
|
||||
|
||||
// the last 2 cells are not added as expected, the size is 5-2
|
||||
Assert.assertEquals(project.rows.get(0).cells.size(), 5 - 2);
|
||||
Assert.assertEquals(project.rows.get(1).cells.size(), 5 - 1);
|
||||
Assert.assertEquals(project.rows.get(2).cells.size(), 5);
|
||||
|
||||
Assert.assertEquals(project.rows.get(0).cells.get(0).value, "data1");
|
||||
Assert.assertEquals(project.rows.get(0).cells.get(1).value, "data2");
|
||||
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "data3");
|
||||
Assert.assertEquals(project.rows.get(0).cells.get(0).value, "1");
|
||||
Assert.assertEquals(project.rows.get(0).cells.get(1).value, "1");
|
||||
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "3");
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user