@@ -109,11 +109,11 @@ else if (value instanceof java.lang.Integer) {
109109 v = Value .newBuilder ().setIntegerValue (((Integer ) value ).intValue ())
110110 .setExcludeFromIndexes (isExcluded ).build ();
111111 }
112- else if (value instanceof String && parseInteger ((String ) value ) != null ) {
113- Integer integer = parseInteger ((String ) value );
114- v = Value .newBuilder ().setIntegerValue (integer .intValue ())
115- .setExcludeFromIndexes (isExcluded ).build ();
116- }
112+ // else if (value instanceof String && parseInteger((String) value) != null) {
113+ // Integer integer = parseInteger((String) value);
114+ // v = Value.newBuilder().setIntegerValue(integer.intValue())
115+ // .setExcludeFromIndexes(isExcluded).build();
116+ // }
117117 // LONG
118118 else if (value instanceof java .lang .Long ) {
119119 v = Value .newBuilder ().setIntegerValue ((int ) ((Long ) value ).longValue ())
@@ -124,6 +124,10 @@ else if (value instanceof java.lang.Double) {
124124 v = Value .newBuilder ().setDoubleValue (((Double ) value ).doubleValue ())
125125 .setExcludeFromIndexes (isExcluded ).build ();
126126 }
127+ // else if (value instanceof String && parseDouble((String) value) != null) {
128+ // v = Value.newBuilder().setDoubleValue(((Double) value).doubleValue())
129+ // .setExcludeFromIndexes(isExcluded).build();
130+ // }
127131 // TIMESTAMP
128132 else if (value instanceof org .joda .time .LocalDateTime ) {
129133 Timestamp timestamp = toTimestamp (((LocalDateTime ) value ).toLocalDate ().toDate ());
@@ -147,11 +151,6 @@ else if (value instanceof org.joda.time.LocalDate) {
147151 v = Value .newBuilder ().setTimestampValue (timestamp )
148152 .setExcludeFromIndexes (isExcluded ).build ();
149153 }
150- // STRING
151- else if (value instanceof String ) {
152- v = Value .newBuilder ().setStringValue ((String ) value )
153- .setExcludeFromIndexes (isExcluded ).build ();
154- }
155154 // RECORD
156155 else if (value instanceof List ) {
157156 ArrayValue .Builder arrayValueBuilder = ArrayValue .newBuilder ();
@@ -176,6 +175,12 @@ else if (value instanceof Map) {
176175 }
177176 v = Value .newBuilder ().setEntityValue (subEntityBuilder .build ()).build ();
178177 }
178+ // String
179+ // If a given value is not match the above rule, it deals with it as string.
180+ else {
181+ v = Value .newBuilder ().setStringValue (value .toString ())
182+ .setExcludeFromIndexes (isExcluded ).build ();
183+ }
179184 return v ;
180185 }
181186
@@ -240,17 +245,34 @@ public Key getKey(String name) {
240245 * Parse integer value
241246 *
242247 * @param value String
243- * @return parsed integer of null if given value is not integer
248+ * @return parsed integer or null if given value is not integer
244249 */
245250 public static Integer parseInteger (String value ) {
246- Integer integer = null ;
251+ Integer parsed = null ;
252+ try {
253+ parsed = Integer .valueOf (value );
254+ } catch (NumberFormatException e ) {
255+ // Do nothing.
256+ ;
257+ }
258+ return parsed ;
259+ }
260+
261+ /**
262+ * Parse double value
263+ *
264+ * @param value String
265+ * @return parsed double or null if given value is not double
266+ */
267+ public static Double parseDouble (String value ) {
268+ Double parsed = null ;
247269 try {
248- integer = Integer .valueOf (value );
270+ parsed = Double .valueOf (value );
249271 } catch (NumberFormatException e ) {
250272 // Do nothing.
251273 ;
252274 }
253- return integer ;
275+ return parsed ;
254276 }
255277
256278 /**
@@ -264,7 +286,7 @@ public static Instant parseDate(String value) {
264286 DateTimeFormatter formatter = DateTimeFormatter .ofPattern ("yyyy-M-d" )
265287 .withResolverStyle (ResolverStyle .SMART );
266288 java .time .LocalDate localDate = java .time .LocalDate .parse (value , formatter );
267- instant = localDate .atStartOfDay ().atZone (ZoneId .systemDefault ( )).toInstant ();
289+ instant = localDate .atStartOfDay ().atZone (ZoneId .of ( "UTC" )).toInstant ();
268290 } catch (DateTimeParseException e ) {
269291 // Do nothing.
270292 ;
@@ -295,7 +317,7 @@ public static Instant parseTimestamp(String value) {
295317 DateTimeFormatter formatter = DateTimeFormatter .ofPattern (pattern )
296318 .withResolverStyle (ResolverStyle .SMART );
297319 java .time .LocalDateTime localDateTime = java .time .LocalDateTime .parse (value , formatter );
298- instant = localDateTime .atZone (ZoneId .systemDefault ( )).toInstant ();
320+ instant = localDateTime .atZone (ZoneId .of ( "UTC" )).toInstant ();
299321 return instant ;
300322 } catch (DateTimeParseException e ) {
301323 // Do nothing.
0 commit comments