diff --git a/main/src/com/google/refine/exporters/CsvExporter.java b/main/src/com/google/refine/exporters/CsvExporter.java index 3d44a01a0..cf3a146e0 100644 --- a/main/src/com/google/refine/exporters/CsvExporter.java +++ b/main/src/com/google/refine/exporters/CsvExporter.java @@ -35,6 +35,8 @@ package com.google.refine.exporters; import java.io.IOException; import java.io.Writer; +import java.util.Calendar; +import java.util.Date; import java.util.Properties; import org.slf4j.Logger; @@ -48,6 +50,7 @@ import com.google.refine.browsing.RowVisitor; import com.google.refine.model.Column; import com.google.refine.model.Project; import com.google.refine.model.Row; +import com.google.refine.util.ParsingUtilities; public class CsvExporter implements WriterExporter{ @@ -94,7 +97,15 @@ public class CsvExporter implements WriterExporter{ Object value = row.getCellValue(cellIndex); if (value != null) { - vals[i] = value instanceof String ? (String) value : value.toString(); + if (value instanceof String) { + vals[i] = (String) value; + } else if (value instanceof Calendar) { + vals[i] = ParsingUtilities.dateToString(((Calendar) value).getTime()); + } else if (value instanceof Date) { + vals[i] = ParsingUtilities.dateToString((Date) value); + } else { + vals[i] = value.toString(); + } } i++; } diff --git a/main/tests/server/src/com/google/refine/tests/exporters/CsvExporterTests.java b/main/tests/server/src/com/google/refine/tests/exporters/CsvExporterTests.java index d8a87c732..7b878706f 100644 --- a/main/tests/server/src/com/google/refine/tests/exporters/CsvExporterTests.java +++ b/main/tests/server/src/com/google/refine/tests/exporters/CsvExporterTests.java @@ -35,6 +35,8 @@ package com.google.refine.tests.exporters; import java.io.IOException; import java.io.StringWriter; +import java.util.Calendar; +import java.util.Date; import java.util.Properties; import static org.mockito.Mockito.mock; @@ -57,6 +59,7 @@ import com.google.refine.model.ModelException; import com.google.refine.model.Project; import com.google.refine.model.Row; import com.google.refine.tests.RefineTest; +import com.google.refine.util.ParsingUtilities; public class CsvExporterTests extends RefineTest { @@ -192,6 +195,28 @@ public class CsvExporterTests extends RefineTest { "row1cell0,,row1cell2\n" + ",row2cell1,row2cell2\n"); } + + @Test + public void exportDateColumns(){ + CreateGrid(1,1); + Calendar calendar = Calendar.getInstance(); + Date date = new Date(); + + when(options.getProperty("printColumnHeader")).thenReturn("false"); + project.rows.get(0).cells.set(0, new Cell(calendar, null)); + project.rows.get(0).cells.set(1, new Cell(date, null)); + + try { + SUT.export(project, options, engine, writer); + } catch (IOException e) { + Assert.fail(); + } + + String expectedOutput = ParsingUtilities.dateToString(calendar.getTime()) + "," + + ParsingUtilities.dateToString(date) + "\n"; + + Assert.assertEquals(writer.toString(), expectedOutput); + } //helper methods