diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilder.java index b81e3ebfe26eb48d469c1ca2f5b54cc1385a5480..d967ba63764b105aa9ef3be4af767b5271bbe31f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilder.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilder.java @@ -151,7 +151,7 @@ public class TypedTableModelBuilder<T extends IsSerializable> */ public IColumnMetaData addColumn(String id) { - Column column = createColumn(null, id); + Column column = createColumn(null, null, id); String id1 = column.getHeader().getId(); Column oldColumn = columns.put(id1, column); if (oldColumn != null) @@ -187,7 +187,7 @@ public class TypedTableModelBuilder<T extends IsSerializable> public void addStringValueToColumn(String title, String id, String valueOrNull) { StringTableCell value = valueOrNull == null ? EMPTY_CELL : new StringTableCell(valueOrNull); - addValueToColumn(title, id, value); + addValueToColumn(title, DataTypeCode.VARCHAR, id, value); } /** @@ -208,7 +208,7 @@ public class TypedTableModelBuilder<T extends IsSerializable> { ISerializableComparable value = valueOrNull == null ? EMPTY_CELL : new IntegerTableCell(valueOrNull); - addValueToColumn(title, id, value); + addValueToColumn(title, DataTypeCode.INTEGER, id, value); } /** @@ -229,7 +229,7 @@ public class TypedTableModelBuilder<T extends IsSerializable> { ISerializableComparable value = valueOrNull == null ? EMPTY_CELL : new DoubleTableCell(valueOrNull); - addValueToColumn(title, id, value); + addValueToColumn(title, DataTypeCode.REAL, id, value); } /** @@ -237,26 +237,34 @@ public class TypedTableModelBuilder<T extends IsSerializable> * does not exist. * * @param titleOrNull Title of the column. Will be ignored if the column already exists. + * @param dataTypeOrNull Data type of the column. Will be ignored if trhe column already exists. */ - public void addValueToColumn(String titleOrNull, String id, ISerializableComparable value) + public void addValueToColumn(String titleOrNull, DataTypeCode dataTypeOrNull, String id, + ISerializableComparable value) { - getOrCreateColumn(titleOrNull, id).insertValueAt(rowObjects.size() - 1, value); + getOrCreateColumn(titleOrNull, dataTypeOrNull, id).insertValueAt(rowObjects.size() - 1, + value); } - private Column getOrCreateColumn(String titleOrNull, String id) + private Column getOrCreateColumn(String titleOrNull, DataTypeCode dataTypeOrNull, String id) { Column column = columns.get(id); if (column == null) { - column = createColumn(titleOrNull, id); + column = createColumn(titleOrNull, dataTypeOrNull, id); columns.put(id, column); } return column; } - private Column createColumn(String titleOrNull, String id) + private Column createColumn(String titleOrNull, DataTypeCode dataTypeOrNull, String id) { - return new Column(createHeader(titleOrNull, id)); + TableModelColumnHeader header = createHeader(titleOrNull, id); + if (dataTypeOrNull != null) + { + header.setDataType(dataTypeOrNull); + } + return new Column(header); } private TableModelColumnHeader createHeader(String titleOrNull, String id) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilderTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilderTest.java index 0e5f9254c910a9ce560fae2c71b8ff2d975878bb..e69790360a1016682b7ac5cb71c2194e18ff63af 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilderTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/util/TypedTableModelBuilderTest.java @@ -87,7 +87,7 @@ public class TypedTableModelBuilderTest extends AssertJUnit List<TableModelColumnHeader> headers = model.getHeader(); assertHeadersOrder(headers, "A"); assertEquals("Alpha", headers.get(0).getTitle()); - assertEquals(null, headers.get(0).getDataType()); + assertEquals(DataTypeCode.INTEGER, headers.get(0).getDataType()); List<TableModelRowWithObject<IsSerializable>> rows = model.getRows(); assertSame(object0, rows.get(0).getObjectOrNull()); assertEquals(new IntegerTableCell(42), rows.get(0).getValues().get(0)); @@ -98,6 +98,34 @@ public class TypedTableModelBuilderTest extends AssertJUnit assertEquals(3, rows.size()); } + @Test + public void testAddDoubleValueToColumn() + { + TypedTableModelBuilder<IsSerializable> builder = new TypedTableModelBuilder<IsSerializable>(); + MockSerializable object0 = new MockSerializable(); + builder.addRow(object0); + builder.addDoubleValueToColumn("Alpha", "A", 4.25); + MockSerializable object1 = new MockSerializable(); + builder.addRow(object1); + builder.addDoubleValueToColumn("A", null); + builder.addRow(null); + builder.addDoubleValueToColumn("a", "A", 4711.5); + + TypedTableModel<IsSerializable> model = builder.getModel(); + List<TableModelColumnHeader> headers = model.getHeader(); + assertHeadersOrder(headers, "A"); + assertEquals("Alpha", headers.get(0).getTitle()); + assertEquals(DataTypeCode.REAL, headers.get(0).getDataType()); + List<TableModelRowWithObject<IsSerializable>> rows = model.getRows(); + assertSame(object0, rows.get(0).getObjectOrNull()); + assertEquals(new DoubleTableCell(4.25), rows.get(0).getValues().get(0)); + assertSame(object1, rows.get(1).getObjectOrNull()); + assertEquals(new StringTableCell(""), rows.get(1).getValues().get(0)); + assertSame(null, rows.get(2).getObjectOrNull()); + assertEquals(new DoubleTableCell(4711.5), rows.get(2).getValues().get(0)); + assertEquals(3, rows.size()); + } + @Test public void testRowsWithEmptyCells() {