public AutoCloseableIterator<DiffObjectInfo<RevFeature>> getDiffFeatures( Iterator<DiffEntry> refs) { AutoCloseableIterator<DiffObjectInfo<RevFeature>> objects; final AutoCloseableIterator<DiffEntry> closeableRefs = AutoCloseableIterator .fromIterator(refs); objects = getDiffObjects(refs, RevFeature.class); return new AutoCloseableIterator<DiffObjectInfo<RevFeature>>() { public @Override void close() { objects.close(); closeableRefs.close(); } public @Override boolean hasNext() { return objects.hasNext(); } public @Override DiffObjectInfo<RevFeature> next() { return objects.next(); } }; }
/** * Given a bunch of NodeRefs, create FeatureInfos for them. FeatureInfo contains the actual GIG * feature, and its metadata (i.e. FeatureTypeId + path (including name)) * * @param refs * @return */ public AutoCloseableIterator<ObjectInfo<RevFeature>> getGeoGIGFeatures(Iterator<NodeRef> refs) { AutoCloseableIterator<ObjectInfo<RevFeature>> objects; AutoCloseableIterator<NodeRef> closeableRefs = AutoCloseableIterator.fromIterator(refs); objects = odb.getObjects(closeableRefs, BulkOpListener.NOOP_LISTENER, RevFeature.class); return new AutoCloseableIterator<ObjectInfo<RevFeature>>() { @Override public void close() { objects.close(); closeableRefs.close(); } @Override public boolean hasNext() { return objects.hasNext(); } @Override public ObjectInfo<RevFeature> next() { return objects.next(); } }; }
/** * Given a bunch of NodeRefs, create FeatureInfos for them. FeatureInfo contains the actual GIG * feature, and its metadata (i.e. FeatureTypeId + path (including name)) * * @param refs * @return */ public AutoCloseableIterator<ObjectInfo<RevFeature>> getGeoGIGFeatures(Iterator<NodeRef> refs) { AutoCloseableIterator<ObjectInfo<RevFeature>> objects; AutoCloseableIterator<NodeRef> closeableRefs = AutoCloseableIterator.fromIterator(refs); objects = odb.getObjects(refs, BulkOpListener.NOOP_LISTENER, RevFeature.class); return new AutoCloseableIterator<ObjectInfo<RevFeature>>() { @Override public void close() { objects.close(); closeableRefs.close(); } @Override public boolean hasNext() { return objects.hasNext(); } @Override public ObjectInfo<RevFeature> next() { return objects.next(); } }; }
private AutoCloseableIterator<SimpleFeature> featureIterator(final Filter filter) throws IOException { FeatureReader<SimpleFeatureType, SimpleFeature> unchanged = getReader(filter); FeatureReaderIterator<SimpleFeature> iterator = new FeatureReaderIterator<SimpleFeature>( unchanged); AutoCloseableIterator<SimpleFeature> autocloseable = AutoCloseableIterator .fromIterator(iterator, (i) -> iterator.close()); return autocloseable; }
public @Override AutoCloseableIterator<IndexTreeMapping> resolveIndexedTrees(IndexInfo index) { Map<ObjectId, ObjectId> indexMappings = indexTreeMappings.get(index.getId()); if (indexMappings == null || indexMappings.isEmpty()) { return AutoCloseableIterator.emptyIterator(); } indexMappings = new HashMap<>(indexMappings); Iterator<IndexTreeMapping> iterator = indexMappings.entrySet().stream() .map(e -> new IndexTreeMapping(e.getKey(), e.getValue())).iterator(); return AutoCloseableIterator.fromIterator(iterator); } }
public @Override <T extends RevObject> AutoCloseableIterator<ObjectInfo<T>> getObjects( Iterator<NodeRef> refs, BulkOpListener listener, Class<T> type) { checkNotNull(refs, "refs is null"); checkNotNull(listener, "listener is null"); checkNotNull(type, "type is null"); checkState(isOpen(), "Database is closed"); Iterator<ObjectInfo<T>> it = new AbstractIterator<ObjectInfo<T>>() { @Override protected ObjectInfo<T> computeNext() { checkState(isOpen(), "Database is closed"); NodeRef ref; while ((ref = getNext(refs, null)) != null) { ObjectId id = ref.getObjectId(); RevObject obj = getIfPresent(id); if (obj == null || !type.isInstance(obj)) { listener.notFound(id); } else { listener.found(id, null); return ObjectInfo.of(ref, type.cast(obj)); } } return endOfData(); } }; return AutoCloseableIterator.fromIterator(it); }
public @Override <T extends RevObject> AutoCloseableIterator<ObjectInfo<T>> getObjects( Iterator<NodeRef> refs, BulkOpListener listener, Class<T> type) { checkNotNull(refs, "refs is null"); checkNotNull(listener, "listener is null"); checkNotNull(type, "type is null"); checkState(isOpen(), "Database is closed"); Iterator<ObjectInfo<T>> it = new AbstractIterator<ObjectInfo<T>>() { @Override protected ObjectInfo<T> computeNext() { checkState(isOpen(), "Database is closed"); NodeRef ref; while ((ref = getNext(refs, null)) != null) { ObjectId id = ref.getObjectId(); RevObject obj = getIfPresent(id); if (obj == null || !type.isInstance(obj)) { listener.notFound(id); } else { listener.found(id, null); return ObjectInfo.of(ref, type.cast(obj)); } } return endOfData(); } }; return AutoCloseableIterator.fromIterator(it); }
public @Override AutoCloseableIterator<IndexTreeMapping> resolveIndexedTrees(IndexInfo index) { final PGId pgIndexId = PGId.valueOf(index.getId()); final String sql = format("SELECT "// + "((treeid).h1), ((treeid).h2), ((treeid).h3), "// + "((indexTreeId).h1), ((indexTreeId).h2), ((indexTreeId).h3) FROM %s"// + " WHERE repository = ? AND ((indexId).h1) = ? AND indexId = CAST(ROW(?,?,?) AS OBJECTID)", config.getTables().indexMappings()); List<IndexTreeMapping> mappings = new ArrayList<>(); try (Connection cx = PGStorage.newConnection(dataSource)) { try (PreparedStatement ps = cx .prepareStatement(log(sql, log, repositoryId, pgIndexId))) { ps.setInt(1, repositoryId); ps.setInt(2, pgIndexId.hash1()); pgIndexId.setArgs(ps, 3); try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { ObjectId treeId = PGId.valueOf(rs, 1).toObjectId(); ObjectId indexedTreeId = PGId.valueOf(rs, 4).toObjectId(); mappings.add(new IndexTreeMapping(treeId, indexedTreeId)); } } } } catch (SQLException e) { throw new RuntimeException(e); } return AutoCloseableIterator.fromIterator(mappings.iterator()); }
public @Override AutoCloseableIterator<IndexTreeMapping> resolveIndexedTrees(IndexInfo index) { checkOpen(); List<IndexTreeMapping> mappings = new ArrayList<>(); final byte[] keyPrefix = computeIndexTreePrefixLookupKey(index.getId()); try (RocksDBReference dbRef = dbhandle.getReference()) { try (RocksIterator it = dbRef.db().newIterator(indexMappingsColumn)) { it.seek(keyPrefix); while (it.isValid() && prefixEquals(keyPrefix, it.key())) { ObjectId treeId = parseTreeIdFromKey(it.key()); ObjectId indexTreeId = ObjectId.create(it.value()); mappings.add(new IndexTreeMapping(treeId, indexTreeId)); it.next(); } } catch (Exception e) { Throwables.throwIfUnchecked(e); throw new RuntimeException(e); } } return AutoCloseableIterator.fromIterator(mappings.iterator()); }
AutoCloseableIterator.fromIterator(unconflictedBuffer.iterator()));
@Test public void testIterate() throws Exception { CoordinateReferenceSystem crs = pointsType.getCoordinateReferenceSystem(); SimpleFeatureType subType = DataUtilities.createSubType(pointsType, new String[] { "pp", "ip" }); NodeRef n1 = nodeRef((SimpleFeature) points1, "pp", "ip"); NodeRef n2 = nodeRef((SimpleFeature) points2, "pp", "ip"); NodeRef n3 = nodeRef((SimpleFeature) points3, "pp", "ip"); AutoCloseableIterator<NodeRef> nodes = AutoCloseableIterator .fromIterator(Lists.newArrayList(n1, n2, n3).iterator()); MaterializedIndexFeatureIterator iterator; iterator = MaterializedIndexFeatureIterator.create(subType, nodes, geometryFactory, crs); ArrayList<SimpleFeature> features = Lists.newArrayList(iterator); assertEquals(3, features.size()); assertFeature(subType, (SimpleFeature) points1, features.get(0)); assertFeature(subType, (SimpleFeature) points2, features.get(1)); assertFeature(subType, (SimpleFeature) points3, features.get(2)); }
@Test public void testIterate() throws Exception { CoordinateReferenceSystem crs = pointsType.getCoordinateReferenceSystem(); SimpleFeatureType subType = DataUtilities.createSubType(pointsType, new String[] { "pp", "ip" }); NodeRef n1 = nodeRef((SimpleFeature) points1, "pp", "ip"); NodeRef n2 = nodeRef((SimpleFeature) points2, "pp", "ip"); NodeRef n3 = nodeRef((SimpleFeature) points3, "pp", "ip"); AutoCloseableIterator<NodeRef> nodes = AutoCloseableIterator .fromIterator(Lists.newArrayList(n1, n2, n3).iterator()); MaterializedIndexFeatureIterator iterator; iterator = MaterializedIndexFeatureIterator.create(subType, nodes, geometryFactory, crs); ArrayList<SimpleFeature> features = Lists.newArrayList(iterator); assertEquals(3, features.size()); assertFeature(subType, (SimpleFeature) points1, features.get(0)); assertFeature(subType, (SimpleFeature) points2, features.get(1)); assertFeature(subType, (SimpleFeature) points3, features.get(2)); }
AutoCloseableIterator.fromIterator(unconflictedBuffer.iterator()));
@Test public void testFromIterator() { Iterator<String> original = Lists.newArrayList("item1", "item2").iterator(); try (AutoCloseableIterator<String> it = AutoCloseableIterator.fromIterator(original)) { assertTrue(it.hasNext()); assertEquals("item1", it.next()); assertEquals("item2", it.next()); assertFalse(it.hasNext()); } }
.fromIterator(objs.iterator());
.fromIterator(objs.iterator());
diffFeatures = AutoCloseableIterator.fromIterator(diffFeatures, (orig) -> { orig.close(); log.info("Pre filter stats: {}", diffWalkInfo.screenMapFilter.stats());