public DeferredReadCommonIndexedPersistenceEncoding( final short adapterId, final byte[] dataId, final byte[] partitionKey, final byte[] sortKey, final int duplicateCount, final PersistentDataset<CommonIndexValue> commonData, final FlattenedUnreadData unreadData) { super( adapterId, dataId, partitionKey, sortKey, duplicateCount, commonData, new PersistentDataset<byte[]>(), new PersistentDataset<>()); this.unreadData = unreadData; }
@Override public boolean accept( final CommonIndexModel indexModel, final IndexedPersistenceEncoding<?> persistenceEncoding) { final ByteArray stringBytes = (ByteArray) persistenceEncoding.getCommonData().getValue(fieldName); if (stringBytes != null) { final String value = stringBytes.getString(); return caseSensitive ? matchValue.equals(value) : matchValue.equalsIgnoreCase(value); } return false; }
@Override public AdapterPersistenceEncoding encode( final GridCoverage entry, final CommonIndexModel indexModel) { final PersistentDataset<Object> adapterExtendedData = new PersistentDataset<>(); adapterExtendedData.addValue(DATA_FIELD_ID, getRasterTileFromCoverage(entry)); final AdapterPersistenceEncoding encoding; if (entry instanceof FitToIndexGridCoverage) { encoding = new FitToIndexPersistenceEncoding( new byte[0], new PersistentDataset<CommonIndexValue>(), adapterExtendedData, ((FitToIndexGridCoverage) entry).getPartitionKey(), ((FitToIndexGridCoverage) entry).getSortKey()); } else { // this shouldn't happen LOGGER.warn("Grid coverage is not fit to the index"); encoding = new AdapterPersistenceEncoding( new byte[0], new PersistentDataset<CommonIndexValue>(), adapterExtendedData); } return encoding; }
@Override public void convertUnknownValues(final DataTypeAdapter<?> adapter, final CommonIndexModel model) { final Set<Entry<String, byte[]>> unknownDataValues = getUnknownData().getValues().entrySet(); for (final Entry<String, byte[]> v : unknownDataValues) { final FieldReader<Object> reader = adapter.getReader(v.getKey()); final Object value = reader.readField(v.getValue()); adapterExtendedData.addValue(v.getKey(), value); } } }
public IndexedAdapterPersistenceEncoding getAdapterEncoding(final DataTypeAdapter dataAdapter) { final PersistentDataset<Object> adapterExtendedValues = new PersistentDataset<>(); if (persistenceEncoding instanceof AbstractAdapterPersistenceEncoding) { ((AbstractAdapterPersistenceEncoding) persistenceEncoding).convertUnknownValues( dataAdapter, model); final PersistentDataset<Object> existingExtValues = ((AbstractAdapterPersistenceEncoding) persistenceEncoding).getAdapterExtendedData(); if (existingExtValues != null) { adapterExtendedValues.addValues(existingExtValues.getValues()); } } adapterEncoding = new IndexedAdapterPersistenceEncoding( persistenceEncoding.getInternalAdapterId(), persistenceEncoding.getDataId(), persistenceEncoding.getInsertionPartitionKey(), persistenceEncoding.getInsertionSortKey(), persistenceEncoding.getDuplicateCount(), persistenceEncoding.getCommonData(), new PersistentDataset<byte[]>(), adapterExtendedValues); return adapterEncoding; }
public PersistentDataset(final String fieldName, final T value) { this(); addValue(fieldName, value); }
byte[] indexModelVisibility = new byte[0]; if (visibilityEnabled) { for (final Entry<String, CommonIndexValue> fieldValue : encodedData.getCommonData().getValues().entrySet()) { indexModelVisibility = DataStoreUtils.mergeVisibilities( } else { final List<FieldInfo<?>> fieldInfoList = new ArrayList<>(); for (final Entry<String, CommonIndexValue> fieldValue : encodedData.getCommonData().getValues().entrySet()) { final FieldInfo<?> fieldInfo = getFieldInfo( for (final Entry<String, Object> fieldValue : encodedData.getAdapterExtendedData().getValues().entrySet()) { if (fieldValue.getValue() != null) { final FieldInfo<?> fieldInfo =
final IndexedPersistenceEncoding persistenceEncoding) { if ((filter != null) && (indexModel != null) && (adapter != null)) { final PersistentDataset<Object> adapterExtendedValues = new PersistentDataset<>(); if (persistenceEncoding instanceof AbstractAdapterPersistenceEncoding) { ((AbstractAdapterPersistenceEncoding) persistenceEncoding).convertUnknownValues( adapterExtendedValues.addValues(existingExtValues.getValues()); persistenceEncoding.getDuplicateCount(), persistenceEncoding.getCommonData(), new PersistentDataset<byte[]>(), adapterExtendedValues);
protected FlattenedUnreadData aggregateFieldData( final Cell cell, final PersistentDataset<CommonIndexValue> commonData) { final byte[] qualBuf = CellUtil.cloneQualifier(cell); final byte[] valBuf = CellUtil.cloneValue(cell); final FlattenedDataSet dataSet = DataStoreUtils.decomposeFlattenedFields( qualBuf, valBuf, null, commonIndexFieldIds.size() - 1); final List<FlattenedFieldInfo> fieldInfos = dataSet.getFieldsRead(); for (final FlattenedFieldInfo fieldInfo : fieldInfos) { final int ordinal = fieldInfo.getFieldPosition(); if (ordinal < commonIndexFieldIds.size()) { final String commonIndexFieldName = commonIndexFieldIds.get(ordinal); final FieldReader<? extends CommonIndexValue> reader = model.getReader(commonIndexFieldName); if (reader != null) { final CommonIndexValue fieldValue = reader.readField(fieldInfo.getValue()); commonData.addValue(commonIndexFieldName, fieldValue); } else { LOGGER.error("Could not find reader for common index field: " + commonIndexFieldName); } } } return dataSet.getFieldsDeferred(); }
@Override public GeometryWrapper toIndexValue(final PersistentDataset<Object> adapterPersistenceEncoding) { final Geometry geometry = (Geometry) adapterPersistenceEncoding.getValue(nativeGeometryHandler.getFieldName()); // visibility is unnecessary because this only happens after the geometry is read (its only used // in reconstructing common index values when using a secondary index) return new GeometryWrapper(geometry, null); } }
public AsyncPersistenceEncoding( final short adapterId, final byte[] dataId, final byte[] partitionKey, final byte[] sortKey, final int duplicateCount, final BatchDataIndexRetrieval asyncRetrieval) { super( adapterId, dataId, partitionKey, sortKey, duplicateCount, new PersistentDataset<CommonIndexValue>(), new PersistentDataset<byte[]>(), new PersistentDataset<>()); this.asyncRetrieval = asyncRetrieval; }
@Override public AdapterPersistenceEncoding encode(final T entry, final CommonIndexModel indexModel) { final PersistentDataset<CommonIndexValue> indexData = new PersistentDataset<CommonIndexValue>(); final Set<String> nativeFieldsInIndex = new HashSet<String>(); indexData.addValue(dimension.getFieldName(), value); nativeFieldsInIndex.addAll(Arrays.asList(fieldHandler.getNativeFieldNames())); final PersistentDataset<Object> extendedData = new PersistentDataset<Object>(); continue; extendedData.addValue(fieldName, fieldHandler.getFieldValue(entry));
final CommonIndexValue fieldValue = reader.readField(fieldInfo.getValue()); fieldValue.setVisibility(value.getVisibility()); commonData.addValue(commonIndexFieldName, fieldValue); } else { LOGGER.error("Could not find reader for common index field: " + commonIndexFieldName);
@Override public boolean accept( final CommonIndexModel indexModel, final IndexedPersistenceEncoding<?> persistenceEncoding) { final ByteArray value = (ByteArray) persistenceEncoding.getCommonData().getValue(fieldName); if (value != null) { final double val = Lexicoders.DOUBLE.fromByteArray(value.getBytes()); if (inclusiveLow && inclusiveHigh) { return (val >= lowerValue.doubleValue()) && (val <= upperValue.doubleValue()); } else if (inclusiveLow) { return (val >= lowerValue.doubleValue()) && (val < upperValue.doubleValue()); } else if (inclusiveHigh) { return (val > lowerValue.doubleValue()) && (val <= upperValue.doubleValue()); } else { return (val > lowerValue.doubleValue()) && (val < upperValue.doubleValue()); } } return false; }
public AdapterPersistenceEncoding( final short internalAdapterId, final byte[] dataId, final PersistentDataset<CommonIndexValue> commonData, final PersistentDataset<Object> adapterExtendedData) { super( internalAdapterId, dataId, null, null, 0, commonData, new PersistentDataset<byte[]>(), adapterExtendedData); // all data is identified by // the adapter, there is // inherently no unknown // data elements }
@Override public void convertUnknownValues(final DataTypeAdapter<?> adapter, final CommonIndexModel model) { if (unreadData != null) { final List<FlattenedFieldInfo> fields = unreadData.finishRead(); for (final FlattenedFieldInfo field : fields) { String fieldName = adapter.getFieldNameForPosition(model, field.getFieldPosition()); if (fieldName == null) { fieldName = adapter.getFieldNameForPosition(model, field.getFieldPosition()); } final FieldReader<Object> reader = adapter.getReader(fieldName); final Object value = reader.readField(field.getValue()); adapterExtendedData.addValue(fieldName, value); } } } }
@Override public Time toIndexValue(final PersistentDataset<Object> adapterPersistenceEncoding) { final Object startObj = adapterPersistenceEncoding.getValue(nativeStartTimeHandler.getFieldName()); final Object endObj = adapterPersistenceEncoding.getValue(nativeEndTimeHandler.getFieldName()); // visibility is unnecessary because this only happens after the geometry is read (its only used // in reconstructing common index values when using a secondary index) return new TimeRange(TimeUtils.getTimeMillis(startObj), TimeUtils.getTimeMillis(endObj), null); } }
@Override public AdapterPersistenceEncoding encode( final ImageChip entry, final CommonIndexModel indexModel) { final Map<String, Object> fieldIdToValueMap = new HashMap<>(); fieldIdToValueMap.put(IMAGE_FIELD_NAME, entry.getImageBinary()); return new AdapterPersistenceEncoding( entry.getDataId(), new PersistentDataset<CommonIndexValue>(), new PersistentDataset<>(fieldIdToValueMap)); }
final CommonIndexValue indexValue = indexFieldReader.readField(fieldInfo.getValue()); indexValue.setVisibility(value.getVisibility()); commonData.addValue(fieldName, indexValue); } else { final FieldReader<?> extFieldReader = dataAdapter.getReader(fieldName); final Object objValue = extFieldReader.readField(fieldInfo.getValue()); adapterExtendedData.addValue(fieldName, objValue); } else { LOGGER.error("field reader not found for data entry, the value may be ignored"); unknownData.addValue(fieldName, fieldInfo.getValue()); ((AbstractDataAdapter) dataAdapter.getAdapter()).getFieldHandler(dimension); final CommonIndexValue commonIndexValue = fieldHandler.toIndexValue(adapterExtendedData); commonData.addValue(dimension.getFieldName(), commonIndexValue);