/** Expert API */ public BinaryPoint(String name, byte[] packedPoint, FieldType type) { super(name, packedPoint, type); if (packedPoint.length != type.pointDimensionCount() * type.pointNumBytes()) { throw new IllegalArgumentException( "packedPoint is length=" + packedPoint.length + " but type.pointDimensionCount()=" + type.pointDimensionCount() + " and type.pointNumBytes()=" + type.pointNumBytes()); } }
/** * Create a new instance configured with the provided FieldType options. See {@link * #DEFAULT_FIELDTYPE}. a field type is used to articulate the desired options (namely * pointValues, docValues, stored). Legacy numerics is configurable this way too. */ public PointVectorStrategy(SpatialContext ctx, String fieldNamePrefix, FieldType fieldType) { super(ctx, fieldNamePrefix); this.fieldNameX = fieldNamePrefix + SUFFIX_X; this.fieldNameY = fieldNamePrefix + SUFFIX_Y; int numPairs = 0; if ((this.hasStored = fieldType.stored())) { numPairs++; } if ((this.hasDocVals = fieldType.docValuesType() != DocValuesType.NONE)) { numPairs++; } if ((this.hasPointVals = fieldType.pointDimensionCount() > 0)) { numPairs++; } if (fieldType.indexOptions() != IndexOptions.NONE && fieldType.numericType() != null) { if (hasPointVals) { throw new IllegalArgumentException( "pointValues and LegacyNumericType are mutually exclusive"); } if (fieldType.numericType() != FieldType.LegacyNumericType.DOUBLE) { throw new IllegalArgumentException( getClass() + " does not support " + fieldType.numericType()); } numPairs++; legacyNumericFieldType = new FieldType(LegacyDoubleField.TYPE_NOT_STORED); legacyNumericFieldType.setNumericPrecisionStep(fieldType.numericPrecisionStep()); legacyNumericFieldType.freeze(); } else { legacyNumericFieldType = null; } this.fieldsLen = numPairs * 2; }