Repository: incubator-carbondata Updated Branches: refs/heads/master 47658b17d -> fa6b6e43e
make timestamp formatter static make thread safe Project: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/commit/dc57aec5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/tree/dc57aec5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/diff/dc57aec5 Branch: refs/heads/master Commit: dc57aec5f1d3d7158e93226af1415db49c7f2f1c Parents: 47658b1 Author: jackylk <jacky.li...@huawei.com> Authored: Wed Dec 7 15:14:13 2016 +0800 Committer: chenliang613 <chenliang...@apache.org> Committed: Wed Dec 7 18:44:54 2016 +0800 ---------------------------------------------------------------------- .../carbondata/core/util/DataTypeUtil.java | 55 ++++---------------- 1 file changed, 11 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/dc57aec5/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java b/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java index 94a62b8..b97fd92 100644 --- a/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java +++ b/core/src/main/java/org/apache/carbondata/core/util/DataTypeUtil.java @@ -22,6 +22,7 @@ package org.apache.carbondata.core.util; import java.math.BigDecimal; import java.math.BigInteger; import java.math.RoundingMode; +import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -35,7 +36,6 @@ import org.apache.carbondata.core.carbon.metadata.schema.table.column.CarbonDime import org.apache.carbondata.core.carbon.metadata.schema.table.column.CarbonMeasure; import org.apache.carbondata.core.constants.CarbonCommonConstants; -import org.apache.commons.lang.math.NumberUtils; import org.apache.spark.unsafe.types.UTF8String; public final class DataTypeUtil { @@ -47,6 +47,15 @@ public final class DataTypeUtil { LogServiceFactory.getLogService(DataTypeUtil.class.getName()); private static final Map<String, String> dataTypeDisplayNames; + private static final ThreadLocal<DateFormat> formatter = new ThreadLocal<DateFormat>() { + @Override + protected DateFormat initialValue() { + return new SimpleDateFormat( + CarbonProperties.getInstance().getProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, + CarbonCommonConstants.CARBON_TIMESTAMP_DEFAULT_FORMAT)); + } + }; + static { dataTypeDisplayNames = new HashMap<String, String>(16); dataTypeDisplayNames.put(DataType.DATE.toString(), DataType.DATE.getName()); @@ -208,43 +217,6 @@ public final class DataTypeUtil { } /** - * Below method will be used to basically to know whether the input data is valid string of - * giving data type. If there is any non parseable string is present return false. - */ - public static boolean isValidData(String data, DataType actualDataType) { - if (null == data) { - return false; - } - try { - switch (actualDataType) { - case SHORT: - case INT: - case LONG: - case DOUBLE: - case DECIMAL: - return NumberUtils.isNumber(data); - case TIMESTAMP: - if (data.isEmpty()) { - return false; - } - SimpleDateFormat parser = new SimpleDateFormat(CarbonProperties.getInstance() - .getProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, - CarbonCommonConstants.CARBON_TIMESTAMP_DEFAULT_FORMAT)); - try { - parser.parse(data); - return true; - } catch (ParseException e) { - return false; - } - default: - return true; - } - } catch (NumberFormatException ex) { - return false; - } - } - - /** * Below method will be used to convert the data passed to its actual data * type * @@ -253,7 +225,6 @@ public final class DataTypeUtil { * @return actual data after conversion */ public static Object getDataBasedOnDataType(String data, DataType actualDataType) { - if (null == data || CarbonCommonConstants.MEMBER_DEFAULT_VAL.equals(data)) { return null; } @@ -283,12 +254,8 @@ public final class DataTypeUtil { if (data.isEmpty()) { return null; } - SimpleDateFormat parser = new SimpleDateFormat(CarbonProperties.getInstance() - .getProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, - CarbonCommonConstants.CARBON_TIMESTAMP_DEFAULT_FORMAT)); - Date dateToStr = null; try { - dateToStr = parser.parse(data); + Date dateToStr = formatter.get().parse(data); return dateToStr.getTime() * 1000; } catch (ParseException e) { LOGGER.error("Cannot convert" + data + " to Time/Long type value" + e.getMessage());