Exemple #1
0
        public UploadParam(string fileName)
        {
            var file = new FileInfo(fileName);
            var ext  = file.Extension.ToLower();

            Directory = file.DirectoryName;
            Name      = Path.GetFileNameWithoutExtension(file.Name);
            Progress  = 0;
            IsPlanned = false;

            switch (ext)
            {
            case ".cfg":
                ExtractSourceDataTypeFromConfigFile(fileName);
                break;

            case ".csv":
                goto default;

            case ".kml":
                Type = SourceDataType.Kml;
                _dataLoaderParams = Kml.KmlToTablesDataLoaderParams.FromFile(this);
                break;

            default:
                Type = SourceDataType.Csv;
                _dataLoaderParams = CsvToTablesDataLoaderParams.FromFile(this);
                break;
            }
        }
        private static void CheckMetadataChanges(string metadataSet, string entitySet, string entityKind, Entity entity,
                                                 DataLoaderParams Params, MetadataKind metadataKind)
        {
            var context = new TableContext(s_account.TableEndpoint.ToString(), s_account.Credentials, Params)
            {
                RetryPolicy =
                    RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount,
                                                   RetryPolicies.DefaultClientBackoff)
            };

            string             query   = string.Format(s_metadataEntityQueryTemplate, metadataSet, entitySet, entityKind);
            List <TableEntity> results = context.Execute <TableEntity>(new Uri(query, UriKind.Relative)).ToList();

            if (results.Count == 1)
            {
                var exceprionColumns = new[]
                {
                    DataLoaderConstants.PropNameEntityId,
                    DataLoaderConstants.PropNameLastUpdateDate
                };
                string differences = results[0].FindDifferences(entity, exceprionColumns);
                if (differences != null)
                {
                    throw new MetadataChangedException(entitySet, differences);
                }
            }
            else if (results.Count > 1)
            {
                throw new DuplicateEntityException(query);
            }
            else if (results.Count == 0)
            {
                throw new MetadataNotFoundException(entitySet, metadataKind);
            }
        }
Exemple #3
0
        public void VerifyConfiguration()
        {
            try
            {
                string path       = Path.Combine(Directory, Name + ".cfg");
                var    serializer = new XmlSerializer(DataLoaderParams.GetType());

                if (File.Exists(path))
                {
                    using (FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read))
                    {
                        var parameters = (DataLoaderParams)serializer.Deserialize(stream);
                        ConfigurationState = parameters.TableMetadataEntity.IsEmpty ? VerifyPlanned(parameters) : VerifyPublished(parameters);
                    }
                }
                else
                {
                    ConfigurationState = IsPlanned ? ConfigurationState.Ready : ConfigurationState.Incomplete;
                }
            }
            catch (Exception)
            {
                ConfigurationState = ConfigurationState.Incomplete;
            }
        }
Exemple #4
0
        public TableContext(string baseAddress, StorageCredentials credentials, DataLoaderParams _params)
            : base(baseAddress, credentials)
        {
            var pars = _params as CsvToTablesDataLoaderParams;

            if (pars != null)
            {
                this._params = pars.ProcessorParams;
            }
            WritingEntity += OnWritingEntity;
            ReadingEntity += TableContext_ReadingEntity;
        }
        public ProcessorParamsControlViewModel(DataLoaderParams parameters)
        {
            #region fill timezones

            var timeZones = TimeZoneInfo.GetSystemTimeZones();

            _timeZones = timeZones.OrderBy(x => x.BaseUtcOffset.Hours).Select(x => x.DisplayName).ToArray();

            #endregion fill timezones

            _processorParameters = parameters.ProcessorParams;

            if (parameters.ProducerParams != null)
                _datasetColumns = (new[] { "New.Guid" }).Union(parameters.ProducerParams.PropertyToTypeMap.Mappings.Select(x => x.Name));
        }
Exemple #6
0
        private static ConfigurationState VerifyPlanned(DataLoaderParams parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            if (parameters.TableMetadataEntity == null)
            {
                throw new ArgumentException();
            }

            if (!parameters.TableMetadataEntity.IsEmpty)
            {
                throw new ArgumentException();
            }

            return(VerifyTableMetadataEntity(parameters));
        }
Exemple #7
0
        public void RefreshDataLoaderParams()
        {
            switch (_type)
            {
            case SourceDataType.Csv:
                goto default;

            case SourceDataType.DbfAndKml:
                //_dataLoaderParams = DbaseKml.DbaseKmlToTablesDataLoaderParams.FromFile(this);
                break;

            case SourceDataType.Kml:
                _dataLoaderParams = Kml.KmlToTablesDataLoaderParams.FromFile(this);
                break;

            default:
                _dataLoaderParams = CsvToTablesDataLoaderParams.FromFile(this);
                break;
            }
        }
        public MetadataWindowViewModel(UploadParam uploadParam)
        {
            if (uploadParam == null)
                return;
            uploadParam.RefreshDataLoaderParams();
            _uploadParam = uploadParam;

            //Assigning ProducerControlView
            switch (uploadParam.Type)
            {
                case SourceDataType.Csv:
                    _dataLoaderParams = uploadParam.DataLoaderParams;

                    if (!_uploadParam.IsPlanned)
                    {
                        _producerParams = new CsvProducerControlView { DataContext = new CsvProducerControlViewModel(_dataLoaderParams) };
                    }
                    break;

                case SourceDataType.DbfAndKml:

                    _dataLoaderParams = uploadParam.DataLoaderParams;
                    _producerParams = new UserControl { IsEnabled = false };

                    break;

                case SourceDataType.Kml:

                    _dataLoaderParams = uploadParam.DataLoaderParams;
                    _producerParams = new CsvProducerControlView { DataContext = new CsvProducerControlViewModel(_dataLoaderParams) };

                    break;
                default:
                    throw new InvalidOperationException("Unknown upload parameter type.");
            }

            _processorParams = new ProcessorParamsControlView { DataContext = new ProcessorParamsControlViewModel(_dataLoaderParams) };
            _metadata = new MetadataControlView { DataContext = new MatadataControlViewModel(_dataLoaderParams) };
            _columnsMetadata = new ColumnsMetadataControlView { DataContext = new ColumnsMetadataWindowViewModel(_dataLoaderParams) };
            _dataLoaderParams.TableMetadataEntity.IsEmpty = uploadParam.IsPlanned;
        }
Exemple #9
0
        private static ConfigurationState VerifyTableMetadataEntity(DataLoaderParams parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            if (parameters.TableMetadataEntity == null)
            {
                throw new ArgumentException();
            }

            var required = new[]
            {
                parameters.TableMetadataEntity.Name, parameters.TableMetadataEntity.EntitySet,
                parameters.TableMetadataEntity.Source, parameters.TableMetadataEntity.Category
            };

            if (required.Any(s => string.IsNullOrEmpty(s)))
            {
                return(ConfigurationState.Incomplete);
            }

            foreach (PropertyInfo propertyInfo in typeof(TableMetadataEntity).GetProperties())
            {
                object val = propertyInfo.GetValue(parameters.TableMetadataEntity, null);
                if (val == null)
                {
                    return(ConfigurationState.Acceptable);
                }

                var str = val as string;

                if (str != null && string.IsNullOrEmpty(str))
                {
                    return(ConfigurationState.Acceptable);
                }
            }
            return(ConfigurationState.Ready);
        }
Exemple #10
0
        public UploadParam(SourceDataType type)
        {
            Type      = type;
            IsPlanned = true;

            switch (type)
            {
            case SourceDataType.Csv:
                _dataLoaderParams = CsvToTablesDataLoaderParams.FromFile(this);
                break;

            case SourceDataType.DbfAndKml:
                break;

            case SourceDataType.Kml:
                _dataLoaderParams = Kml.KmlToTablesDataLoaderParams.FromFile(this);
                break;

            default:
                throw new InvalidOperationException();
            }
        }
        private static void DeleteRdfMetadata(string metadataSet, string entitySet,
                                              DataLoaderParams parameters)
        {
            var context = new TableContext(s_account.TableEndpoint.ToString(), s_account.Credentials, parameters)
            {
                RetryPolicy =
                    RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount,
                                                   RetryPolicies.DefaultClientBackoff)
            };

            string             query   = string.Format(s_metadataRdfQueryTemplate, metadataSet, entitySet);
            List <TableEntity> results = context.Execute <TableEntity>(new Uri(query, UriKind.Relative)).ToList();

            if (results.Count > 0)
            {
                foreach (TableEntity i in results)
                {
                    context.DeleteObject(i);
                    context.SaveChanges();
                }
            }
        }
        public CsvProducerControlViewModel(DataLoaderParams parameters)
        {
            _datasetColumns = parameters.ProducerParams;
            _entityProperties = new PropertyToTypeMap();

            if (_datasetColumns.PlacemarkParams == null || _datasetColumns.PlacemarkParams.NameProperties == null)
            {
                _datasetColumns.PlacemarkParams = null;
                return;
            }

            foreach (var property in _datasetColumns.PropertyToTypeMap.Mappings)
            {
                for (int i = 0; i < _datasetColumns.PlacemarkParams.NameProperties.Length; i++)
                {
                    string nameProperty = _datasetColumns.PlacemarkParams.NameProperties[i];

                    if (nameProperty != null && nameProperty.ToLower() == property.Name.ToLower())
                        property.IndexInName = "{" + i + "}";
                }
            }
        }
        private static void DeleteMetadata(string metadataSet, string entitySet, string entityKind,
                                           DataLoaderParams parameters)
        {
            var context = new TableContext(s_account.TableEndpoint.ToString(), s_account.Credentials, parameters)
            {
                RetryPolicy =
                    RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount,
                                                   RetryPolicies.DefaultClientBackoff)
            };

            string             query   = string.Format(s_metadataEntityQueryTemplate, metadataSet, entitySet, entityKind);
            List <TableEntity> results = context.Execute <TableEntity>(new Uri(query, UriKind.Relative)).ToList();

            if (results.Count == 1)
            {
                context.DeleteObject(results.First());
                context.SaveChanges();
            }
            else if (results.Count > 1)
            {
                throw new DuplicateEntityException(query);
            }
        }
        private static void CheckAndUpdateMetadataLastUpdateDate(string metadataSet, string entitySet, string entityKind,
                                                                 DateTime lastUpdateDate, DataLoaderParams Params)
        {
            var context = new TableContext(s_account.TableEndpoint.ToString(), s_account.Credentials, Params)
                              {
                                  RetryPolicy =
                                      RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount,
                                                                     RetryPolicies.DefaultClientBackoff)
                              };

            string query = string.Format(s_metadataEntityQueryTemplate, metadataSet, entitySet, entityKind);
            List<TableEntity> results = context.Execute<TableEntity>(new Uri(query, UriKind.Relative)).ToList();
            if (results.Count == 1)
            {
                DateTime oldLastUpdateDate = new TableMetadataEntity(results[0]).LastUpdateDate;
                if (oldLastUpdateDate > lastUpdateDate)
                    throw new MetadataOutdatedException(oldLastUpdateDate, lastUpdateDate);

                results[0].UpdateProperty(DataLoaderConstants.PropNameLastUpdateDate, lastUpdateDate);
                context.UpdateObject(results[0]);
                context.SaveChanges();
            }
            else if (results.Count > 1)
            {
                throw new DuplicateEntityException(query);
            }
        }
 public MatadataControlViewModel(DataLoaderParams parameters)
 {
     _instance = parameters.TableMetadataEntity;
     EntitySet = _instance.EntitySet;
 }
 public abstract IEnumerable<Entity> GetEntitiesEnumerator(OnContinueExceptionCallback exceptionNotifier, DataLoaderParams Params);
Exemple #17
0
 public DataLoader(DataLoaderParams parameters, EntityProducer producer, EntityProcessor processor)
 {
     Params = parameters;
     Producer = producer;
     Processor = processor;
 }
        private static void CheckAndUpdateMetadataLastUpdateDate(string metadataSet, string entitySet, string entityKind,
                                                                 DateTime lastUpdateDate, DataLoaderParams Params)
        {
            var context = new TableContext(s_account.TableEndpoint.ToString(), s_account.Credentials, Params)
            {
                RetryPolicy =
                    RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount,
                                                   RetryPolicies.DefaultClientBackoff)
            };

            string             query   = string.Format(s_metadataEntityQueryTemplate, metadataSet, entitySet, entityKind);
            List <TableEntity> results = context.Execute <TableEntity>(new Uri(query, UriKind.Relative)).ToList();

            if (results.Count == 1)
            {
                DateTime oldLastUpdateDate = new TableMetadataEntity(results[0]).LastUpdateDate;
                if (oldLastUpdateDate > lastUpdateDate)
                {
                    throw new MetadataOutdatedException(oldLastUpdateDate, lastUpdateDate);
                }

                results[0].UpdateProperty(DataLoaderConstants.PropNameLastUpdateDate, lastUpdateDate);
                context.UpdateObject(results[0]);
                context.SaveChanges();
            }
            else if (results.Count > 1)
            {
                throw new DuplicateEntityException(query);
            }
        }
 public ColumnsMetadataWindowViewModel(DataLoaderParams parameters)
 {
     _columnsMetadata = parameters.TableColumnsMetadata ?? new TableColumnsMetadata();
     _entityColumnsMetadata = new PropertyToTypeColumnsMetadataMap();
 }
        private static void DeleteRdfMetadata(string metadataSet, string entitySet,
                                   DataLoaderParams parameters)
        {
            var context = new TableContext(s_account.TableEndpoint.ToString(), s_account.Credentials, parameters)
            {
                RetryPolicy =
                    RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount,
                                                   RetryPolicies.DefaultClientBackoff)
            };

            string query = string.Format(s_metadataRdfQueryTemplate, metadataSet, entitySet);
            List<TableEntity> results = context.Execute<TableEntity>(new Uri(query, UriKind.Relative)).ToList();
            if (results.Count > 0)
            {
                foreach (TableEntity i in results)
                {
                    context.DeleteObject(i);
                    context.SaveChanges();
                }
            }
        }
Exemple #21
0
 public DataLoader(DataLoaderParams parameters, EntityProducer producer, EntityProcessor processor)
 {
     Params    = parameters;
     Producer  = producer;
     Processor = processor;
 }
        private static void CheckMetadataChanges(string metadataSet, string entitySet, string entityKind, Entity entity,
                                                 DataLoaderParams Params, MetadataKind metadataKind)
        {
            var context = new TableContext(s_account.TableEndpoint.ToString(), s_account.Credentials, Params)
                              {
                                  RetryPolicy =
                                      RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount,
                                                                     RetryPolicies.DefaultClientBackoff)
                              };

            string query = string.Format(s_metadataEntityQueryTemplate, metadataSet, entitySet, entityKind);
            List<TableEntity> results = context.Execute<TableEntity>(new Uri(query, UriKind.Relative)).ToList();
            if (results.Count == 1)
            {
                var exceprionColumns = new[]
                                           {
                                               DataLoaderConstants.PropNameEntityId,
                                               DataLoaderConstants.PropNameLastUpdateDate
                                           };
                string differences = results[0].FindDifferences(entity, exceprionColumns);
                if (differences != null)
                    throw new MetadataChangedException(entitySet, differences);
            }
            else if (results.Count > 1)
            {
                throw new DuplicateEntityException(query);
            }
            else if (results.Count == 0)
            {
                throw new MetadataNotFoundException(entitySet, metadataKind);
            }
        }
        private static void DeleteMetadata(string metadataSet, string entitySet, string entityKind,
                                           DataLoaderParams parameters)
        {
            var context = new TableContext(s_account.TableEndpoint.ToString(), s_account.Credentials, parameters)
                              {
                                  RetryPolicy =
                                      RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount,
                                                                     RetryPolicies.DefaultClientBackoff)
                              };

            string query = string.Format(s_metadataEntityQueryTemplate, metadataSet, entitySet, entityKind);
            List<TableEntity> results = context.Execute<TableEntity>(new Uri(query, UriKind.Relative)).ToList();
            if (results.Count == 1)
            {
                context.DeleteObject(results.First());
                context.SaveChanges();
            }
            else if (results.Count > 1)
            {
                throw new DuplicateEntityException(query);
            }
        }
 public TableDataLoader(DataLoaderParams parameters, EntityProducer producer, EntityProcessor processor,
                        TableOverwriteMode overwriteMode)
     : base(parameters, producer, processor)
 {
     this.overwriteMode = overwriteMode;
 }
 public TableDataLoader(DataLoaderParams parameters, EntityProducer producer, EntityProcessor processor,
                        TableOverwriteMode overwriteMode)
     : base(parameters, producer, processor)
 {
     this.overwriteMode = overwriteMode;
 }
Exemple #26
0
 public abstract IEnumerable <Entity> GetEntitiesEnumerator(OnContinueExceptionCallback exceptionNotifier, DataLoaderParams Params);