Permalink
Browse files

Merge pull request #1146 from jackyq2015/bugfix/transpose

fix #1138. column transpose
  • Loading branch information...
2 parents 32446b4 + 7731513 commit b14dd56b80c7f0d7d51888f095b0435c4aadb29f @jackyq2015 jackyq2015 committed on GitHub Nov 6, 2016
@@ -81,14 +81,6 @@ synchronized public int allocateNewCellIndex() {
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,16 +251,10 @@ protected HistoryEntry createHistoryEntry(Project project, long historyEntryID)
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);
+ // clean up the empty rows
+ for (int i = newRows.size() - 1;i>=0;i--) {
+ if (newRows.get(i).isEmpty())
+ newRows.remove(i);
}
return new HistoryEntry(
@@ -126,13 +126,11 @@ public void keyValueComumnize() throws Exception {
HistoryEntry historyEntry = process.performImmediate();
- // Expected output
-
-// ID;a;b;c;d
-// 1;1;3;;
-// 2;;4;5;
-// 3;2;5;;3
-
+ // Expected output from the GUI.
+ // ID;a;b;c;d
+ // 1;1;3;;
+ // 2;;4;5;
+ // 3;2;5;;3
Assert.assertEquals(project.columnModel.columns.size(), 5);
Assert.assertEquals(project.columnModel.columns.get(0).getName(), "ID");
Assert.assertEquals(project.columnModel.columns.get(1).getName(), "a");
@@ -141,14 +139,23 @@ public void keyValueComumnize() throws Exception {
Assert.assertEquals(project.columnModel.columns.get(4).getName(), "d");
Assert.assertEquals(project.rows.size(), 3);
- // 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);
-
+ // The actual row data structure has to leave the columns model untouched for redo/undo purpose.
+ // So we have 2 empty columns(column 1,2) on the row level.
+ // 1;1;3;;
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");
+ Assert.assertEquals(project.rows.get(0).cells.get(3).value, "1");
+ 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");
}

0 comments on commit b14dd56

Please sign in to comment.