Index: Core/Components/src/Core.Components.Gis.IO/Importers/FeatureBasedMapDataImporter.cs =================================================================== diff -u -r36c6449038e383f66174db2c09a5bff079f758b2 -rbd7e4c048e8207de60e135b09882aedca976e702 --- Core/Components/src/Core.Components.Gis.IO/Importers/FeatureBasedMapDataImporter.cs (.../FeatureBasedMapDataImporter.cs) (revision 36c6449038e383f66174db2c09a5bff079f758b2) +++ Core/Components/src/Core.Components.Gis.IO/Importers/FeatureBasedMapDataImporter.cs (.../FeatureBasedMapDataImporter.cs) (revision bd7e4c048e8207de60e135b09882aedca976e702) @@ -21,13 +21,16 @@ using System; using System.IO; +using System.Linq; using Core.Common.Base.IO; using Core.Common.IO.Exceptions; using Core.Common.IO.Readers; using Core.Common.Utils.Builders; using Core.Components.Gis.Data; using Core.Components.Gis.IO.Properties; +using Core.Components.Gis.IO.Readers; using DotSpatial.Data; +using DotSpatial.Topology; using log4net; using ILog = log4net.ILog; @@ -64,18 +67,58 @@ HandleUserCancellingImport(); return false; } + + AddFeatureBasedMapDataToMapDataCollection(readResult.ImportedItems.First()); + return true; } + private void AddFeatureBasedMapDataToMapDataCollection(FeatureBasedMapData importedMapData) + { + ImportTarget.Add(importedMapData); + } + private ReadResult ReadFeatureBasedMapData() { try { + string shapeFileName = Path.GetFileNameWithoutExtension(FilePath); var featureSet = Shapefile.OpenFile(FilePath); + + FeatureBasedMapData importedData; - var readResult = new ReadResult(false); + switch (featureSet.FeatureType) + { + case FeatureType.Point: + case FeatureType.MultiPoint: + using (ShapeFileReaderBase reader = new PointShapeFileReader(FilePath)) + { + importedData = reader.ReadShapeFile(shapeFileName); + } + break; + case FeatureType.Line: + using (ShapeFileReaderBase reader = new PolylineShapeFileReader(FilePath)) + { + importedData = reader.ReadShapeFile(shapeFileName); + } + break; + case FeatureType.Polygon: + using (ShapeFileReaderBase reader = new PolygonShapeFileReader(FilePath)) + { + importedData = reader.ReadShapeFile(shapeFileName); + } + break; + default: + throw new CriticalFileReadException(Resources.FeatureBasedMapDataImporter_Import_ShapeFile_Contains_Unsupported_Data); + } - return readResult; + return new ReadResult(false) + { + ImportedItems = new[] + { + importedData + } + }; } catch (ArgumentException) { Index: Core/Components/src/Core.Components.Gis.IO/Properties/Resources.Designer.cs =================================================================== diff -u -r36c6449038e383f66174db2c09a5bff079f758b2 -rbd7e4c048e8207de60e135b09882aedca976e702 --- Core/Components/src/Core.Components.Gis.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 36c6449038e383f66174db2c09a5bff079f758b2) +++ Core/Components/src/Core.Components.Gis.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision bd7e4c048e8207de60e135b09882aedca976e702) @@ -123,9 +123,9 @@ /// /// Looks up a localized string similar to De data in het shapebestand wordt niet ondersteund.. /// - internal static string MapLegendView_CheckDataFormat_ShapeFile_Contains_Unsupported_Data { + internal static string FeatureBasedMapDataImporter_Import_ShapeFile_Contains_Unsupported_Data { get { - return ResourceManager.GetString("MapLegendView_CheckDataFormat_ShapeFile_Contains_Unsupported_Data", resourceCulture); + return ResourceManager.GetString("FeatureBasedMapDataImporter_Import_ShapeFile_Contains_Unsupported_Data", resourceCulture); } } Index: Core/Components/src/Core.Components.Gis.IO/Properties/Resources.resx =================================================================== diff -u -r36c6449038e383f66174db2c09a5bff079f758b2 -rbd7e4c048e8207de60e135b09882aedca976e702 --- Core/Components/src/Core.Components.Gis.IO/Properties/Resources.resx (.../Resources.resx) (revision 36c6449038e383f66174db2c09a5bff079f758b2) +++ Core/Components/src/Core.Components.Gis.IO/Properties/Resources.resx (.../Resources.resx) (revision bd7e4c048e8207de60e135b09882aedca976e702) @@ -154,7 +154,7 @@ Het bestand of andere benodigde bestanden zijn niet gevonden. - + De data in het shapebestand wordt niet ondersteund. \ No newline at end of file Index: Core/Components/test/Core.Components.Gis.IO.Test/Importers/FeatureBasedMapDataImporterTest.cs =================================================================== diff -u -r36c6449038e383f66174db2c09a5bff079f758b2 -rbd7e4c048e8207de60e135b09882aedca976e702 --- Core/Components/test/Core.Components.Gis.IO.Test/Importers/FeatureBasedMapDataImporterTest.cs (.../FeatureBasedMapDataImporterTest.cs) (revision 36c6449038e383f66174db2c09a5bff079f758b2) +++ Core/Components/test/Core.Components.Gis.IO.Test/Importers/FeatureBasedMapDataImporterTest.cs (.../FeatureBasedMapDataImporterTest.cs) (revision bd7e4c048e8207de60e135b09882aedca976e702) @@ -21,6 +21,7 @@ using System; using System.IO; +using System.Linq; using Core.Common.Base.IO; using Core.Common.TestUtil; using Core.Components.Gis.Data; @@ -125,5 +126,27 @@ Assert.IsFalse(importSuccesful); } } + + [Test] + [TestCase("Single_Point_with_ID.shp")] + [TestCase("Single_Polygon_with_ID.shp")] + [TestCase("Single_PolyLine_with_ID.shp")] + public void Import_ValidShapeFile_ImportDataOnMapDataCollection(string fileName) + { + // Setup + var path = TestHelper.GetTestDataPath(TestDataPath.Core.Components.Gis.IO, fileName); + var mapDataCollection = new MapDataCollection("test"); + var importer = new FeatureBasedMapDataImporter(mapDataCollection, path); + + // Precondition + CollectionAssert.IsEmpty(mapDataCollection.Collection); + + // Call + bool importSuccesful = importer.Import(); + + // Assert + Assert.IsTrue(importSuccesful); + Assert.AreEqual(1, mapDataCollection.Collection.Count()); + } } } \ No newline at end of file