コード例 #1
0
        public static MsSqlServerDataRepositoryItem GetMsSqlServerDataRepositoryItem(MsSql2008FeatureLayerInfo configureInfo)
        {
            MsSqlServerDataRepositoryItem serverItem = new MsSqlServerDataRepositoryItem();

            SyncToServerItem(configureInfo, serverItem);
            return(serverItem);
        }
コード例 #2
0
        protected override Collection <Layer> GetLayersCore(GetLayersParameters getLayersParameters)
        {
            Collection <Layer>             resultLayers     = base.GetLayersCore(getLayersParameters);
            Collection <MsSqlFeatureLayer> newFeatureLayers = new Collection <MsSqlFeatureLayer>();

            if (getLayersParameters.CustomData.ContainsKey("TableName") && getLayersParameters.CustomData.ContainsKey("DatabaseName") && getLayersParameters.CustomData.ContainsKey("IdColumn") && getLayersParameters.CustomData.ContainsKey("ServerName"))
            {
                MsSql2008FeatureLayerInfo layerInfo = new MsSql2008FeatureLayerInfo();
                layerInfo.TableName           = getLayersParameters.CustomData["TableName"].ToString();
                layerInfo.SchemaName          = getLayersParameters.CustomData["SchemaName"].ToString();
                layerInfo.DatabaseName        = getLayersParameters.CustomData["DatabaseName"].ToString();
                layerInfo.FeatureIDColumnName = getLayersParameters.CustomData["IdColumn"].ToString();
                layerInfo.ServerName          = getLayersParameters.CustomData["ServerName"].ToString();
                layerInfo.UserName            = getLayersParameters.CustomData["UserName"].ToString();
                layerInfo.Password            = getLayersParameters.CustomData["Password"].ToString();
                if (!string.IsNullOrEmpty(layerInfo.UserName) && !string.IsNullOrEmpty(layerInfo.Password))
                {
                    layerInfo.UseTrustAuthority = false;
                }
                newFeatureLayers = GetLayers(layerInfo);
            }
            else
            {
                newFeatureLayers = GetFeatureLayersCore();
            }

            foreach (var layer in newFeatureLayers)
            {
                resultLayers.Add(layer);
            }

            return(resultLayers);
        }
コード例 #3
0
        protected virtual Collection <MsSqlFeatureLayer> GetLayersCore(IEnumerable <MsSql2008FeatureLayerInfo> configurations)
        {
            Collection <MsSqlFeatureLayer> resultLayers = new Collection <MsSqlFeatureLayer>();

            if (configurations == null)
            {
                var window = new DatabaseLayerInfoWindow();
                var model  = new MsSql2008FeatureLayerInfo();

                window.SetSource(model);

                if (window.ShowDialog().GetValueOrDefault())
                {
                    resultLayers.Add(model.CreateLayer());
                }
            }
            else
            {
                foreach (var layer in configurations.Select(c => c.CreateLayer()))
                {
                    layer.CommandTimeout = Singleton <ServerFeatureLayerSettingsUserControl> .Instance.SQLTimeoutInSecond;
                    resultLayers.Add(layer);
                }
            }

            return(resultLayers);
        }
コード例 #4
0
        public void SetSource(MsSql2008FeatureLayerInfo featureLayerInfo)
        {
            model = featureLayerInfo;
            MsSqlServerConfigureViewModel viewModel = new MsSqlServerConfigureViewModel(featureLayerInfo);

            DataContext = viewModel;
            UpdateLayout();
        }
コード例 #5
0
        public DatabaseTreeViewModel(MsSql2008FeatureLayerInfo model)
        {
            children = new ObservableCollection <DataRepositoryItem>();
            MsSqlServerDataRepositoryItem serverItem = MsSqlServerDataRepositoryPlugin.GetMsSqlServerDataRepositoryItem(model);

            Children.Add(serverItem);
            if (Children.Count > 0)
            {
                Children[0].IsSelected = true;
            }
        }
コード例 #6
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            DatabaseLayerInfoViewModel <MsSqlFeatureLayer> viewModel = DataContext as DatabaseLayerInfoViewModel <MsSqlFeatureLayer>;
            MsSql2008FeatureLayerInfo info = new MsSql2008FeatureLayerInfo();

            info.Password                  = viewModel.Password;
            info.ServerName                = viewModel.ServerName;
            info.UserName                  = viewModel.UserName;
            info.UseTrustAuthority         = viewModel.UseTrustAuthentication;
            viewModel.IsServerConnected    = true;
            DataRepositoryTree.DataContext = new DatabaseTreeViewModel(info);
        }
コード例 #7
0
        private static Collection <DatabaseModel> GetDatabaseItems(object obj)
        {
            MsSql2008FeatureLayerInfo tempParam = (MsSql2008FeatureLayerInfo)obj;

            Collection <DatabaseModel> result = new Collection <DatabaseModel>();

            foreach (var dbName in tempParam.CollectDatabaseFromServer())
            {
                DatabaseModel dbItem = new DatabaseModel(dbName);
                try
                {
                    Collection <string> tableNames = tempParam.CollectTablesFromDatabase(dbName);
                    Collection <string> viewNames  = tempParam.CollectViewsFromDatabase(dbName);

                    foreach (var item in tableNames)
                    {
                        TableModel model  = new TableModel(item);
                        string     schema = string.Empty;
                        int        index  = item.IndexOf(".", StringComparison.Ordinal);
                        if (index != -1)
                        {
                            schema = item.Substring(0, index);
                        }
                        model.SchemaName = schema;
                        dbItem.TableModels.Add(model);
                    }

                    foreach (var item in viewNames)
                    {
                        TableModel model = new TableModel(item);
                        model.IsView = true;
                        string schema = string.Empty;
                        int    index  = item.IndexOf(".", StringComparison.Ordinal);
                        if (index != -1)
                        {
                            schema = item.Substring(0, index);
                        }
                        model.SchemaName = schema;
                        dbItem.TableModels.Add(model);
                    }
                }
                catch
                { }

                result.Add(dbItem);
            }

            return(result);
        }
コード例 #8
0
        private static void SyncToServerItem(MsSql2008FeatureLayerInfo configureInfo, MsSqlServerDataRepositoryItem serverItem)
        {
            serverItem.Name     = configureInfo.ServerName;
            serverItem.Server   = configureInfo.ServerName;
            serverItem.UserName = configureInfo.UserName;
            serverItem.Password = configureInfo.Password;

            Task <Collection <DatabaseModel> > task = new Task <Collection <DatabaseModel> >(GetDatabaseItems, configureInfo);

            task.Start();
            task.ContinueWith(t =>
            {
                Application.Current.Dispatcher.BeginInvoke(() =>
                {
                    if (t.Result.Count > 0)
                    {
                        serverItem.Children.Clear();
                        foreach (var databaseItem in t.Result)
                        {
                            if (databaseItem.TableModels.Count > 0)
                            {
                                DatabaseDataRepositoryItem dbItem = new DatabaseDataRepositoryItem();
                                dbItem.Name = databaseItem.Name;

                                var groupItems = databaseItem.TableModels.GroupBy(g => g.SchemaName);

                                DataRepositoryItem schemaItem = new DataRepositoryItem();
                                schemaItem.Name = String.Format(CultureInfo.InvariantCulture, "{0} ({1})", "Schemas", groupItems.Count());
                                schemaItem.Icon = new BitmapImage(new Uri("/GisEditorPluginCore;component/Images/schemas.png", UriKind.RelativeOrAbsolute));
                                dbItem.Children.Add(schemaItem);

                                foreach (var group in groupItems)
                                {
                                    IEnumerable <string> tableGroup = group.Where(v => !v.IsView).Select(g => g.Name);
                                    IEnumerable <string> viewGroup  = group.Where(v => v.IsView).Select(g => g.Name);

                                    AddSchemaChildrens(schemaItem, tableGroup, viewGroup, "/GisEditorPluginCore;component/Images/tablefolder.png", group.Key, configureInfo, databaseItem.Name);
                                }

                                serverItem.Children.Add(dbItem);
                                DataRepositoryContentViewModel.RestoreChildrenExpandStatus(new ObservableCollection <DataRepositoryItem> {
                                    serverItem
                                }, GisEditor.DataRepositoryManager.ExpandedFolders);
                            }
                        }
                    }
                });
            });
        }
コード例 #9
0
        private void AddServer()
        {
            MsSqlServerConfigureWindow configureWindow = new MsSqlServerConfigureWindow();

            configureWindow.Owner = Application.Current.MainWindow;
            configureWindow.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            MsSql2008FeatureLayerInfo model = new MsSql2008FeatureLayerInfo();

            configureWindow.SetSource(model);
            if (configureWindow.ShowDialog().GetValueOrDefault())
            {
                MsSqlServerDataRepositoryItem serverItem = GetMsSqlServerDataRepositoryItem(model);
                serverItem.Parent = rootItem;
                rootItem.Children.Add(serverItem);
                GisEditor.InfrastructureManager.SaveSettings(this);
            }
        }
コード例 #10
0
        protected override void ApplySettingsCore(StorableSettings settings)
        {
            base.ApplySettingsCore(settings);
            if (settings.GlobalSettings.ContainsKey("MsSqlServers"))
            {
                try
                {
                    if (rootItem != null)
                    {
                        rootItem.Children.Clear();
                        XElement serversElement = XElement.Parse(settings.GlobalSettings["MsSqlServers"]);
                        serversElement.Elements("Server").ForEach(item =>
                        {
                            string serverString = item.Value;
                            serverString        = StringProtector.Instance.Decrypt(serverString);
                            string[] server     = serverString.Split('|');

                            MsSqlServerDataRepositoryItem serverItem = new MsSqlServerDataRepositoryItem();
                            serverItem.Name     = server[0];
                            serverItem.Server   = server[0];
                            serverItem.UserName = server[1];
                            serverItem.Password = server[2];
                            rootItem.Children.Add(serverItem);

                            MsSql2008FeatureLayerInfo configureInfo = new MsSql2008FeatureLayerInfo();
                            configureInfo.ServerName = serverItem.Server;
                            configureInfo.UserName   = serverItem.UserName;
                            configureInfo.Password   = serverItem.Password;
                            if (!string.IsNullOrEmpty(configureInfo.UserName) && !string.IsNullOrEmpty(configureInfo.Password))
                            {
                                configureInfo.UseTrustAuthority = false;
                            }
                            SyncToServerItem(configureInfo, serverItem);
                        });
                    }
                }
                catch (Exception)
                { }
            }
        }
コード例 #11
0
        private static void AddChildrens(DataRepositoryItem dbItem, List <string> itemNames, string iconUri, string name, MsSql2008FeatureLayerInfo layerInfo, string databaseName)
        {
            if (itemNames.Count == 0)
            {
                return;
            }

            DataRepositoryItem tablesItem = new DataRepositoryItem();

            tablesItem.Name = String.Format(CultureInfo.InvariantCulture, "{0} ({1})", name, itemNames.Count);
            tablesItem.Icon = new BitmapImage(new Uri(iconUri, UriKind.RelativeOrAbsolute));
            dbItem.Children.Add(tablesItem);

            foreach (var itemName in itemNames)
            {
                MsSqlTableDataRepositoryItem tableItem = new MsSqlTableDataRepositoryItem();
                tableItem.LayerInfo    = layerInfo;
                tableItem.TableName    = itemName;
                tableItem.SchemaName   = dbItem.Name;
                tableItem.DatabaseName = databaseName;
                tableItem.Name         = itemName;

                int index = itemName.IndexOf(".", StringComparison.Ordinal);
                if (index != -1)
                {
                    tableItem.Name      = itemName.Substring(index + 1);
                    tableItem.TableName = tableItem.Name;
                }

                tablesItem.Children.Add(tableItem);
            }
        }
コード例 #12
0
        private static void AddSchemaChildrens(DataRepositoryItem dbItem, IEnumerable <string> tableNames, IEnumerable <string> viewNames, string iconUri, string name, MsSql2008FeatureLayerInfo layerInfo, string databaseName)
        {
            if (!tableNames.Any() && !viewNames.Any())
            {
                return;
            }

            PostgreSchemaDataRepositoryItem schemaItem = new PostgreSchemaDataRepositoryItem();

            schemaItem.Name       = String.Format(CultureInfo.InvariantCulture, "{0}", name);
            schemaItem.SchemaName = schemaItem.Name;
            schemaItem.Icon       = new BitmapImage(new Uri(iconUri, UriKind.RelativeOrAbsolute));
            dbItem.Children.Add(schemaItem);

            AddChildrens(schemaItem, tableNames.ToList(), "/GisEditorPluginCore;component/Images/tables.png", "Tables", layerInfo, databaseName);

            AddChildrens(schemaItem, viewNames.ToList(), "/GisEditorPluginCore;component/Images/dataviews.png", "Views", layerInfo, databaseName);
        }
コード例 #13
0
 public MsSqlServerConfigureViewModel(MsSql2008FeatureLayerInfo model)
 {
     this.model      = model;
     this.dataTables = new ObservableCollection <string>();
     this.databases  = new ObservableCollection <string>();
 }