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.likun@huawei.com>
Authored: Wed Dec 7 15:14:13 2016 +0800
Committer: chenliang613 <chenliang613@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());
|