public RichColumnDescriptor( ColumnDescriptor descriptor, PrimitiveType primitiveType) { super(descriptor.getPath(), primitiveType.getPrimitiveTypeName(), primitiveType.getTypeLength(), descriptor.getMaxRepetitionLevel(), descriptor.getMaxDefinitionLevel()); this.primitiveType = primitiveType; this.required = primitiveType.getRepetition() != OPTIONAL; }
@Override public int getMaxRepetitionLevel(String[] path, int i) { if (path.length != i) { throw new InvalidRecordException("Arrived at primitive node, path invalid"); } return getRepetition() == Repetition.REPEATED ? 1 : 0; }
@Override public int getMaxDefinitionLevel(String[] path, int i) { if (path.length != i) { throw new InvalidRecordException("Arrived at primitive node, path invalid"); } return getRepetition() == Repetition.REQUIRED ? 0 : 1; }
/** * {@inheritDoc} */ @Override public void writeToStringBuilder(StringBuilder sb, String indent) { sb.append(indent) .append(getRepetition().name().toLowerCase()) .append(" ") .append(primitive.name().toLowerCase()) .append(" ") .append(getName()); if (getOriginalType() != null) { sb.append(" (").append(getOriginalType()).append(")"); } }
/** * {@inheritDoc} */ @Override protected int typeHashCode() { int hash = 17; hash += 31 * getRepetition().hashCode(); hash += 31 * getPrimitiveTypeName().hashCode(); hash += 31 * getName().hashCode(); return hash; }
/** * {@inheritDoc} */ @Override public void writeToStringBuilder(StringBuilder sb, String indent) { sb.append(indent) .append(getRepetition().name().toLowerCase()) .append(" ") .append(primitive.name().toLowerCase()); if (primitive == PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY) { sb.append("(" + length + ")"); } sb.append(" ").append(getName()); if (getOriginalType() != null) { sb.append(" (").append(getOriginalType()); DecimalMetadata meta = getDecimalMetadata(); if (meta != null) { sb.append("(") .append(meta.getPrecision()) .append(",") .append(meta.getScale()) .append(")"); } sb.append(")"); } if (getId() != null) { sb.append(" = ").append(getId()); } }
/** * {@inheritDoc} */ @Override protected boolean typeEquals(Type other) { if (other.isPrimitive()) { PrimitiveType primitiveType = other.asPrimitiveType(); return getRepetition() == primitiveType.getRepetition() && getPrimitiveTypeName().equals(primitiveType.getPrimitiveTypeName()) && getName().equals(primitiveType.getName()); } else { return false; } }
private static void showDetails(PrettyPrintWriter out, PrimitiveType type, int depth, MessageType container, List<String> cpath) { String name = Strings.repeat(".", depth) + type.getName(); OriginalType otype = type.getOriginalType(); Repetition rep = type.getRepetition(); PrimitiveTypeName ptype = type.getPrimitiveTypeName(); out.format("%s: %s %s", name, rep, ptype); if (otype != null) out.format(" O:%s", otype); if (container != null) { cpath.add(type.getName()); String[] paths = cpath.toArray(new String[cpath.size()]); cpath.remove(cpath.size() - 1); ColumnDescriptor desc = container.getColumnDescription(paths); int defl = desc.getMaxDefinitionLevel(); int repl = desc.getMaxRepetitionLevel(); out.format(" R:%d D:%d", repl, defl); } out.println(); }
/** * @param id the field id * @return a new PrimitiveType with the same fields and a new id */ @Override public PrimitiveType withId(int id) { return new PrimitiveType(getRepetition(), primitive, length, getName(), getOriginalType(), decimalMeta, new ID(id)); }
@Override public void visit(PrimitiveType primitiveType) { SchemaElement element = new SchemaElement(primitiveType.getName()); element.setRepetition_type(toParquetRepetition(primitiveType.getRepetition())); element.setType(getType(primitiveType.getPrimitiveTypeName())); if (primitiveType.getOriginalType() != null) { element.setConverted_type(getConvertedType(primitiveType.getOriginalType())); } if (primitiveType.getDecimalMetadata() != null) { element.setPrecision(primitiveType.getDecimalMetadata().getPrecision()); element.setScale(primitiveType.getDecimalMetadata().getScale()); } if (primitiveType.getTypeLength() > 0) { element.setType_length(primitiveType.getTypeLength()); } result.add(element); }