public com.yahoo.compress.CompressionType getCompressionType() { if (getDataType().getCompressionConfig() == null) { return com.yahoo.compress.CompressionType.NONE; } return getDataType().getCompressionConfig().type; }
@Override public boolean isValueCompatible(FieldValue value) { if (!(value instanceof Struct)) { return false; } Struct structValue = (Struct) value; if (structValue.getDataType().inherits(this)) { //the value is of this type; or the supertype of the value is of this type, etc.... return true; } return false; }
public int getCompressionLevel() { if ( getDataType().getCompressionConfig() == null) { return 9; } return getDataType().getCompressionConfig().compressionLevel; }
public float getCompressionThreshold() { if (getDataType().getCompressionConfig() == null) { return .95f; } return getDataType().getCompressionConfig().threshold; }
@Override public Field getField(String fieldName) { return getDataType().getField(fieldName); }
@Override public String toString() { StringBuilder retVal = new StringBuilder(); retVal.append("Struct (").append(getDataType()).append("): "); int [] increasing = getInOrder(); for (int i = 0; i < increasing.length; i++) { int id = increasing[i]; retVal.append(getDataType().getField(id)).append("=").append(values.get(id)).append(", "); } return retVal.toString(); }
public Field getKey() { return getDataType().getField(id); }
@Override public void assign(Object o) { if ((o instanceof Struct) && ((Struct) o).getDataType().equals(getDataType())) { clear(); Iterator<Map.Entry<Field,FieldValue>> otherValues = ((Struct) o).iterator(); while (otherValues.hasNext()) { Map.Entry<Field, FieldValue> otherEntry = otherValues.next(); setFieldValue(otherEntry.getKey(), otherEntry.getValue()); } } else { throw new IllegalArgumentException("Type " + o.getClass() + " can not specify a " + getClass() + " instance"); } }
private void assignPositionFieldFromStringIfNonEmpty(Struct value, String elementText, boolean base64) { String str = base64 ? Utf8.toString(new Base64().decode(elementText)) : elementText; str = str.trim(); if (str.isEmpty()) { return; } DataType valueType = value.getDataType(); if (valueType.equals(PositionDataType.INSTANCE)) { value.assign(PositionDataType.fromString(str)); } }
public static void serializeStructField(FieldWriter fieldWriter, JsonGenerator generator, FieldBase field, Struct value) { if (value.getDataType() == PositionDataType.INSTANCE) { serializeString(generator, field, PositionDataType.renderAsString(value)); return; } serializeStructuredField(fieldWriter, generator, field, value); }
@Override public void printXml(XmlStream xml) { if (getDataType().equals(PositionDataType.INSTANCE)) { try { PositionDataType.renderXml(this, xml); return; } catch (RuntimeException e) { // fallthrough to handling below } } XmlSerializationHelper.printStructXml(this, xml); }
@Override protected void doSetFieldValue(Field field, FieldValue value) { if (field == null) { throw new IllegalArgumentException("Invalid null field pointer"); } Field myField = getDataType().getField(field.getId()); if (myField==null) { throw new IllegalArgumentException("No such field in "+getDataType()+" : "+field.getName()); } if (!myField .getDataType().isValueCompatible(value)) { throw new IllegalArgumentException( "Incompatible data types. Got " + value.getDataType() + ", expected " + myField.getDataType()); } if (myField.getId() != field.getId()) { throw new IllegalArgumentException( "Inconsistent field: " + field); } int index = values.getIndexOfKey(field.getId()); if (index == -1) { values.put(field.getId(), value); invalidateOrder(); } else { values.setValue(index, value); } }
@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; }
StructDataType type = s.getDataType(); for (int i=0; i<numberOfFields; ++i) { Field structField = type.getField(fieldIdsAndLengths.get(i).first, version);
StructDataType priType = primary.getDataType(); StructDataType altType = alternate.getDataType(); for (int i=0; i<numberOfFields; ++i) { int posBefore = position();
StructDataType priType = primary.getDataType(); StructDataType altType = alternate.getDataType(); for (int i=0; i<numberOfFields; ++i) { int posBefore = position();
s.getDataType().getCompressor().compress(buffer.getByteBuffer().array(), buffer.remaining());
s.getDataType().getCompressor().compress(buffer.getByteBuffer().array(), buffer.remaining());
StructDataType type = s.getDataType(); for (int i=0; i<numberOfFields; ++i) { Field structField = type.getField(fieldIdsAndLengths.get(i).first, version);