/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.wizecommerce.hecuba;
import org.json.simple.JSONObject;
import java.sql.Timestamp;
import java.util.Date;
public class JSONResultSet {
final JSONObject decoder;
private JSONResultSet() {
decoder = null;
}
public JSONResultSet(JSONObject value) {
this.decoder = value;
}
public String getString(String fieldName) {
return getString(fieldName, "");
}
public String getString(String fieldName, String defaultValue) {
String value = (String) decoder.get(fieldName);
if ((value == null) || value.equals("")) {
return defaultValue;
}
return value;
}
public Boolean getBoolean(String fieldName) {
return getBoolean(fieldName, Boolean.FALSE);
}
public Boolean getBoolean(String fieldName, Boolean defaultValue) {
Boolean value = (Boolean) decoder.get(fieldName);
return (value == null) ? defaultValue : value;
}
public Integer getInteger(String fieldName) {
return getInteger(fieldName, 0);
}
public Integer getInteger(String fieldName, Integer defaultInt) {
Long value = (Long) decoder.get(fieldName);
return (value == null) ? defaultInt : value.intValue();
}
public Long getLong(String fieldName) {
return getLong(fieldName, 0L);
}
public Long getLong(String fieldName, Long defaultLong) {
Long value = (Long) decoder.get(fieldName);
return (value == null) ? defaultLong : value;
}
public Double getDouble(String fieldName) {
return getDouble(fieldName, 0.0);
}
public Double getDouble(String fieldName, Double defaultDouble) {
Double value = (Double) decoder.get(fieldName);
return (value == null) ? defaultDouble : value;
}
public float getFloat(String fieldName) {
return getFloat(fieldName, 0.0f);
}
public float getFloat(String fieldName, Float defaultValue) {
Float value = (Float) decoder.get(fieldName);
return (value == null) ? defaultValue : value;
}
// numeric values seem to come in as Longs, need to downcast
public Byte getByte(String fieldName) {
final Long value = (Long) decoder.get(fieldName);
return (value == null) ? null : value.byteValue();
}
/**
* you should be storing dates as longs
*
* @param fieldName name of the field
*
* @return the date associated with the fieldName
*/
@Deprecated
public Date getDate(String fieldName) {
return getDate(fieldName, null);
}
/**
* NOTE: Using simple-json (our current implementation), date and time are considered complex objects. It is recommended to store the date in json as the epoch time ie.
* .getTime(); which should be available for java.util.Date, java.sql.Date, and java.sql.Timestamp;
*
* @param fieldName name of the field
* @param defaultDate default date to return if no value assocated with the field
*
* @return the associated with the fieldName or defaultDate if no value associated with the field
*
**/
@Deprecated
public Date getDate(String fieldName, Date defaultDate) {
Long epoch = (Long) decoder.get(fieldName);
return (epoch == null) ? defaultDate : new Date(epoch);
}
@Deprecated
public java.sql.Date getSQLDate(String fieldName) {
return getSQLDate(fieldName, null);
}
@Deprecated
public java.sql.Date getSQLDate(String fieldName,
java.sql.Date defaultDate) {
Long epoch = (Long) decoder.get(fieldName);
return (epoch == null) ? defaultDate : new java.sql.Date(epoch);
}
@Deprecated
public Timestamp getSQLTimeStamp(String fieldName) {
return getSQLTimeStamp(fieldName, null);
}
@Deprecated
public Timestamp getSQLTimeStamp(String fieldName, Timestamp defaultDate) {
Long epoch = (Long) decoder.get(fieldName);
return (epoch == null) ? defaultDate : new Timestamp(epoch);
}
public byte[] getByteArray(String fieldName) {
byte[] value = (byte[]) decoder.get(fieldName);
return value;
}
}