Java tutorial
/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.query; import org.apache.commons.lang.StringUtils; import org.joda.time.DateTimeZone; import org.joda.time.MutableDateTime; import org.joda.time.ReadableDateTime; import com.enonic.cms.core.search.ElasticSearchFormatter; public class QueryValue { private final Number numericValue; private final String stringValue; private final ReadableDateTime dateTimeValue; public QueryValue(final Object value) { if (value instanceof Number) { numericValue = (Number) value; stringValue = doNormalizeString(value.toString()); dateTimeValue = null; } else if (value instanceof ReadableDateTime) { dateTimeValue = toUTCTimeZone((ReadableDateTime) value); stringValue = doNormalizeString( ElasticSearchFormatter.formatDateAsStringIgnoreTimezone((ReadableDateTime) value)); numericValue = null; } else { stringValue = doNormalizeString(value == null ? "" : value.toString()); numericValue = null; dateTimeValue = null; } } public Double getNumericValue() { return numericValue != null ? numericValue.doubleValue() : null; } public boolean isNumeric() { return numericValue != null; } public ReadableDateTime getDateTime() { return dateTimeValue; } public boolean isDateTime() { return dateTimeValue != null; } public String getStringValueNormalized() { if (isWildcardValue()) { return getWildcardValue(); } return stringValue != null ? StringUtils.lowerCase(stringValue) : null; } boolean isWildcardValue() { return StringUtils.contains(this.stringValue, "%"); } String getWildcardValue() { final String replacedWildcardsString = StringUtils.replace(this.stringValue, "%", "*"); return StringUtils.lowerCase(replacedWildcardsString); } private String doNormalizeString(final String stringValue) { return StringUtils.lowerCase(stringValue); } public boolean isEmpty() { return StringUtils.isBlank(stringValue) && dateTimeValue == null && numericValue == null; } private ReadableDateTime toUTCTimeZone(final ReadableDateTime dateTime) { if (DateTimeZone.UTC.equals(dateTime.getZone())) { return dateTime; } final MutableDateTime dateInUTC = dateTime.toMutableDateTime(); dateInUTC.setZone(DateTimeZone.UTC); return dateInUTC.toDateTime(); } }