@Override public T toJavaTypedValue(ResultSet result, Class<?> fieldType, String fieldName, Qualifier qualifier) throws IOException { int jdbcType = JdbcEntityDefinitionManager.getJdbcType(fieldType); try { if(Types.JAVA_OBJECT == jdbcType){ byte[] bytes = result.getBytes(fieldName); return (T) qualifier.getSerDeser().deserialize(bytes); } else if(Types.BOOLEAN == jdbcType){ return (T) new Boolean(result.getBoolean(fieldName)); } else { return (T) result.getObject(fieldName); } } catch (SQLException e) { throw new IOException("Field: "+fieldName+", java type:"+fieldType+", jdbc type: "+jdbcType,e); } }
public Map<String, byte[]> writeValue(TaggedLogAPIEntity entity, EntityDefinition ed) throws Exception { Map<String, byte[]> qualifierValues = new HashMap<String, byte[]>(); // iterate all modified qualifiers for (String fieldName : entity.modifiedQualifiers()) { PropertyDescriptor pd = PropertyUtils.getPropertyDescriptor(entity, fieldName); Object obj = pd.getReadMethod().invoke(entity); Qualifier q = ed.getDisplayNameMap().get(fieldName); EntitySerDeser<Object> ser = q.getSerDeser(); byte[] value = ser.serialize(obj); qualifierValues.put(q.getQualifierName(), value); } return qualifierValues; } }
@Test public void testCompare() { EntitySerDeser serDeser = new DoubleSerDeser(); TypedByteArrayComparator comparator = new TypedByteArrayComparator(serDeser.serialize(0.9), serDeser.type()); Assert.assertTrue(comparator.compareTo(serDeser.serialize(0.8)) > 0); Assert.assertTrue(comparator.compareTo(serDeser.serialize(1.1)) < 0); Assert.assertTrue(comparator.compareTo(serDeser.serialize(0.9)) == 0); Assert.assertTrue(comparator.compareTo(serDeser.serialize(-0.9)) > 0); serDeser = new IntSerDeser(); comparator = new TypedByteArrayComparator(serDeser.serialize(9), serDeser.type()); Assert.assertTrue(comparator.compareTo(serDeser.serialize(8)) > 0); Assert.assertTrue(comparator.compareTo(serDeser.serialize(11)) < 0); Assert.assertTrue(comparator.compareTo(serDeser.serialize(9)) == 0); Assert.assertTrue(comparator.compareTo(serDeser.serialize(-9)) > 0); serDeser = new LongSerDeser(); comparator = new TypedByteArrayComparator(serDeser.serialize(9l), serDeser.type()); Assert.assertTrue(comparator.compareTo(serDeser.serialize(8l)) > 0); Assert.assertTrue(comparator.compareTo(serDeser.serialize(11l)) < 0); Assert.assertTrue(comparator.compareTo(serDeser.serialize(9l)) == 0); Assert.assertTrue(comparator.compareTo(serDeser.serialize(-9l)) > 0); }
Object fieldValue = getMethod.invoke(entity); Class<?> fieldType = qualifier.getSerDeser().type(); JdbcSerDeser jdbcSerDeser = jdbcEntityDefinition.getJdbcSerDeser(displayName);
Object fieldValue = getMethod.invoke(entity); Class<?> fieldType = qualifier.getSerDeser().type(); JdbcSerDeser jdbcSerDeser = jdbcEntityDefinition.getJdbcSerDeser(displayName);
@Override public T toJavaTypedValue(ResultSet result, Class<?> fieldType, String fieldName, Qualifier qualifier) throws IOException { int jdbcType = JdbcEntityDefinitionManager.getJdbcType(fieldType); try { if(Types.JAVA_OBJECT == jdbcType){ byte[] bytes = result.getBytes(fieldName); return (T) qualifier.getSerDeser().deserialize(bytes); } else if(Types.BOOLEAN == jdbcType){ return (T) new Boolean(result.getBoolean(fieldName)); } else { return (T) result.getObject(fieldName); } } catch (SQLException e) { throw new IOException("Field: "+fieldName+", java type:"+fieldType+", jdbc type: "+jdbcType,e); } }
public Map<String, byte[]> writeValue(TaggedLogAPIEntity entity, EntityDefinition ed) throws Exception{ Map<String, byte[]> qualifierValues = new HashMap<String, byte[]>(); // iterate all modified qualifiers for(String fieldName : entity.modifiedQualifiers()){ PropertyDescriptor pd = PropertyUtils.getPropertyDescriptor(entity, fieldName); Object obj = pd.getReadMethod().invoke(entity); Qualifier q = ed.getDisplayNameMap().get(fieldName); EntitySerDeser<Object> ser = q.getSerDeser(); byte[] value = ser.serialize(obj); qualifierValues.put(q.getQualifierName(), value); } return qualifierValues; } }
/** * Map[Display Name,Double Value] * * @param map * @param ed * @return */ public static Map<String,Double> bytesMapToDoubleMap(Map<String,byte[]> map,EntityDefinition ed){ Map<String,Double> result = new HashMap<String,Double>(); for(Map.Entry<String,byte[]> entry:map.entrySet()){ String qualifierName = entry.getKey(); Qualifier qualifier = ed.getDisplayNameMap().get(qualifierName); if(qualifier == null) qualifier = ed.getQualifierNameMap().get(qualifierName); if(qualifier!=null && entry.getValue()!=null) { qualifierName = qualifier.getDisplayName(); Object value = qualifier.getSerDeser().deserialize(entry.getValue()); result.put(qualifierName, convertObjToDouble(value)); }else{ result.put(qualifierName,null); } } return result; }
throw new IllegalArgumentException("Unsupported class: " + valueClass.getName()); valueBytes[i] = valueSerDer.serialize(value); totalSize += valueBytes[i].length; ++i;
/** * Map[Display Name,Double Value] * * @param map * @param ed * @return */ public static Map<String, Double> bytesMapToDoubleMap(Map<String, byte[]> map, EntityDefinition ed) { Map<String, Double> result = new HashMap<String, Double>(); for (Map.Entry<String, byte[]> entry : map.entrySet()) { String qualifierName = entry.getKey(); Qualifier qualifier = ed.getDisplayNameMap().get(qualifierName); if (qualifier == null) { qualifier = ed.getQualifierNameMap().get(qualifierName); } if (qualifier != null && entry.getValue() != null) { qualifierName = qualifier.getDisplayName(); Object value = qualifier.getSerDeser().deserialize(entry.getValue()); result.put(qualifierName, convertObjToDouble(value)); } else { result.put(qualifierName, null); } } return result; }
public static byte[] toBytes(EntityDefinition ed, String qualifierName, String qualifierValueInStr) { // Get field type from entity class // and skip for not-found fields query expression Object typedValue = null; EntitySerDeser serDeser = null; if (ed.isTag(qualifierName)) { typedValue = qualifierValueInStr; serDeser = EntityDefinitionManager.getSerDeser(String.class); } else { try { Field field = ed.getEntityClass().getDeclaredField(qualifierName); Class<?> fieldType = field.getType(); serDeser = EntityDefinitionManager.getSerDeser(fieldType); if (serDeser == null) { throw new IllegalArgumentException("Can't find EntitySerDeser for field: " + qualifierName + "'s type: " + fieldType + ", so the field is not supported to be filtered yet"); } typedValue = convertStringToObject(qualifierValueInStr, fieldType); } catch (NoSuchFieldException ex) { // Handle the field not found exception in caller LOG.error("Field " + qualifierName + " not found in " + ed.getEntityClass()); throw new IllegalArgumentException("Field " + qualifierName + " not found in " + ed.getEntityClass(), ex); } } return serDeser.serialize(typedValue); }
public static Map<String, Object> keyValuesToMap(List<KeyValue> row, EntityDefinition ed) { Map<String, Object> result = new HashMap<String, Object>(); for (KeyValue kv : row) { String qualifierName = new String(kv.getQualifier()); if (!ed.isTag(qualifierName)) { Qualifier qualifier = ed.getDisplayNameMap().get(qualifierName); if (qualifier == null) { qualifier = ed.getQualifierNameMap().get(qualifierName); } qualifierName = qualifier.getDisplayName(); Object value = qualifier.getSerDeser().deserialize(kv.getValue()); result.put(qualifierName, value); } else { result.put(qualifierName, new String(kv.getValue())); } } return result; }
public static byte[] toBytes(EntityDefinition ed, String qualifierName, String qualifierValueInStr){ // Get field type from entity class // and skip for not-found fields query expression Object typedValue = null; EntitySerDeser serDeser = null; if(ed.isTag(qualifierName)){ typedValue = qualifierValueInStr; serDeser = EntityDefinitionManager.getSerDeser(String.class); }else{ try{ Field field = ed.getEntityClass().getDeclaredField(qualifierName); Class<?> fieldType = field.getType(); serDeser = EntityDefinitionManager.getSerDeser(fieldType); if(serDeser == null){ throw new IllegalArgumentException("Can't find EntitySerDeser for field: "+ qualifierName +"'s type: "+fieldType +", so the field is not supported to be filtered yet"); } typedValue = convertStringToObject(qualifierValueInStr, fieldType); } catch (NoSuchFieldException ex) { // Handle the field not found exception in caller LOG.error("Field " + qualifierName + " not found in " + ed.getEntityClass()); throw new IllegalArgumentException("Field "+qualifierName+" not found in "+ed.getEntityClass(),ex); } } return serDeser.serialize(typedValue); }
public static Map<String, Double> keyValuesToDoubleMap(List<KeyValue> row, EntityDefinition ed) { Map<String, Double> result = new HashMap<String, Double>(); for (KeyValue kv : row) { String qualifierName = new String(kv.getQualifier()); if (!ed.isTag(qualifierName)) { Qualifier qualifier = ed.getDisplayNameMap().get(qualifierName); if (qualifier == null) { qualifier = ed.getQualifierNameMap().get(qualifierName); } qualifierName = qualifier.getDisplayName(); Object value = qualifier.getSerDeser().deserialize(kv.getValue()); result.put(qualifierName, convertObjToDouble(value)); } else { result.put(qualifierName, Double.NaN); } } return result; }
} else { final Qualifier q = column.getQualifier(); result[i] = q.getSerDeser().serialize(value);
public static Map<String,Object> keyValuesToMap(List<KeyValue> row,EntityDefinition ed){ Map<String,Object> result = new HashMap<String,Object>(); for(KeyValue kv:row){ String qualifierName = new String(kv.getQualifier()); if(!ed.isTag(qualifierName)){ Qualifier qualifier = ed.getDisplayNameMap().get(qualifierName); if(qualifier == null){ qualifier = ed.getQualifierNameMap().get(qualifierName); } qualifierName = qualifier.getDisplayName(); Object value = qualifier.getSerDeser().deserialize(kv.getValue()); result.put(qualifierName,value); }else{ result.put(qualifierName,new String(kv.getValue())); } } return result; }
public static Map<String,Double> keyValuesToDoubleMap(List<KeyValue> row,EntityDefinition ed){ Map<String,Double> result = new HashMap<String,Double>(); for(KeyValue kv:row){ String qualifierName = new String(kv.getQualifier()); if(!ed.isTag(qualifierName)){ Qualifier qualifier = ed.getDisplayNameMap().get(qualifierName); if(qualifier == null){ qualifier = ed.getQualifierNameMap().get(qualifierName); } qualifierName = qualifier.getDisplayName(); Object value = qualifier.getSerDeser().deserialize(kv.getValue()); result.put(qualifierName,convertObjToDouble(value)); }else{ result.put(qualifierName,Double.NaN); } } return result; }
System.arraycopy(bytes, offset, valueContent, 0, valueLength); offset += valueLength; final Object value = valueSerDer.deserialize(valueContent);