示例#1
0
        private static Entity GetSchemaEntity(string entitySet, string entityKind, PropertyToTypeMapper mapper)
        {
            var entity = new Entity();

            entity.AddProperty(DataLoaderConstants.PropNameEntitySet, entitySet);
            entity.AddProperty(DataLoaderConstants.PropNameEntityKind, entityKind);

            foreach (var p in mapper.GetProperties())
            {
                entity.AddProperty(p.Key, GetPropertyType(p.Value));
            }

            return(entity);
        }
        private static Entity GetSchemaEntity(string entitySet, string entityKind, PropertyToTypeMapper mapper)
        {
            var entity = new Entity();
            entity.AddProperty(DataLoaderConstants.PropNameEntitySet, entitySet);
            entity.AddProperty(DataLoaderConstants.PropNameEntityKind, entityKind);

            foreach (var p in mapper.GetProperties())
            {
                entity.AddProperty(p.Key, GetPropertyType(p.Value));
            }

            return entity;
        }
        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);
        }