@Override public FeatureInfo read(DataInputStream in) throws IOException { String path = in.readUTF(); ObjectId featureTypeId = OID.read(in); RevFeature feature = (RevFeature) DataStreamSerializationFactoryV2.INSTANCE.read(in); return FeatureInfo.insert(feature, featureTypeId, path); }
@Override public void write(DataOutputStream out, FeatureInfo value) throws IOException { String path = value.getPath(); ObjectId featureTypeId = value.getFeatureTypeId(); RevFeature feature = value.getFeature(); out.writeUTF(path); MergeStatusBuilder.OID.write(out, featureTypeId); DataStreamRevObjectSerializerV2.INSTANCE.write(feature, out); }
final AtomicLong p = new AtomicLong(); Function<FeatureInfo, RevFeature> treeBuildingTransformer = (fi) -> { final String parentPath = NodeRef.parentPath(fi.getPath()); final String fid = NodeRef.nodeFromPath(fi.getPath()); @Nullable ObjectId metadataId = fi.getFeatureTypeId(); CanonicalTreeBuilder parentBuilder = getTreeBuilder(currentTrees, parentBuilders, parentPath, metadataId); if (fi.isDelete()) { if (parentBuilder != null) { parentBuilder.remove(fid); RevFeature feature = fi.getFeature(); NodeRef parentRef = currentTrees.get(parentPath); Preconditions.checkNotNull(parentRef); if (fi.getFeatureTypeId().equals(parentRef.getMetadataId())) {
String parentPath = ft.getName().getLocalPart(); String path = NodeRef.appendChild(parentPath, f.getIdentifier().getID()); FeatureInfo fi = FeatureInfo.insert(RevFeatureBuilder.build(f), rft.getId(), path); workTree.insert(fi); ObjectId objectId = fi.getFeature().getId(); ids.add(objectId);
FeatureInfo info = FeatureInfo.insert(testFeature, oid1, "Points/1"); assertEquals(testFeature, info.getFeature()); assertEquals(oid1, info.getFeatureTypeId()); assertEquals("Points/1", info.getPath());
@Test public void testInsertCollectionNullCollectionSize() throws Exception { List<Feature> featureList = new LinkedList<Feature>(); featureList.add(points1); featureList.add(points2); featureList.add(points3); List<FeatureInfo> targetList = insert(featureList); assertEquals(3, targetList.size()); FeatureInfo ref1 = targetList.get(0); FeatureInfo ref2 = targetList.get(1); FeatureInfo ref3 = targetList.get(2); assertEquals(ref1.getFeature().getId(), workTree.findUnstaged(appendChild(pointsName, idP1)).get().getObjectId()); assertEquals(ref2.getFeature().getId(), workTree.findUnstaged(appendChild(pointsName, idP2)).get().getObjectId()); assertEquals(ref3.getFeature().getId(), workTree.findUnstaged(appendChild(pointsName, idP3)).get().getObjectId()); }
@Test public void testIdenticalFeatureData() { ObjectDatabase odb = mock(ObjectDatabase.class); RevFeature f1 = mock(RevFeature.class); when(f1.getId()).thenReturn(getOID(1)); when(odb.getAll(anyObject(), anyObject(), anyObject())) .thenReturn((Arrays.asList((RevObject) f1 )).iterator()); BulkObjectDatabaseFeatureRetriever bulk = new BulkObjectDatabaseFeatureRetriever(odb); ObjectId metadataid = getOID(4); Node n1 = Node.create("name1", getOID(1), metadataid, TYPE.FEATURE, new Envelope()); NodeRef nr1 = new NodeRef(n1, "testcase", metadataid); Node n2 = Node.create("name2", getOID(1), metadataid, TYPE.FEATURE, new Envelope()); NodeRef nr2 = new NodeRef(n2, "testcase", metadataid); Iterator<FeatureInfo> it = bulk.apply(Arrays.asList(nr1, nr2)); List<FeatureInfo> feats = Lists.newArrayList(it); Assert.isTrue(feats.size() == 2); Assert.isTrue(feats.get(0).getFeatureTypeId() == metadataid); Assert.isTrue(feats.get(0).getName() .equals("name1")); Assert.equals(feats.get(0).getFeature().getId(), getOID(1)); Assert.isTrue(feats.get(1).getFeatureTypeId() == metadataid); Assert.isTrue(feats.get(1).getName() .equals( "name2")); Assert.equals(feats.get(1).getFeature().getId(), getOID(1)); }
public List<FeatureInfo> insert(List<Feature> features) { Map<FeatureType, RevFeatureType> types = new HashMap<>(); List<FeatureInfo> rfIds = new ArrayList<>(); List<FeatureInfo> infos = Lists.transform(features, (f) -> { final String path = NodeRef.appendChild(f.getType().getName().getLocalPart(), f.getIdentifier().getID()); FeatureInfo fi; if (f instanceof FeatureToDelete) { fi = FeatureInfo.delete(path); } else { RevFeatureType rft = types.get(f.getType()); if (rft == null) { rft = RevFeatureTypeBuilder.build(f.getType()); repo.objectDatabase().put(rft); types.put(f.getType(), rft); } fi = FeatureInfo.insert(RevFeatureBuilder.build(f), rft.getId(), path); rfIds.add(fi); } return fi; }); repo.workingTree().insert(infos.iterator(), DefaultProgressListener.NULL); return rfIds; }
public String getName() { return NodeRef.nodeFromPath(getPath()); }
String parentPath = ft.getName().getLocalPart(); String path = NodeRef.appendChild(parentPath, f.getIdentifier().getID()); FeatureInfo fi = FeatureInfo.insert(RevFeatureBuilder.build(f), rft.getId(), path); workTree.insert(fi); ObjectId objectId = fi.getFeature().getId(); ids.add(objectId);
@Test public void testInsertCollection() throws Exception { List<Feature> featureList = new LinkedList<Feature>(); featureList.add(points1); featureList.add(points2); featureList.add(points3); List<FeatureInfo> targetList = insert(featureList); assertEquals(3, targetList.size()); FeatureInfo ref1 = targetList.get(0); FeatureInfo ref2 = targetList.get(1); FeatureInfo ref3 = targetList.get(2); assertEquals(ref1.getFeature().getId(), workTree.findUnstaged(appendChild(pointsName, idP1)).get().getObjectId()); assertEquals(ref2.getFeature().getId(), workTree.findUnstaged(appendChild(pointsName, idP2)).get().getObjectId()); assertEquals(ref3.getFeature().getId(), workTree.findUnstaged(appendChild(pointsName, idP3)).get().getObjectId()); }
final AtomicLong p = new AtomicLong(); Function<FeatureInfo, RevFeature> treeBuildingTransformer = fi -> { final String parentPath = NodeRef.parentPath(fi.getPath()); final String fid = NodeRef.nodeFromPath(fi.getPath()); @Nullable ObjectId metadataId = fi.getFeatureTypeId(); RevTreeBuilder parentBuilder = getTreeBuilder(currentTrees, parentBuilders, parentPath, metadataId); if (fi.isDelete()) { if (parentBuilder != null) { parentBuilder.remove(RevObjectFactory.defaultInstance().createNode(fid, RevFeature feature = fi.getFeature(); NodeRef parentRef = currentTrees.get(parentPath); Preconditions.checkNotNull(parentRef); if (fi.getFeatureTypeId().equals(parentRef.getMetadataId())) {
/** * this is a simple test that puts 2 features in the objectDatabase then retrieves them. It * checks the correlation is correct. */ @Test public void testBulkGet() { ObjectDatabase odb = mock(ObjectDatabase.class); RevFeature f1 = mock(RevFeature.class); when(f1.getId()).thenReturn(getOID(1)); RevFeature f2 = mock(RevFeature.class); when(f2.getId()).thenReturn(getOID(2)); when(odb.getAll(anyObject(), anyObject(), anyObject())) .thenReturn((Arrays.asList((RevObject) f1, (RevObject) f2)).iterator()); BulkObjectDatabaseFeatureRetriever bulk = new BulkObjectDatabaseFeatureRetriever(odb); ObjectId metadataid = getOID(4); Node n1 = Node.create("name1", getOID(1), metadataid, TYPE.FEATURE, new Envelope()); NodeRef nr1 = new NodeRef(n1, "testcase", metadataid); Node n2 = Node.create("name2", getOID(2), metadataid, TYPE.FEATURE, new Envelope()); NodeRef nr2 = new NodeRef(n2, "testcase", metadataid); Iterator<FeatureInfo> it = bulk.apply(Arrays.asList(nr1, nr2)); List<FeatureInfo> feats = Arrays.asList(it.next(), it.next()); Assert.isTrue(feats.get(0).getFeatureTypeId() == metadataid); Assert.isTrue(feats.get(0).getName() .equals("name1")); Assert.equals(feats.get(0).getFeature().getId(), getOID(1)); Assert.isTrue(feats.get(1).getFeatureTypeId() == metadataid); Assert.isTrue(feats.get(1).getName() .equals( "name2")); Assert.equals(feats.get(1).getFeature().getId(), getOID(2)); }
public List<FeatureInfo> insert(List<Feature> features) { Map<FeatureType, RevFeatureType> types = new HashMap<>(); List<FeatureInfo> rfIds = new ArrayList<>(); List<FeatureInfo> infos = Lists.transform(features, (f) -> { final String path = NodeRef.appendChild(f.getType().getName().getLocalPart(), f.getIdentifier().getID()); FeatureInfo fi; if (f instanceof FeatureToDelete) { fi = FeatureInfo.delete(path); } else { RevFeatureType rft = types.get(f.getType()); if (rft == null) { rft = RevFeatureType.builder().type(f.getType()).build(); repo.objectDatabase().put(rft); types.put(f.getType(), rft); } fi = FeatureInfo.insert(RevFeature.builder().build(f), rft.getId(), path); rfIds.add(fi); } return fi; }); repo.workingTree().insert(infos.iterator(), DefaultProgressListener.NULL); return rfIds; }
public String getName() { return NodeRef.nodeFromPath(getPath()); }
/** * Adds a feature to the list of newly added ones * * @param path the path of the added feature * @param feature the feature * @param featureType the feature type of the added feature */ public void addAddedFeature(String path, RevFeature feature, RevFeatureType featureType) { addedFeatures.add(FeatureInfo.insert(feature, featureType.getId(), path)); addFeatureType(featureType); }
@Override public void write(DataOutputStream out, FeatureInfo value) throws IOException { String path = value.getPath(); ObjectId featureTypeId = value.getFeatureTypeId(); RevFeature feature = value.getFeature(); out.writeUTF(path); OID.write(out, featureTypeId); DataStreamSerializationFactoryV2.INSTANCE.write(feature, out); }
String parentPath = ft.getName().getLocalPart(); String path = NodeRef.appendChild(parentPath, f.getIdentifier().getID()); FeatureInfo fi = FeatureInfo.insert(RevFeature.builder().build(f), rft.getId(), path); workTree.insert(fi); ObjectId objectId = fi.getFeature().getId(); ids.add(objectId);