@Override public void next() throws IOException { topKey = null; topValue = null; prepKeys(); }
private void prepKeys() throws IOException { long kvBufSize = 0; if (topKey != null) return; Text currentRow; do { if (!sourceIter.hasTop()) return; currentRow = new Text(sourceIter.getTopKey().getRow()); keys.clear(); values.clear(); while (sourceIter.hasTop() && sourceIter.getTopKey().getRow().equals(currentRow)) { Key sourceTopKey = sourceIter.getTopKey(); Value sourceTopValue = sourceIter.getTopValue(); keys.add(new Key(sourceTopKey)); values.add(new Value(sourceTopValue)); kvBufSize += sourceTopKey.getSize() + sourceTopValue.getSize() + 128; if (kvBufSize > maxBufferSize) { throw new BufferOverflowException( "Exceeded buffer size of " + maxBufferSize + " for row: " + sourceTopKey.getRow()); } sourceIter.next(); } } while (!filter(currentRow, keys, values)); topKey = new Key(currentRow); topValue = rowEncoder(keys, values); }
@Override public void init(SortedKeyValueIterator<Key, Value> source, Map<String, String> options, IteratorEnvironment env) throws IOException { super.init(source, options, env); Set<String> labels = new HashSet<>(); Set<String> excludedLabels = new HashSet<>(); for (Map.Entry<String, String> option : options.entrySet()) { if (option.getKey().startsWith(SETTING_LABEL_PREFIX)) { labels.add(option.getValue()); } else if (option.getKey().startsWith(SETTING_EXCLUDED_LABEL_PREFIX)) { excludedLabels.add(option.getValue()); } } this.labels = labels.size() == 0 ? null : labels; this.excludedLabels = excludedLabels.size() == 0 ? null : excludedLabels; }
private void prepKeys() throws IOException { long kvBufSize = 0; if (topKey != null) return; Text currentRow; do { if (sourceIter.hasTop() == false) return; currentRow = new Text(sourceIter.getTopKey().getRow()); keys.clear(); values.clear(); while (sourceIter.hasTop() && sourceIter.getTopKey().getRow().equals(currentRow)) { Key sourceTopKey = sourceIter.getTopKey(); Value sourceTopValue = sourceIter.getTopValue(); keys.add(new Key(sourceTopKey)); values.add(new Value(sourceTopValue)); kvBufSize += sourceTopKey.getSize() + sourceTopValue.getSize() + 128; if (kvBufSize > maxBufferSize) { throw new BufferOverflowException("Exceeded buffer size of " + maxBufferSize + " for row: " + sourceTopKey.getRow().toString()); } sourceIter.next(); } } while (!filter(currentRow, keys, values)); topKey = new Key(currentRow); topValue = rowEncoder(keys, values); }
@Override public void init(SortedKeyValueIterator<Key, Value> source, Map<String, String> options, IteratorEnvironment env) throws IOException { super.init(source, options, env); Set<String> labels = new HashSet<>(); Set<String> excludedLabels = new HashSet<>(); for (Map.Entry<String, String> option : options.entrySet()) { if (option.getKey().startsWith(SETTING_LABEL_PREFIX)) { labels.add(option.getValue()); } else if (option.getKey().startsWith(SETTING_EXCLUDED_LABEL_PREFIX)) { excludedLabels.add(option.getValue()); } } this.labels = labels.size() == 0 ? null : labels; this.excludedLabels = excludedLabels.size() == 0 ? null : excludedLabels; }
@Override public void next() throws IOException { topKey = null; topValue = null; prepKeys(); }
@Override public void init(SortedKeyValueIterator<Key, Value> source, Map<String, String> options, IteratorEnvironment env) throws IOException { super.init(source, options, env); fetchHints = new IteratorFetchHints( Boolean.parseBoolean(options.get(SETTING_FETCH_HINTS_PREFIX + "includeAllProperties")), parseSet(options.get(SETTING_FETCH_HINTS_PREFIX + "propertyNamesToInclude")), Boolean.parseBoolean(options.get(SETTING_FETCH_HINTS_PREFIX + "includeAllPropertyMetadata")), parseSet(options.get(SETTING_FETCH_HINTS_PREFIX + "metadataKeysToInclude")), Boolean.parseBoolean(options.get(SETTING_FETCH_HINTS_PREFIX + "includeHidden")), Boolean.parseBoolean(options.get(SETTING_FETCH_HINTS_PREFIX + "includeAllEdgeRefs")), Boolean.parseBoolean(options.get(SETTING_FETCH_HINTS_PREFIX + "includeOutEdgeRefs")), Boolean.parseBoolean(options.get(SETTING_FETCH_HINTS_PREFIX + "includeInEdgeRefs")), parseSet(options.get(SETTING_FETCH_HINTS_PREFIX + "edgeLabelsOfEdgeRefsToInclude")), Boolean.parseBoolean(options.get(SETTING_FETCH_HINTS_PREFIX + "includeEdgeLabelsAndCounts")), Boolean.parseBoolean(options.get(SETTING_FETCH_HINTS_PREFIX + "includeExtendedDataTableNames")) ); elementData = createElementData(); }
@Override public void seek(Range range, Collection<ByteSequence> columnFamilies, boolean inclusive) throws IOException { topKey = null; topValue = null; Key sk = range.getStartKey(); if (sk != null && sk.getColumnFamilyData().length() == 0 && sk.getColumnQualifierData().length() == 0 && sk.getColumnVisibilityData().length() == 0 && sk.getTimestamp() == Long.MAX_VALUE && !range.isStartKeyInclusive()) { // assuming that we are seeking using a key previously returned by this iterator // therefore go to the next row Key followingRowKey = sk.followingKey(PartialKey.ROW); if (range.getEndKey() != null && followingRowKey.compareTo(range.getEndKey()) > 0) return; range = new Range(sk.followingKey(PartialKey.ROW), true, range.getEndKey(), range.isEndKeyInclusive()); } sourceIter.seek(range, columnFamilies, inclusive); prepKeys(); }
@Override public void seek(Range range, Collection<ByteSequence> columnFamilies, boolean inclusive) throws IOException { topKey = null; topValue = null; Key sk = range.getStartKey(); if (sk != null && sk.getColumnFamilyData().length() == 0 && sk.getColumnQualifierData().length() == 0 && sk.getColumnVisibilityData().length() == 0 && sk.getTimestamp() == Long.MAX_VALUE && !range.isStartKeyInclusive()) { // assuming that we are seeking using a key previously returned by this iterator // therefore go to the next row Key followingRowKey = sk.followingKey(PartialKey.ROW); if (range.getEndKey() != null && followingRowKey.compareTo(range.getEndKey()) > 0) return; range = new Range(sk.followingKey(PartialKey.ROW), true, range.getEndKey(), range.isEndKeyInclusive()); } sourceIter.seek(range, columnFamilies, inclusive); prepKeys(); }