From d911519d7d488d072d109ee4ce7191484a7dc32d Mon Sep 17 00:00:00 2001 From: SummerC0zyR0ck Date: Thu, 10 Sep 2026 07:31:29 +0000 Subject: [PATCH 1/5] feat: add java.sql.Time converter support --- .../converters/DefaultConverterLoader.java | 7 ++ .../sqltime/SqlTimeDateConverter.java | 43 ++++++++++ .../sqltime/SqlTimeNumberConverter.java | 51 ++++++++++++ .../sqltime/SqlTimeStringConverter.java | 55 +++++++++++++ .../sheet/converter/SqlTimeRoundTripData.java | 24 ++++++ .../sheet/converter/SqlTimeRoundTripTest.java | 40 ++++++++++ .../DefaultConverterLoaderTest.java | 21 +++++ .../sqltime/SqlTimeConverterTest.java | 78 +++++++++++++++++++ 8 files changed, 319 insertions(+) create mode 100644 fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/sqltime/SqlTimeDateConverter.java create mode 100644 fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/sqltime/SqlTimeNumberConverter.java create mode 100644 fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/sqltime/SqlTimeStringConverter.java create mode 100644 fesod-sheet/src/test/java/org/apache/fesod/sheet/converter/SqlTimeRoundTripData.java create mode 100644 fesod-sheet/src/test/java/org/apache/fesod/sheet/converter/SqlTimeRoundTripTest.java create mode 100644 fesod-sheet/src/test/java/org/apache/fesod/sheet/converters/sqltime/SqlTimeConverterTest.java diff --git a/fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/DefaultConverterLoader.java b/fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/DefaultConverterLoader.java index f17d9b62c..ac8522e62 100644 --- a/fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/DefaultConverterLoader.java +++ b/fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/DefaultConverterLoader.java @@ -73,6 +73,9 @@ import org.apache.fesod.sheet.converters.shortconverter.ShortBooleanConverter; import org.apache.fesod.sheet.converters.shortconverter.ShortNumberConverter; import org.apache.fesod.sheet.converters.shortconverter.ShortStringConverter; +import org.apache.fesod.sheet.converters.sqltime.SqlTimeDateConverter; +import org.apache.fesod.sheet.converters.sqltime.SqlTimeNumberConverter; +import org.apache.fesod.sheet.converters.sqltime.SqlTimeStringConverter; import org.apache.fesod.sheet.converters.string.StringBooleanConverter; import org.apache.fesod.sheet.converters.string.StringErrorConverter; import org.apache.fesod.sheet.converters.string.StringNumberConverter; @@ -122,6 +125,8 @@ private static void initAllConverter() { putAllConverter(new LocalTimeNumberConverter()); putAllConverter(new LocalTimeStringConverter()); + putAllConverter(new SqlTimeNumberConverter()); + putAllConverter(new SqlTimeStringConverter()); putAllConverter(new DoubleBooleanConverter()); putAllConverter(new DoubleNumberConverter()); @@ -160,6 +165,7 @@ private static void initDefaultWriteConverter() { putWriteConverter(new LocalDateTimeDateConverter()); putWriteConverter(new LocalDateDateConverter()); putWriteConverter(new LocalTimeDateConverter()); + putWriteConverter(new SqlTimeDateConverter()); putWriteConverter(new DoubleNumberConverter()); putWriteConverter(new FloatNumberConverter()); putWriteConverter(new IntegerNumberConverter()); @@ -181,6 +187,7 @@ private static void initDefaultWriteConverter() { putWriteStringConverter(new LocalDateStringConverter()); putWriteStringConverter(new LocalDateTimeStringConverter()); putWriteStringConverter(new LocalTimeStringConverter()); + putWriteStringConverter(new SqlTimeStringConverter()); putWriteStringConverter(new DoubleStringConverter()); putWriteStringConverter(new FloatStringConverter()); putWriteStringConverter(new IntegerStringConverter()); diff --git a/fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/sqltime/SqlTimeDateConverter.java b/fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/sqltime/SqlTimeDateConverter.java new file mode 100644 index 000000000..e5d7d0156 --- /dev/null +++ b/fesod-sheet/src/main/java/org/apache/fesod/sheet/converters/sqltime/SqlTimeDateConverter.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 + */ +package org.apache.fesod.sheet.converters.sqltime; + +import java.sql.Time; +import java.time.LocalDateTime; +import org.apache.fesod.sheet.converters.Converter; +import org.apache.fesod.sheet.metadata.GlobalConfiguration; +import org.apache.fesod.sheet.metadata.data.WriteCellData; +import org.apache.fesod.sheet.metadata.property.ExcelContentProperty; +import org.apache.fesod.sheet.util.DateUtils; +import org.apache.fesod.sheet.util.WorkBookUtil; + +/** java.sql.Time and date converter. */ +public class SqlTimeDateConverter implements Converter