예제 #1
0
        void layerItemsView1_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case "EditableIdLayer":
            {
                _currentIdTable = mf.layerItemsView1.EditableIdLayer;
                _currentTablePg = Program.app.getTableInfo(_currentIdTable);
                CurrentTable    = _currentTablePg;
            } break;

            case "EditableLayer":
            {
                _currentLayerM = mf.layerItemsView1.EditableLayer;
                CurrentTable   = _currentLayerM;
            } break;

            default:
                break;
            }
        }
예제 #2
0
 private static Layer getLayer(Interfaces.tablesInfo tableInfo)
 {
     return(Program.mapAdmin.SscLayers.FirstOrDefault(w =>
                                                      w.lname == tableInfo.nameDB ||
                                                      w.lname == tableInfo.view_name));
 }
예제 #3
0
        /// <summary>
        /// Сохранение
        /// </summary>
        public void Save(object parameter = null)
        {
            if (CanSave())
            {
                cti.ThreadProgress.ShowWait();
                try
                {
                    if (IsRegistered)
                    {
                        using (SqlWork sqlWork = new SqlWork(true))
                        {
                            sqlWork.sql =
                                String.Format(@"UPDATE sys_scheme.table_info 
                                    SET name_map = @name_map, photo = {1}, lablefiled = '{2}', pk_fileld = '{3}',  geom_field = '{4}'
                                    WHERE id = {5};",
                                              Text,
                                              HasFiles,
                                              (LabelField != null) ? LabelField.Name : "",
                                              (PkField != null) ? PkField.Name : "",
                                              (GeomField != null) ? GeomField.Name : "",
                                              Id);
                            sqlWork.ExecuteNonQuery(new List <Params>()
                            {
                                new Params("@name_map", Text, NpgsqlDbType.Varchar)
                            });
                        }
                    }
                    else
                    {
                        using (SqlWork sqlWork = new SqlWork(true))
                        {
                            sqlWork.BeginTransaction();
                            sqlWork.sql = "SELECT nextval('sys_scheme.table_info_id_seq')::integer as val";
                            int idTable = sqlWork.ExecuteScalar <Int32>();
                            sqlWork.CloseReader();
                            sqlWork.sql =
                                String.Format(@"INSERT INTO sys_scheme.table_info 
                                                (id, name_db, name_map, geom_type, type, map_style, scheme_name, photo, pk_fileld, lablefiled, geom_field) 
                                            VALUES ({0}, '{1}',@name_map, {3}, {4}, {5}, '{6}', {7}, '{8}', '{9}', '{10}')",
                                              idTable,
                                              Name,
                                              Text,
                                              Convert.ToInt32(GeomType),
                                              Convert.ToInt32(TableType),
                                              IsMapStyle,
                                              ParentScheme.SchemeName,
                                              HasFiles,
                                              PkField.Name,
                                              (LabelField != null) ? LabelField.Name : "",
                                              (GeomField != null) ? GeomField.Name : "");
                            sqlWork.ExecuteNonQuery(new List <Params>()
                            {
                                new Params("@name_map", Text, NpgsqlDbType.Varchar)
                            });
                            if (IsMapStyle && (TableType == ERTableType.Interval || TableType == ERTableType.Catalog))
                            {
                                bool exists_style = false;
                                sqlWork.sql = String.Format("SELECT * FROM {0}.{1} LIMIT 1", ParentScheme.SchemeName, Name);
                                sqlWork.ExecuteReader();
                                if (sqlWork.CanRead())
                                {
                                    for (int i = 0; sqlWork.GetFiealdCount() > i; i++)
                                    {
                                        if (sqlWork.GetFieldName(i) == "exists_style")
                                        {
                                            exists_style = true;
                                            break;
                                        }
                                    }
                                }
                                sqlWork.CloseReader();
                                if (!exists_style)
                                {
                                    MessageBoxResult dr = MessageBox.Show(
                                        Rekod.Properties.Resources.PgReg_NeedAdditionalFields,
                                        Rekod.Properties.Resources.PgReg_StyleCreation, MessageBoxButton.YesNo);
                                    if (dr == MessageBoxResult.Yes)
                                    {
                                        sqlWork.sql =
                                            String.Format("ALTER TABLE {0}.{1} " +
                                                          "ADD exists_style boolean DEFAULT true," +
                                                          "ADD fontname character varying DEFAULT 'Map Symbols'," +
                                                          "ADD fontcolor integer DEFAULT 16711680," +
                                                          "ADD fontframecolor integer DEFAULT 16711680," +
                                                          "ADD fontsize integer DEFAULT 12," +
                                                          "ADD symbol integer DEFAULT 35," +
                                                          "ADD pencolor integer DEFAULT 16711680," +
                                                          "ADD pentype integer DEFAULT 2," +
                                                          "ADD penwidth integer DEFAULT 1," +
                                                          "ADD brushbgcolor bigint DEFAULT 16711680," +
                                                          "ADD brushfgcolor integer DEFAULT 16711680," +
                                                          "ADD brushstyle integer DEFAULT 0," +
                                                          "ADD brushhatch integer DEFAULT 1;",
                                                          ParentScheme.SchemeName, Name);
                                        sqlWork.ExecuteNonQuery();
                                    }
                                }
                            }
                            // Регистрация полей
                            foreach (var f in Fields)
                            {
                                if (f.ToBeRegistered)
                                {
                                    if (f.DataType == 0)
                                    {
                                        f.DataType = ERDataType.Text;
                                    }

                                    sqlWork.CloseReader();
                                    sqlWork.sql =
                                        String.Format(
                                            @"INSERT INTO sys_scheme.table_field_info(id_table, name_db, name_map, type_field, visible, name_lable, is_reference, is_interval) 
                                                VALUES ({0}, '{1}', '{2}', {3}, {4}, @name_lable, {6}, {7});",
                                            idTable, f.Name, f.Name, Convert.ToInt32(f.DataType), true, f.Description, false, false);
                                    sqlWork.ExecuteNonQuery(new List <Params>()
                                    {
                                        new Params("@name_lable", f.Description, NpgsqlDbType.Varchar)
                                    });
                                }
                            }
                            sqlWork.CloseReader();
                            if (HasFiles)
                            {
                                bool exist = false;
                                sqlWork.sql =
                                    String.Format("SELECT EXISTS(SELECT * FROM pg_tables WHERE schemaname='{0}' AND tablename='photo_{1}');",
                                                  ParentScheme.SchemeName,
                                                  Name);
                                exist = sqlWork.ExecuteScalar <Boolean>();
                                if (exist)
                                {
                                    bool est_v_tabl = false;
                                    sqlWork.sql = String.Format("SELECT EXISTS(SELECT id FROM sys_scheme.table_photo_info WHERE id_table = {0});", idTable);
                                    est_v_tabl  = sqlWork.ExecuteScalar <Boolean>();
                                    if (!est_v_tabl)
                                    {
                                        sqlWork.sql =
                                            String.Format("INSERT INTO sys_scheme.table_photo_info(id_table, photo_table, photo_field, photo_file, id_field_tble)" +
                                                          " VALUES ({0}, 'photo_{1}', 'id_obj', 'file', '{2}');",
                                                          idTable, Name, PkField.Name);
                                        sqlWork.ExecuteNonQuery();
                                    }
                                }
                                else
                                {
                                    sqlWork.sql = String.Format("SELECT sys_scheme.set_photo_table({0}, true)", idTable);
                                    sqlWork.ExecuteNonQuery();
                                }
                            }
                            else
                            {
                                sqlWork.sql = String.Format("DELETE FROM sys_scheme.table_photo_info WHERE id_table = {0};", Id);
                                sqlWork.ExecuteNonQuery();
                            }
                            sqlWork.sql = String.Format("SELECT sys_scheme.set_table_rights_for_admins({0});", idTable.ToString());
                            sqlWork.ExecuteNonQuery();

                            sqlWork.EndTransaction();
                            IsRegistered = true;
                            foreach (var f in Fields)
                            {
                                if (f.ToBeRegistered)
                                {
                                    f.IsRegistered = true;
                                }
                            }
                            Id = idTable;
                        }
                    }
                    if (IsSscActive)
                    {
                        if (SscGroup != null)
                        {
                            Interfaces.tablesInfo tableInfo =
                                new Interfaces.tablesInfo()
                            {
                                idTable        = Id,
                                nameDB         = Name,
                                nameMap        = Text,
                                pkField        = PkField.Name,
                                geomFieldName  = (GeomField == null) ? null : GeomField.Name,
                                lableFieldName = (LabelField == null) ? null : LabelField.Name,
                                TypeGeom       = (Interfaces.TypeGeometry)GeomType
                            };
                            tableInfo.ListField = new List <Interfaces.fieldInfo>();
                            foreach (var f in Fields.Where(p => p.IsRegistered))
                            {
                                tableInfo.ListField.Add(new Interfaces.fieldInfo()
                                {
                                    nameDB = Name, nameMap = Text
                                });
                            }
                            MapAdmin.RegisterTable(tableInfo, SscGroup);
                        }
                    }
                    cti.ThreadProgress.Close();
                    MessageBox.Show(Rekod.Properties.Resources.PgReg_ChangesSaved);
                }
                catch (Exception ex)
                {
                    cti.ThreadProgress.Close();
                    MessageBox.Show(ex.Message);
                }
            }
        }