/** * Executes the format-patch command with the specified options. */ @Override protected void runInternal(GeogigCLI cli) throws IOException { checkParameter(refSpec.size() < 3, "Commit list is too long :%s", refSpec); GeoGIG geogig = cli.getGeogig(); checkParameter(file != null, "Patch file not specified"); try (AutoCloseableIterator<DiffEntry> entries = buildEntries(cli)) { if (!entries.hasNext()) { cli.getConsole().println("No differences found"); return; } Patch patch = geogig.command(CreatePatchOp.class).setDiffs(entries).call(); FileOutputStream fos = new FileOutputStream(file); OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8"); PatchSerializer.write(out, patch); } }
final NodeRef oldObject = diffEntry.getOldObject(); if (diffEntry.changeType() == ChangeType.MODIFIED) { RevObject revObject = command(RevObjectParse.class) .setObjectId(diffEntry.newObjectId()).call().get(); if (revObject instanceof RevFeature) { FeatureDiff diff = command(DiffFeature.class) .setNewVersion(Suppliers.ofInstance(diffEntry.getNewObject())) .setOldVersion(Suppliers.ofInstance(diffEntry.getOldObject())).call(); patch.addModifiedFeature(diff); } else if (revObject instanceof RevTree) { RevFeatureType oldFeatureType = command(RevObjectParse.class) .setObjectId(diffEntry.getOldObject().getMetadataId()) .call(RevFeatureType.class).get(); RevFeatureType newFeatureType = command(RevObjectParse.class) .setObjectId(diffEntry.getNewObject().getMetadataId()) .call(RevFeatureType.class).get(); RevObject revObject = command(RevObjectParse.class) .setObjectId(diffEntry.newObjectId()).call().get(); if (revObject instanceof RevFeature) { featureType = featureTypes.get(newObject.getMetadataId()); } else { featureType = command(RevObjectParse.class) .setObjectId(newObject.getMetadataId()).call(RevFeatureType.class) .get(); ObjectId metadataId = diffEntry.getNewObject().getMetadataId(); if (!metadataId.isNull()) {
/** * Executes the format-patch command with the specified options. */ @Override protected void runInternal(GeogigCLI cli) throws IOException { checkParameter(refSpec.size() < 3, "Commit list is too long :%s", refSpec); GeoGIG geogig = cli.getGeogig(); checkParameter(file != null, "Patch file not specified"); try (AutoCloseableIterator<DiffEntry> entries = buildEntries(cli)) { if (!entries.hasNext()) { cli.getConsole().println("No differences found"); return; } Patch patch = geogig.command(CreatePatchOp.class).setDiffs(entries).call(); FileOutputStream fos = new FileOutputStream(file); OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8"); PatchSerializer.write(out, patch); } }
final NodeRef oldObject = diffEntry.getOldObject(); if (diffEntry.changeType() == ChangeType.MODIFIED) { RevObject revObject = command(RevObjectParse.class) .setObjectId(diffEntry.newObjectId()).call().get(); if (revObject instanceof RevFeature) { FeatureDiff diff = command(DiffFeature.class) .setNewVersion(Suppliers.ofInstance(diffEntry.getNewObject())) .setOldVersion(Suppliers.ofInstance(diffEntry.getOldObject())).call(); patch.addModifiedFeature(diff); } else if (revObject instanceof RevTree) { RevFeatureType oldFeatureType = command(RevObjectParse.class) .setObjectId(diffEntry.getOldObject().getMetadataId()) .call(RevFeatureType.class).get(); RevFeatureType newFeatureType = command(RevObjectParse.class) .setObjectId(diffEntry.getNewObject().getMetadataId()) .call(RevFeatureType.class).get(); RevObject revObject = command(RevObjectParse.class) .setObjectId(diffEntry.newObjectId()).call().get(); if (revObject instanceof RevFeature) { featureType = featureTypes.get(newObject.getMetadataId()); } else { featureType = command(RevObjectParse.class) .setObjectId(newObject.getMetadataId()).call(RevFeatureType.class) .get(); ObjectId metadataId = diffEntry.getNewObject().getMetadataId(); if (!metadataId.isNull()) {
/** * Executes the format-patch command with the specified options. */ @Override protected void runInternal(GeogigCLI cli) throws IOException { checkParameter(refSpec.size() < 3, "Commit list is too long :%s", refSpec); GeoGIG geogig = cli.getGeogig(); checkParameter(file != null, "Patch file not specified"); try (AutoCloseableIterator<DiffEntry> entries = buildEntries(cli)) { if (!entries.hasNext()) { cli.getConsole().println("No differences found"); return; } Patch patch = geogig.command(CreatePatchOp.class).setDiffs(entries).call(); FileOutputStream fos = new FileOutputStream(file); OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8"); PatchSerializer.write(out, patch); } }
@Test public void testCreatePatchAddNewFeatureToEmptyRepo() throws Exception { insert(points1); DiffOp op = geogig.command(DiffOp.class); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAddedFeatures().size()); } }
@Test public void testCreatePatchAddNewFeatureToEmptyRepo() throws Exception { insert(points1); DiffOp op = geogig.command(DiffOp.class); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAddedFeatures().size()); } }
@Test public void testCreatePatchAddNewEmptyPath() throws Exception { insert(points1); delete(points1); DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { // ArrayList<DiffEntry> list = Lists.newArrayList(diffs); Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); } }
@Test public void testCreatePatchAddNewEmptyPath() throws Exception { insert(points1); delete(points1); DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { // ArrayList<DiffEntry> list = Lists.newArrayList(diffs); Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); } }
@Test public void testCreatePatchWithNoChanges() throws Exception { insertAndAdd(points1, points2); geogig.command(CommitOp.class).setAll(true).call(); try (AutoCloseableIterator<DiffEntry> diffs = geogig.command(DiffOp.class).call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(0, patch.count()); } }
@Test public void testCreatePatchWithNoChanges() throws Exception { insertAndAdd(points1, points2); geogig.command(CommitOp.class).setAll(true).call(); try (AutoCloseableIterator<DiffEntry> diffs = geogig.command(DiffOp.class).call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(0, patch.count()); } }
@Test public void testCreatePatchAddNewEmptyFeatureTypeToEmptyRepo() throws Exception { WorkingTree workingTree = geogig.getRepository().workingTree(); workingTree.createTypeTree(linesName, linesType); DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); assertEquals(ObjectId.NULL, patch.getAlteredTrees().get(0).getOldFeatureType()); assertEquals(RevFeatureTypeBuilder.build(linesType).getId(), patch.getAlteredTrees().get(0).getNewFeatureType()); assertEquals(1, patch.getFeatureTypes().size()); } }
@Test public void testCreatePatchAddNewEmptyFeatureTypeToEmptyRepo() throws Exception { WorkingTree workingTree = geogig.getRepository().workingTree(); workingTree.createTypeTree(linesName, linesType); DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); assertEquals(ObjectId.NULL, patch.getAlteredTrees().get(0).getOldFeatureType()); assertEquals(RevFeatureType.builder().type(linesType).build().getId(), patch.getAlteredTrees().get(0).getNewFeatureType()); assertEquals(1, patch.getFeatureTypes().size()); } }
@Test public void testCreatePatchModifyFeatureType() throws Exception { DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); insertAndAdd(points1, points2); geogig.getRepository().workingTree().updateTypeTree(pointsName, modifiedPointsType); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); assertEquals(RevFeatureTypeBuilder.build(pointsType).getId(), patch.getAlteredTrees().get(0).getOldFeatureType()); assertEquals(RevFeatureTypeBuilder.build(modifiedPointsType).getId(), patch.getAlteredTrees().get(0).getNewFeatureType()); assertEquals(2, patch.getFeatureTypes().size()); } }
@Test public void testCreatePatchRemoveEmptyFeatureType() throws Exception { WorkingTree workingTree = geogig.getRepository().workingTree(); workingTree.createTypeTree(linesName, linesType); geogig.command(AddOp.class).setUpdateOnly(false).call(); workingTree.delete(linesName); DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); assertEquals(RevFeatureTypeBuilder.build(linesType).getId(), patch.getAlteredTrees().get(0).getOldFeatureType()); assertEquals(ObjectId.NULL, patch.getAlteredTrees().get(0).getNewFeatureType()); assertEquals(1, patch.getFeatureTypes().size()); } }
@Test public void testCreatePatchRemoveEmptyFeatureType() throws Exception { WorkingTree workingTree = geogig.getRepository().workingTree(); workingTree.createTypeTree(linesName, linesType); geogig.command(AddOp.class).setUpdateOnly(false).call(); workingTree.delete(linesName); DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); assertEquals(RevFeatureType.builder().type(linesType).build().getId(), patch.getAlteredTrees().get(0).getOldFeatureType()); assertEquals(ObjectId.NULL, patch.getAlteredTrees().get(0).getNewFeatureType()); assertEquals(1, patch.getFeatureTypes().size()); } }
@Test public void testCreatePatchModifyFeatureType() throws Exception { DiffOp op = geogig.command(DiffOp.class).setReportTrees(true); insertAndAdd(points1, points2); geogig.getRepository().workingTree().updateTypeTree(pointsName, modifiedPointsType); try (AutoCloseableIterator<DiffEntry> diffs = op.call()) { Patch patch = geogig.command(CreatePatchOp.class).setDiffs(diffs).call(); assertEquals(1, patch.getAlteredTrees().size()); assertEquals(RevFeatureType.builder().type(pointsType).build().getId(), patch.getAlteredTrees().get(0).getOldFeatureType()); assertEquals(RevFeatureType.builder().type(modifiedPointsType).build().getId(), patch.getAlteredTrees().get(0).getNewFeatureType()); assertEquals(2, patch.getFeatureTypes().size()); } }
@Test public void testCreatePatch() 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), "POINT (2 2)"); insert(modifiedFeature); insert(points3); delete(points2); try (AutoCloseableIterator<DiffEntry> diffs = geogig.command(DiffOp.class).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()); } }
@Test public void testCreatePatch() 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), "POINT (2 2)"); insert(modifiedFeature); insert(points3); delete(points2); try (AutoCloseableIterator<DiffEntry> diffs = geogig.command(DiffOp.class).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()); } }