From 2c59b8ad412ef6bca7996bbed70ad7936e764077 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 27 May 2013 13:51:44 +0000 Subject: [PATCH] SP-688, BIS-437: Bug fixed and tested SVN: 29227 --- .../translator/QueryTableModelTranslator.java | 12 ++- .../QueryTableModelTranslatorTest.java | 76 +++++++++++++++++++ 2 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTableModelTranslatorTest.java diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTableModelTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTableModelTranslator.java index e11793e68ff..a81e9a9082a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTableModelTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTableModelTranslator.java @@ -17,13 +17,15 @@ package ch.systemsx.cisd.openbis.plugin.query.shared.translator; import java.io.Serializable; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; +import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DateTableCell; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DoubleTableCell; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IntegerTableCell; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.StringTableCell; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; @@ -62,6 +64,7 @@ public class QueryTableModelTranslator } QueryTableModel tableModel = new QueryTableModel(translatedHeaders); List<TableModelRow> rows = result.getRows(); + SimpleDateFormat format = new SimpleDateFormat(BasicConstant.CANONICAL_DATE_FORMAT_PATTERN); for (TableModelRow row : rows) { List<ISerializableComparable> values = row.getValues(); @@ -76,9 +79,12 @@ public class QueryTableModelTranslator } else if (value instanceof DoubleTableCell) { translatedValue = ((DoubleTableCell) value).getNumber(); - } else if (value instanceof StringTableCell) + } else if (value instanceof DateTableCell) { - translatedValue = ((StringTableCell) value).toString(); + translatedValue = format.format(((DateTableCell) value).getDateTime()); + } else if (value != null) + { + translatedValue = value.toString(); } translatedValues[i] = translatedValue; } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTableModelTranslatorTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTableModelTranslatorTest.java new file mode 100644 index 00000000000..bb383226900 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTableModelTranslatorTest.java @@ -0,0 +1,76 @@ +/* + * Copyright 2013 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.plugin.query.shared.translator; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import org.testng.AssertJUnit; +import org.testng.annotations.Test; + +import ch.systemsx.cisd.openbis.generic.shared.util.IRowBuilder; +import ch.systemsx.cisd.openbis.generic.shared.util.SimpleTableModelBuilder; +import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.dto.QueryTableColumn; +import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.dto.QueryTableColumnDataType; +import ch.systemsx.cisd.openbis.plugin.query.shared.api.v1.dto.QueryTableModel; + +/** + * @author Franz-Josef Elmer + */ +public class QueryTableModelTranslatorTest extends AssertJUnit +{ + private static final String STRING_COLUMN = "String"; + + private static final String INTEGER_COLUMN = "Integer"; + + private static final String DOUBLE_COLUMN = "Double"; + + private static final String TIMESTAMP_COLUMN = "Timestamp"; + + @Test + public void test() + { + SimpleTableModelBuilder builder = new SimpleTableModelBuilder(true); + builder.addFullHeader(STRING_COLUMN, INTEGER_COLUMN, DOUBLE_COLUMN, TIMESTAMP_COLUMN); + IRowBuilder row = builder.addRow(); + row.setCell(STRING_COLUMN, "Hello"); + row.setCell(INTEGER_COLUMN, 42); + row.setCell(DOUBLE_COLUMN, 42.25); + row.setCell(TIMESTAMP_COLUMN, new Date(7000)); + + QueryTableModel translatedModel = new QueryTableModelTranslator(builder.getTableModel()).translate(); + + List<QueryTableColumn> columns = translatedModel.getColumns(); + assertEquals(STRING_COLUMN, columns.get(0).getTitle()); + assertEquals(QueryTableColumnDataType.STRING, columns.get(0).getDataType()); + assertEquals(INTEGER_COLUMN, columns.get(1).getTitle()); + assertEquals(QueryTableColumnDataType.LONG, columns.get(1).getDataType()); + assertEquals(DOUBLE_COLUMN, columns.get(2).getTitle()); + assertEquals(QueryTableColumnDataType.DOUBLE, columns.get(2).getDataType()); + assertEquals(TIMESTAMP_COLUMN, columns.get(3).getTitle()); + assertEquals(QueryTableColumnDataType.STRING, columns.get(3).getDataType()); + assertEquals(4, columns.size()); + + List<Serializable[]> rows = translatedModel.getRows(); + assertEquals("Hello", rows.get(0)[0]); + assertEquals(new Long(42), rows.get(0)[1]); + assertEquals(new Double(42.25), rows.get(0)[2]); + assertEquals("1970-01-01 01:00:07 +0100", rows.get(0)[3]); + assertEquals(1, rows.size()); + } +} -- GitLab