@Override public FieldValue getFieldValue(Field field) { FieldValue fv = header.getFieldValue(field); if (fv == null) { fv = body.getFieldValue(field); } return fv; }
public static IntegerFieldValue getXValue(FieldValue pos) { return Struct.getFieldValue(pos, INSTANCE, FFIELD_X, IntegerFieldValue.class); }
public static IntegerFieldValue getYValue(FieldValue pos) { return Struct.getFieldValue(pos, INSTANCE, FFIELD_Y, IntegerFieldValue.class); }
private static Integer getFieldValue(Struct struct, String fieldName) { IntegerFieldValue val = (IntegerFieldValue)struct.getFieldValue(fieldName); return val != null ? val.getInteger() : null; }
public static <T> T getFieldValue(FieldValue struct, DataType structType, Field field, Class<T> fieldType) { if (!(struct instanceof Struct)) { return null; } if (!struct.getDataType().equals(structType)) { return null; } FieldValue fieldValue = ((Struct)struct).getFieldValue(field); if (!fieldType.isInstance(fieldValue)) { return null; } return fieldType.cast(fieldValue); }
public static <T> T getFieldValue(FieldValue struct, DataType structType, String fieldName, Class<T> fieldType) { if (!(struct instanceof Struct)) { return null; } if (!struct.getDataType().equals(structType)) { return null; } FieldValue fieldValue = ((Struct)struct).getFieldValue(fieldName); if (!fieldType.isInstance(fieldValue)) { return null; } return fieldType.cast(fieldValue); }
@Override public int compareTo(FieldValue obj) { int cmp = super.compareTo(obj); if (cmp != 0) { return cmp; } Struct rhs = (Struct)obj; cmp = values.size() - rhs.values.size(); if (cmp != 0) { return cmp; } StructDataType type = getDataType(); for (Field field : type.getFields()) { FieldValue lhsField = getFieldValue(field); FieldValue rhsField = rhs.getFieldValue(field); if (lhsField != null && rhsField != null) { cmp = lhsField.compareTo(rhsField); if (cmp != 0) { return cmp; } } else if (lhsField != null || rhsField != null) { return (lhsField != null ? -1 : 1); } } return 0; }