private static KmlToTablesDataLoaderParams CreateEmptyData(string fileName) { var name = Path.GetFileNameWithoutExtension(fileName); var dataLoaderParams = new KmlToTablesDataLoaderParams(); dataLoaderParams.TableMetadataEntity = new TableMetadataEntity { EntitySet = name, Name = name, Source = name, Category = name, ReleasedDate = DateTime.Now, ExpiredDate = DateTime.Now.AddDays(1), LastUpdateDate = DateTime.Now }; dataLoaderParams.ProducerParams = new EntityProducerParams { PlacemarkParams = new PlacemarkParams(), PropertyToTypeMap = new PropertyToTypeMapper() }; dataLoaderParams.ProcessorParams = new TableProcessorParams { PartitionKeyPropertyName = DataLoaderConstants.ValueUniqueAutoGenInitCaps, RowKeyPropertyName = DataLoaderConstants.ValueUniqueAutoGenInitCaps, TableMetadataPartitionKeyPropertyName = "Name", TableMetadataRowKeyPropertyName = DataLoaderConstants.ValueUniqueAutoGenInitCaps, TableColumnsMetadataPartitionKeyPropertyName = DataLoaderConstants.PropNameEntitySet, TableColumnsMetadataRowKeyPropertyName = "Column", EntityMetadataPartitionKeyPropertyName = DataLoaderConstants.PropNameEntitySet, EntityMetadataRowKeyPropertyName = DataLoaderConstants.PropNameEntityKind }; dataLoaderParams.TableColumnsMetadata = new TableColumnsMetadata { PropertyToTypeColumnsMetadata = new PropertyToTypeColumnsMetadataMapper() }; using (var kmlFile = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { const string mapToString = "string"; const string mapToDouble = "double"; const string nameAttribute = "name"; var kmlDocument = XDocument.Load(kmlFile); if (kmlDocument != null) { XNamespace kmlNamespace = kmlDocument.Root.Attributes("xmlns").First().Value; PropertyToTypeMapper propertyTypeMapper = dataLoaderParams.ProducerParams.PropertyToTypeMap; var firstPlacemarkInKmlFile = kmlDocument.Descendants(kmlNamespace + DataLoaderConstants.ElemNamePlacemark).First(); if (!firstPlacemarkInKmlFile.IsEmpty) { propertyTypeMapper.Add(DataLoaderConstants.ElemNameName, mapToString); propertyTypeMapper.Add(DataLoaderConstants.ElemNameDescription, mapToString); #region RDF string defaultDescription = DefaultDescription(); string rdfNamespace = "ogdi=\"ogdiUrl\""; dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.ElemNameName.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.ElemNameName), rdfNamespace); dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.ElemNameDescription.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.ElemNameDescription), rdfNamespace); #endregion if (firstPlacemarkInKmlFile.Element(kmlNamespace + DataLoaderConstants.ElemNamePoint) != null) { propertyTypeMapper.Add(DataLoaderConstants.PropNameLongitude, mapToDouble); propertyTypeMapper.Add(DataLoaderConstants.PropNameLatitude, mapToDouble); dataLoaderParams.ProducerParams.PlacemarkParams.LongitudeProperty = DataLoaderConstants.PropNameLongitude; dataLoaderParams.ProducerParams.PlacemarkParams.LatitudeProperty = DataLoaderConstants.PropNameLatitude; #region RDF dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.PropNameLongitude.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.PropNameLongitude), rdfNamespace); dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.PropNameLatitude.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.PropNameLatitude), rdfNamespace); #endregion } else if (firstPlacemarkInKmlFile.Element(kmlNamespace + DataLoaderConstants.ElemNamePolygon) != null) { propertyTypeMapper.Add(DataLoaderConstants.PropNameKmlCoords, mapToString); #region RDF dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.PropNameKmlCoords.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.PropNameKmlCoords), rdfNamespace); #endregion } foreach (var simpleData in firstPlacemarkInKmlFile.Descendants(kmlNamespace + DataLoaderConstants.ElemNameSimpleData)) { if (simpleData.Attribute(nameAttribute) == null) continue; string val = string.Concat("sd0", simpleData.Attribute(nameAttribute).Value); propertyTypeMapper.Add(val, mapToString); #region RDF dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(val.Trim(), string.Empty, FormattedDescription(defaultDescription, val), rdfNamespace); #endregion } } } } return dataLoaderParams; }
private static KmlToTablesDataLoaderParams CreateEmptyData(string fileName) { var name = Path.GetFileNameWithoutExtension(fileName); var dataLoaderParams = new KmlToTablesDataLoaderParams(); dataLoaderParams.TableMetadataEntity = new TableMetadataEntity { EntitySet = name, Name = name, Source = name, Category = name, ReleasedDate = DateTime.Now, ExpiredDate = DateTime.Now.AddDays(1), LastUpdateDate = DateTime.Now }; dataLoaderParams.ProducerParams = new EntityProducerParams { PlacemarkParams = new PlacemarkParams(), PropertyToTypeMap = new PropertyToTypeMapper() }; dataLoaderParams.ProcessorParams = new TableProcessorParams { PartitionKeyPropertyName = DataLoaderConstants.ValueUniqueAutoGenInitCaps, RowKeyPropertyName = DataLoaderConstants.ValueUniqueAutoGenInitCaps, TableMetadataPartitionKeyPropertyName = "Name", TableMetadataRowKeyPropertyName = DataLoaderConstants.ValueUniqueAutoGenInitCaps, TableColumnsMetadataPartitionKeyPropertyName = DataLoaderConstants.PropNameEntitySet, TableColumnsMetadataRowKeyPropertyName = "Column", EntityMetadataPartitionKeyPropertyName = DataLoaderConstants.PropNameEntitySet, EntityMetadataRowKeyPropertyName = DataLoaderConstants.PropNameEntityKind }; dataLoaderParams.TableColumnsMetadata = new TableColumnsMetadata { PropertyToTypeColumnsMetadata = new PropertyToTypeColumnsMetadataMapper() }; using (var kmlFile = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { const string mapToString = "string"; const string mapToDouble = "double"; const string nameAttribute = "name"; var kmlDocument = XDocument.Load(kmlFile); if (kmlDocument != null) { XNamespace kmlNamespace = kmlDocument.Root.Attributes("xmlns").First().Value; PropertyToTypeMapper propertyTypeMapper = dataLoaderParams.ProducerParams.PropertyToTypeMap; var firstPlacemarkInKmlFile = kmlDocument.Descendants(kmlNamespace + DataLoaderConstants.ElemNamePlacemark).First(); if (!firstPlacemarkInKmlFile.IsEmpty) { propertyTypeMapper.Add(DataLoaderConstants.ElemNameName, mapToString); propertyTypeMapper.Add(DataLoaderConstants.ElemNameDescription, mapToString); #region RDF string defaultDescription = DefaultDescription(); string rdfNamespace = "ogdi=\"ogdiUrl\""; dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.ElemNameName.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.ElemNameName), rdfNamespace); dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.ElemNameDescription.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.ElemNameDescription), rdfNamespace); #endregion if (firstPlacemarkInKmlFile.Element(kmlNamespace + DataLoaderConstants.ElemNamePoint) != null) { propertyTypeMapper.Add(DataLoaderConstants.PropNameLongitude, mapToDouble); propertyTypeMapper.Add(DataLoaderConstants.PropNameLatitude, mapToDouble); dataLoaderParams.ProducerParams.PlacemarkParams.LongitudeProperty = DataLoaderConstants.PropNameLongitude; dataLoaderParams.ProducerParams.PlacemarkParams.LatitudeProperty = DataLoaderConstants.PropNameLatitude; #region RDF dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.PropNameLongitude.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.PropNameLongitude), rdfNamespace); dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.PropNameLatitude.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.PropNameLatitude), rdfNamespace); #endregion } else if (firstPlacemarkInKmlFile.Element(kmlNamespace + DataLoaderConstants.ElemNamePolygon) != null) { propertyTypeMapper.Add(DataLoaderConstants.PropNameKmlCoords, mapToString); #region RDF dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(DataLoaderConstants.PropNameKmlCoords.Trim(), string.Empty, FormattedDescription(defaultDescription, DataLoaderConstants.PropNameKmlCoords), rdfNamespace); #endregion } foreach (var simpleData in firstPlacemarkInKmlFile.Descendants(kmlNamespace + DataLoaderConstants.ElemNameSimpleData)) { if (simpleData.Attribute(nameAttribute) == null) { continue; } string val = string.Concat("sd0", simpleData.Attribute(nameAttribute).Value); propertyTypeMapper.Add(val, mapToString); #region RDF dataLoaderParams.TableColumnsMetadata.PropertyToTypeColumnsMetadata.Add(val.Trim(), string.Empty, FormattedDescription(defaultDescription, val), rdfNamespace); #endregion } } } } return(dataLoaderParams); }