Merge pull request #1146 from jackyq2015/bugfix/transpose
fix #1138. column transpose
This commit is contained in:
commit
b14dd56b80
@ -81,14 +81,6 @@ public class ColumnModel implements Jsonizable {
|
|||||||
return ++_maxCellIndex;
|
return ++_maxCellIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized public void removeCellIndex(int index) {
|
|
||||||
if (index > _maxCellIndex - 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
columns.remove(index);
|
|
||||||
_maxCellIndex--;
|
|
||||||
}
|
|
||||||
|
|
||||||
synchronized public void setKeyColumnIndex(int keyColumnIndex) {
|
synchronized public void setKeyColumnIndex(int keyColumnIndex) {
|
||||||
// TODO: check validity of new cell index, e.g., it's not in any group
|
// TODO: check validity of new cell index, e.g., it's not in any group
|
||||||
this._keyColumnIndex = keyColumnIndex;
|
this._keyColumnIndex = keyColumnIndex;
|
||||||
|
@ -251,16 +251,10 @@ public class KeyValueColumnizeOperation extends AbstractOperation {
|
|||||||
allColumns.addAll(newColumns);
|
allColumns.addAll(newColumns);
|
||||||
allColumns.addAll(newNoteColumns);
|
allColumns.addAll(newNoteColumns);
|
||||||
|
|
||||||
// clean up the reused column model and row model
|
// clean up the empty rows
|
||||||
int smallIndex = Math.min(keyColumnIndex, valueColumnIndex);
|
for (int i = newRows.size() - 1;i>=0;i--) {
|
||||||
int bigIndex = Math.max(keyColumnIndex, valueColumnIndex);
|
if (newRows.get(i).isEmpty())
|
||||||
|
newRows.remove(i);
|
||||||
project.columnModel.removeCellIndex(bigIndex);
|
|
||||||
project.columnModel.removeCellIndex(smallIndex);
|
|
||||||
|
|
||||||
for (Row row : newRows) {
|
|
||||||
row.cells.remove(bigIndex);
|
|
||||||
row.cells.remove(smallIndex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new HistoryEntry(
|
return new HistoryEntry(
|
||||||
|
@ -126,13 +126,11 @@ public class TransposeTests extends RefineTest {
|
|||||||
|
|
||||||
HistoryEntry historyEntry = process.performImmediate();
|
HistoryEntry historyEntry = process.performImmediate();
|
||||||
|
|
||||||
// Expected output
|
// Expected output from the GUI.
|
||||||
|
// ID;a;b;c;d
|
||||||
// ID;a;b;c;d
|
// 1;1;3;;
|
||||||
// 1;1;3;;
|
// 2;;4;5;
|
||||||
// 2;;4;5;
|
// 3;2;5;;3
|
||||||
// 3;2;5;;3
|
|
||||||
|
|
||||||
Assert.assertEquals(project.columnModel.columns.size(), 5);
|
Assert.assertEquals(project.columnModel.columns.size(), 5);
|
||||||
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "ID");
|
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "ID");
|
||||||
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "a");
|
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "a");
|
||||||
@ -141,14 +139,23 @@ public class TransposeTests extends RefineTest {
|
|||||||
Assert.assertEquals(project.columnModel.columns.get(4).getName(), "d");
|
Assert.assertEquals(project.columnModel.columns.get(4).getName(), "d");
|
||||||
Assert.assertEquals(project.rows.size(), 3);
|
Assert.assertEquals(project.rows.size(), 3);
|
||||||
|
|
||||||
// the last 2 cells are not added as expected, the size is 5-2
|
// The actual row data structure has to leave the columns model untouched for redo/undo purpose.
|
||||||
Assert.assertEquals(project.rows.get(0).cells.size(), 5 - 2);
|
// So we have 2 empty columns(column 1,2) on the row level.
|
||||||
Assert.assertEquals(project.rows.get(1).cells.size(), 5 - 1);
|
// 1;1;3;;
|
||||||
Assert.assertEquals(project.rows.get(2).cells.size(), 5);
|
|
||||||
|
|
||||||
Assert.assertEquals(project.rows.get(0).cells.get(0).value, "1");
|
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(3).value, "1");
|
||||||
Assert.assertEquals(project.rows.get(0).cells.get(2).value, "3");
|
Assert.assertEquals(project.rows.get(0).cells.get(4).value, "3");
|
||||||
|
|
||||||
|
// 2;;4;5;
|
||||||
|
Assert.assertEquals(project.rows.get(1).cells.get(0).value, "2");
|
||||||
|
Assert.assertEquals(project.rows.get(1).cells.get(4).value, "4");
|
||||||
|
Assert.assertEquals(project.rows.get(1).cells.get(5).value, "5");
|
||||||
|
|
||||||
|
// 3;2;5;;3
|
||||||
|
Assert.assertEquals(project.rows.get(2).cells.get(0).value, "3");
|
||||||
|
Assert.assertEquals(project.rows.get(2).cells.get(3).value, "2");
|
||||||
|
Assert.assertEquals(project.rows.get(2).cells.get(4).value, "5");
|
||||||
|
Assert.assertEquals(project.rows.get(2).cells.get(6).value, "3");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user