private ImportOp getImportOp(DataStore dataStore) { final ImportOp importOp = context.command(ImportOp.class); return importOp.setDataStore(dataStore).setTable(table).setAll(all).setOverwrite(!add) .setAdaptToDefaultFeatureType(!forceFeatureType).setAlter(alter) .setDestinationPath(dest).setFidAttribute(fidAttribute); }
@Test public void testEmptyTableAndAll() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setTable(""); importOp.setAll(true); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.call(); }
@Test public void testDeleteException() throws Exception { WorkingTree workTree = mock(WorkingTree.class); Context cmdl = mock(Context.class); when(cmdl.workingTree()).thenReturn(workTree); doThrow(new RuntimeException("Exception")).when(workTree).delete(any(String.class)); ImportOp importOp = new ImportOp(); importOp.setContext(cmdl); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setAll(true); exception.expect(GeoToolsOpException.class); importOp.call(); }
cli.getConsole().println("Importing from shapefile " + shp); ImportOp command = cli.getGeogig().command(ImportOp.class).setAll(true) .setTable(null).setAlter(alter).setOverwrite(!add) .setDestinationPath(destTable).setDataStore(dataStore) .setFidAttribute(fidAttribute) .setAdaptToDefaultFeatureType(!forceFeatureType) .setCreateSchemaOnly(onlyCreate).setFilter(filter); command.setUsePaging(false); command.setProgressListener(progressListener).call();
@Test public void testImportWithFid() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setTable("table3"); importOp.setDestinationPath("table3"); importOp.setFidAttribute("number"); importOp.call(); Optional<RevFeature> feature = geogig.command(RevObjectParse.class) .setRefSpec("WORK_HEAD:table3/1000").call(RevFeature.class); assertTrue(feature.isPresent()); }
@Test public void testImportAllWithDifferentFeatureTypesAndDestPath() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setAll(true); importOp.setDestinationPath("dest"); importOp.setAdaptToDefaultFeatureType(false); importOp.call(); Iterator<NodeRef> features = geogig.command(LsTreeOp.class) .setStrategy(Strategy.DEPTHFIRST_ONLY_FEATURES).call(); ArrayList<NodeRef> list = Lists.newArrayList(features); assertEquals(4, list.size()); TreeSet<ObjectId> set = Sets.newTreeSet(); for (NodeRef node : list) { set.add(node.getMetadataId()); } assertEquals(4, set.size()); for (ObjectId metadataId : set) { Optional<RevFeatureType> ft = geogig.command(RevObjectParse.class) .setObjectId(metadataId).call(RevFeatureType.class); assertTrue(ft.isPresent()); assertEquals("dest", ft.get().getName().getLocalPart()); } }
@Test public void testAddUsingOriginalFeatureType() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setTable("table1"); importOp.call(); importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setTable("table2"); importOp.setAdaptToDefaultFeatureType(false); importOp.setDestinationPath("table1"); importOp.setOverwrite(false); importOp.call(); Iterator<NodeRef> features = geogig.command(LsTreeOp.class) .setStrategy(Strategy.DEPTHFIRST_ONLY_FEATURES).call(); ArrayList<NodeRef> list = Lists.newArrayList(features); assertEquals(3, list.size()); TreeSet<ObjectId> set = Sets.newTreeSet(); for (NodeRef node : list) { set.add(node.getMetadataId()); } assertEquals(2, set.size()); }
@Test public void testImportWithOverriddenGeomNameAlredyInUse() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setTable("table1"); importOp.setGeometryNameOverride("label"); try { importOp.call(); fail("Should throw exception complaining of parameter name already in use"); } catch (IllegalArgumentException e) { assertTrue(e.getMessage().startsWith("The provided geom name is already in use")); } }
@Test public void testNullTableNotAll() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore( TestHelper.createEmptyTestFactory().createDataStore(ImmutableMap.of())); importOp.setAll(false); exception.expect(GeoToolsOpException.class); importOp.call(); }
@Test public void testForcedKnownCrsIdentifierNoMatch() throws Exception { // there's no matching EPSG code for the following CRS (changed WGS_1984 to WGS_1985) String noEPSGMatchWKT = "GEOGCS[\"GCS_WGS_1985\",DATUM[\"D_WGS_1985\",SPHEROID[\"WGS_1985\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]"; CoordinateReferenceSystem origCrs = CRS.parseWKT(noEPSGMatchWKT); String typeName = "noCrsMatchType"; SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder(); builder.setCRS(origCrs); builder.add("geom", Point.class); builder.setName(typeName); SimpleFeatureType type = builder.buildFeatureType(); MemoryDataStore dataStore = new MemoryDataStore(); dataStore.createSchema(type); ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(dataStore); importOp.setTable(typeName); importOp.call(); Optional<RevFeatureType> typeRef = geogig.command(ResolveFeatureType.class) .setRefSpec("WORK_HEAD:" + typeName).call(); assertTrue(typeRef.isPresent()); Optional<RevFeatureType> revType = geogig.command(RevObjectParse.class) .setRefSpec(typeRef.get().getId().toString()).call(RevFeatureType.class); assertTrue(revType.isPresent()); FeatureType storedType = revType.get().type(); CoordinateReferenceSystem storedCrs = storedType.getGeometryDescriptor() .getCoordinateReferenceSystem(); assertEquals(origCrs, storedCrs); }
try (Connection connection = dataSource.getConnection()) { try (GeopkgGeogigMetadata metadata = new GeopkgGeogigMetadata(connection)) { importOp.setForwardingFeatureIteratorProvider( getFeatureIteratorTransformer(metadata)); importOp.setProgressListener(getProgressListener()); importOp.call();
@Override protected RevCommit callInternal() { final DataStore dataStore = dataStoreSupplier.get(); RevCommit revCommit; /** * Import needs to: 1) Import the data 2) Add changes to be staged 3) Commit staged changes */ try { // import data into the repository final ImportOp importOp = getImportOp(dataStore); importOp.setProgressListener(getProgressListener()); importOp.call(); // add the imported data to the staging area callAdd(); // commit the staged changes revCommit = callCommit(); } finally { dataStore.dispose(); dataStoreSupplier.cleanupResources(); } return revCommit; }
cli.getConsole().println("Importing from shapefile " + shp); ImportOp command = cli.getGeogig().command(ImportOp.class).setAll(true) .setTable(null).setAlter(alter).setOverwrite(!add) .setDestinationPath(destTable).setDataStore(dataStore) .setFidAttribute(fidAttribute) .setAdaptToDefaultFeatureType(!forceFeatureType) .setCreateSchemaOnly(onlyCreate).setFilter(filter); command.setUsePaging(false); command.setProgressListener(progressListener).call();
@Test public void testImportWithFid() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setTable("table3"); importOp.setDestinationPath("table3"); importOp.setFidAttribute("number"); importOp.call(); Optional<RevFeature> feature = geogig.command(RevObjectParse.class) .setRefSpec("WORK_HEAD:table3/1000").call(RevFeature.class); assertTrue(feature.isPresent()); }
@Test public void testImportAllWithDifferentFeatureTypesAndDestPath() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setAll(true); importOp.setDestinationPath("dest"); importOp.setAdaptToDefaultFeatureType(false); importOp.call(); Iterator<NodeRef> features = geogig.command(LsTreeOp.class) .setStrategy(Strategy.DEPTHFIRST_ONLY_FEATURES).call(); ArrayList<NodeRef> list = Lists.newArrayList(features); assertEquals(4, list.size()); TreeSet<ObjectId> set = Sets.newTreeSet(); for (NodeRef node : list) { set.add(node.getMetadataId()); } assertEquals(4, set.size()); for (ObjectId metadataId : set) { Optional<RevFeatureType> ft = geogig.command(RevObjectParse.class) .setObjectId(metadataId).call(RevFeatureType.class); assertTrue(ft.isPresent()); assertEquals("dest", ft.get().getName().getLocalPart()); } }
@Test public void testAddUsingOriginalFeatureType() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setTable("table1"); importOp.call(); importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setTable("table2"); importOp.setAdaptToDefaultFeatureType(false); importOp.setDestinationPath("table1"); importOp.setOverwrite(false); importOp.call(); Iterator<NodeRef> features = geogig.command(LsTreeOp.class) .setStrategy(Strategy.DEPTHFIRST_ONLY_FEATURES).call(); ArrayList<NodeRef> list = Lists.newArrayList(features); assertEquals(3, list.size()); TreeSet<ObjectId> set = Sets.newTreeSet(); for (NodeRef node : list) { set.add(node.getMetadataId()); } assertEquals(2, set.size()); }
@Test public void testImportWithOverriddenGeomNameAlredyInUse() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(TestHelper.createTestFactory().createDataStore(ImmutableMap.of())); importOp.setTable("table1"); importOp.setGeometryNameOverride("label"); try { importOp.call(); fail("Should throw exception complaining of parameter name already in use"); } catch (IllegalArgumentException e) { assertTrue(e.getMessage().startsWith("The provided geom name is already in use")); } }
@Test public void testNoFeaturesFound() throws Exception { ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore( TestHelper.createEmptyTestFactory().createDataStore(ImmutableMap.of())); importOp.setAll(true); exception.expect(GeoToolsOpException.class); importOp.call(); }
@Test public void testForcedKnownCrsIdentifierNoMatch() throws Exception { // there's no matching EPSG code for the following CRS (changed WGS_1984 to WGS_1985) String noEPSGMatchWKT = "GEOGCS[\"GCS_WGS_1985\",DATUM[\"D_WGS_1985\",SPHEROID[\"WGS_1985\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]"; CoordinateReferenceSystem origCrs = CRS.parseWKT(noEPSGMatchWKT); String typeName = "noCrsMatchType"; SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder(); builder.setCRS(origCrs); builder.add("geom", Point.class); builder.setName(typeName); SimpleFeatureType type = builder.buildFeatureType(); MemoryDataStore dataStore = new MemoryDataStore(); dataStore.createSchema(type); ImportOp importOp = geogig.command(ImportOp.class); importOp.setDataStore(dataStore); importOp.setTable(typeName); importOp.call(); Optional<RevFeatureType> typeRef = geogig.command(ResolveFeatureType.class) .setRefSpec("WORK_HEAD:" + typeName).call(); assertTrue(typeRef.isPresent()); Optional<RevFeatureType> revType = geogig.command(RevObjectParse.class) .setRefSpec(typeRef.get().getId().toString()).call(RevFeatureType.class); assertTrue(revType.isPresent()); FeatureType storedType = revType.get().type(); CoordinateReferenceSystem storedCrs = storedType.getGeometryDescriptor() .getCoordinateReferenceSystem(); assertEquals(origCrs, storedCrs); }