/** * Returns an array with the features that are staged and ready to be commited. If noDeletions * is true, it doesn't include features to be removed, only those ones to be added or modified, * so it can be used to check the new data that will get commited into the repository * * @return */ public Feature[] getFeaturesToCommit(String path, boolean noDeletions) { DiffOp diffOp = repository.command(DiffOp.class); diffOp.setCompareIndex(true); diffOp.setFilter(path); List<Feature> list = Lists.newArrayList(); try (AutoCloseableIterator<DiffEntry> diffs = diffOp.call()) { while (diffs.hasNext()) { DiffEntry diff = diffs.next(); if (!diff.changeType().equals(ChangeType.REMOVED) || !noDeletions) { RevFeature revFeature = repository.command(RevObjectParse.class) .setObjectId(diff.newObjectId()).call(RevFeature.class).get(); RevFeatureType revFeatureType = repository.command(RevObjectParse.class) .setObjectId(diff.getNewObject().getMetadataId()) .call(RevFeatureType.class).get(); FeatureBuilder builder = new FeatureBuilder(revFeatureType); list.add(builder.build(diff.getNewObject().name(), revFeature)); } } } return list.toArray(new Feature[0]); }
private AutoCloseableIterator<DiffEntry> buildEntries(GeogigCLI cli, String oldVersion, String newVersion) { DiffOp diff = cli.getGeogig().command(DiffOp.class); diff.setOldVersion(oldVersion).setNewVersion(newVersion).setCompareIndex(cached); AutoCloseableIterator<DiffEntry> entries; if (paths.isEmpty()) { entries = diff.setProgressListener(cli.getProgressListener()).call(); } else { entries = AutoCloseableIterator.emptyIterator(); for (String path : paths) { AutoCloseableIterator<DiffEntry> moreEntries = diff.setFilter(path) .setProgressListener(cli.getProgressListener()).call(); entries = AutoCloseableIterator.concat(entries, moreEntries); } } return entries; }
private AutoCloseableIterator<DiffEntry> buildEntries(GeogigCLI cli, String oldVersion, String newVersion) { DiffOp diff = cli.getGeogig().command(DiffOp.class); diff.setOldVersion(oldVersion).setNewVersion(newVersion).setCompareIndex(cached); AutoCloseableIterator<DiffEntry> entries; if (paths.isEmpty()) { entries = diff.setProgressListener(cli.getProgressListener()).call(); } else { entries = AutoCloseableIterator.emptyIterator(); for (String path : paths) { AutoCloseableIterator<DiffEntry> moreEntries = diff.setFilter(path) .setProgressListener(cli.getProgressListener()).call(); entries = AutoCloseableIterator.concat(entries, moreEntries); } } return entries; }
private AutoCloseableIterator<DiffEntry> buildEntries(GeogigCLI cli, String oldVersion, String newVersion) { DiffOp diff = cli.getGeogig().command(DiffOp.class); diff.setOldVersion(oldVersion).setNewVersion(newVersion).setCompareIndex(cached); AutoCloseableIterator<DiffEntry> entries; if (paths.isEmpty()) { entries = diff.setProgressListener(cli.getProgressListener()).call(); } else { entries = AutoCloseableIterator.emptyIterator(); for (String path : paths) { AutoCloseableIterator<DiffEntry> moreEntries = diff.setFilter(path) .setProgressListener(cli.getProgressListener()).call(); entries = AutoCloseableIterator.concat(entries, moreEntries); } } return entries; }
private AutoCloseableIterator<DiffEntry> buildEntries(GeogigCLI cli) { DiffOp diff = cli.getGeogig().command(DiffOp.class).setReportTrees(true); String oldVersion = resolveOldVersion(); String newVersion = resolveNewVersion(); diff.setOldVersion(oldVersion).setNewVersion(newVersion).setCompareIndex(cached); AutoCloseableIterator<DiffEntry> entries; if (paths.isEmpty()) { entries = diff.setProgressListener(cli.getProgressListener()).call(); } else { entries = AutoCloseableIterator.emptyIterator(); for (String path : paths) { AutoCloseableIterator<DiffEntry> moreEntries = diff.setFilter(path) .setProgressListener(cli.getProgressListener()).call(); entries = AutoCloseableIterator.concat(entries, moreEntries); } } return entries; }
private AutoCloseableIterator<DiffEntry> buildEntries(GeogigCLI cli) { DiffOp diff = cli.getGeogig().command(DiffOp.class).setReportTrees(true); String oldVersion = resolveOldVersion(); String newVersion = resolveNewVersion(); diff.setOldVersion(oldVersion).setNewVersion(newVersion).setCompareIndex(cached); AutoCloseableIterator<DiffEntry> entries; if (paths.isEmpty()) { entries = diff.setProgressListener(cli.getProgressListener()).call(); } else { entries = AutoCloseableIterator.emptyIterator(); for (String path : paths) { AutoCloseableIterator<DiffEntry> moreEntries = diff.setFilter(path) .setProgressListener(cli.getProgressListener()).call(); entries = AutoCloseableIterator.concat(entries, moreEntries); } } return entries; }
private AutoCloseableIterator<DiffEntry> buildEntries(GeogigCLI cli) { DiffOp diff = cli.getGeogig().command(DiffOp.class).setReportTrees(true); String oldVersion = resolveOldVersion(); String newVersion = resolveNewVersion(); diff.setOldVersion(oldVersion).setNewVersion(newVersion).setCompareIndex(cached); AutoCloseableIterator<DiffEntry> entries; if (paths.isEmpty()) { entries = diff.setProgressListener(cli.getProgressListener()).call(); } else { entries = AutoCloseableIterator.emptyIterator(); for (String path : paths) { AutoCloseableIterator<DiffEntry> moreEntries = diff.setFilter(path) .setProgressListener(cli.getProgressListener()).call(); entries = AutoCloseableIterator.concat(entries, moreEntries); } } return entries; }
@Test public void testCreatePatchUsingIndex() throws Exception { insertAndAdd(points1, points2); geogig.command(CommitOp.class).setAll(true).call(); final String featureId = points1.getIdentifier().getID(); final Feature modifiedFeature = feature((SimpleFeatureType) points1.getType(), featureId, "changedProp", new Integer(1500), null); insertAndAdd(modifiedFeature); insertAndAdd(points3); deleteAndAdd(points2); delete(points3); DiffOp op = geogig.command(DiffOp.class); op.setCompareIndex(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(3, patch.count()); assertEquals(1, patch.getAddedFeatures().size()); assertEquals(1, patch.getRemovedFeatures().size()); assertEquals(1, patch.getModifiedFeatures().size()); assertEquals(RevFeatureType.builder().type(pointsType).build(), patch.getFeatureTypes().get(0)); assertEquals(NodeRef.appendChild(pointsName, idP2), patch.getRemovedFeatures().get(0).getPath()); assertEquals(NodeRef.appendChild(pointsName, idP3), patch.getAddedFeatures().get(0).getPath()); } }
@Test public void testCreatePatchUsingIndex() throws Exception { insertAndAdd(points1, points2); geogig.command(CommitOp.class).setAll(true).call(); final String featureId = points1.getIdentifier().getID(); final Feature modifiedFeature = feature((SimpleFeatureType) points1.getType(), featureId, "changedProp", new Integer(1500), null); insertAndAdd(modifiedFeature); insertAndAdd(points3); deleteAndAdd(points2); delete(points3); DiffOp op = geogig.command(DiffOp.class); op.setCompareIndex(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(3, patch.count()); assertEquals(1, patch.getAddedFeatures().size()); assertEquals(1, patch.getRemovedFeatures().size()); assertEquals(1, patch.getModifiedFeatures().size()); assertEquals(RevFeatureTypeBuilder.build(pointsType), patch.getFeatureTypes().get(0)); assertEquals(NodeRef.appendChild(pointsName, idP2), patch.getRemovedFeatures().get(0).getPath()); assertEquals(NodeRef.appendChild(pointsName, idP3), patch.getAddedFeatures().get(0).getPath()); } }