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