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());

Reply via email to