You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							307 lines
						
					
					
						
							9.8 KiB
						
					
					
				
			
		
		
	
	
							307 lines
						
					
					
						
							9.8 KiB
						
					
					
				using KGIS.Plugin.LayerProperty.Enum; | 
						|
using KGIS.Plugin.LayerProperty.Interface; | 
						|
using KGIS.Plugin.LayerProperty.Utils.Storage; | 
						|
using System; | 
						|
using System.Collections.Generic; | 
						|
using System.Data; | 
						|
using System.Linq; | 
						|
using System.Net.NetworkInformation; | 
						|
using System.Text; | 
						|
using System.Threading.Tasks; | 
						|
using System.Xml.Serialization; | 
						|
 | 
						|
namespace KGIS.Plugin.LayerProperty.Utils | 
						|
{ | 
						|
    public abstract class DataSourceGeneric | 
						|
    { | 
						|
        private const string TBSYS_DATASOURCE = "TBSYS_DATASOURCE"; | 
						|
        private const string F_ID = "F_ID"; | 
						|
        private const string F_NAME = "F_NAME"; | 
						|
        private const string F_KEY = "F_KEY"; | 
						|
        private const string F_ATTRIBUTE = "F_ATTRIBUTE"; | 
						|
        private const string F_TYPE = "F_TYPE"; | 
						|
        private const string F_DSTYPE = "F_DSTYPE"; | 
						|
        private EnumDataSource dsType; | 
						|
        private DatabaseType rdsType; | 
						|
        private string mark = ""; | 
						|
        private string name = ""; | 
						|
        private string user = ""; | 
						|
        private string password = ""; | 
						|
        [XmlAttribute] | 
						|
        public EnumDataSource DSType | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.dsType; | 
						|
            } | 
						|
            protected set | 
						|
            { | 
						|
                this.dsType = value; | 
						|
            } | 
						|
        } | 
						|
        [XmlIgnore] | 
						|
        public DatabaseType RDSType | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.rdsType; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                this.rdsType = value; | 
						|
            } | 
						|
        } | 
						|
        [XmlAttribute] | 
						|
        public string Mark | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.mark; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                this.mark = value; | 
						|
            } | 
						|
        } | 
						|
        [XmlAttribute] | 
						|
        public string Name | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.name; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                this.name = value; | 
						|
            } | 
						|
        } | 
						|
        [XmlIgnore] | 
						|
        public string User | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.user; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                this.user = value; | 
						|
            } | 
						|
        } | 
						|
        [XmlIgnore] | 
						|
        public string Password | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.password; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                this.password = value; | 
						|
            } | 
						|
        } | 
						|
        public abstract string Persist | 
						|
        { | 
						|
            get; | 
						|
        } | 
						|
        public abstract ICoreRDBHelper RDBHelper | 
						|
        { | 
						|
            get; | 
						|
        } | 
						|
        public DataSourceGeneric(string mark, string name) | 
						|
        { | 
						|
            NetworkChange.NetworkAddressChanged += delegate | 
						|
            { | 
						|
                this.ReConnect(); | 
						|
            }; | 
						|
            this.Mark = mark; | 
						|
            this.Name = name; | 
						|
        } | 
						|
        protected virtual void ReConnect() | 
						|
        { | 
						|
        } | 
						|
        public abstract void Recover(string connectionstring); | 
						|
        public bool Save() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                ICoreRDBHelper systemRDBHelper = RDBHelperStorage.SystemRDBHelper; | 
						|
                bool result; | 
						|
                if (systemRDBHelper == null) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                long nextValidID = systemRDBHelper.GetNextValidID("TBSYS_DATASOURCE", "F_ID"); | 
						|
                if (nextValidID == -1L) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                StringBuilder stringBuilder = new StringBuilder(); | 
						|
                stringBuilder.Append("Insert into "); | 
						|
                stringBuilder.Append("TBSYS_DATASOURCE"); | 
						|
                stringBuilder.Append("( "); | 
						|
                stringBuilder.Append("F_ID,"); | 
						|
                stringBuilder.Append("F_NAME,"); | 
						|
                stringBuilder.Append("F_KEY,"); | 
						|
                stringBuilder.Append("F_ATTRIBUTE,"); | 
						|
                stringBuilder.Append("F_DSTYPE,"); | 
						|
                stringBuilder.Append("F_TYPE"); | 
						|
                stringBuilder.Append(") values ("); | 
						|
                stringBuilder.Append(nextValidID + ","); | 
						|
                stringBuilder.Append("'" + this.Name + "',"); | 
						|
                stringBuilder.Append("'" + this.Mark + "',"); | 
						|
                stringBuilder.Append("'" + this.Persist + "',"); | 
						|
                stringBuilder.Append(Convert.ToInt32(this.DSType) + ","); | 
						|
                stringBuilder.Append(Convert.ToInt32(this.RDSType) + ")"); | 
						|
                int num = systemRDBHelper.ExecuteSQL(stringBuilder.ToString()); | 
						|
                if (num > 0) | 
						|
                { | 
						|
                    result = true; | 
						|
                    return result; | 
						|
                } | 
						|
                result = false; | 
						|
                return result; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //TraceEvent.AddException(ex); | 
						|
            } | 
						|
            return false; | 
						|
        } | 
						|
        public bool Read() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                bool result; | 
						|
                if (this.Mark == "") | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                ICoreRDBHelper systemRDBHelper = RDBHelperStorage.SystemRDBHelper; | 
						|
                if (systemRDBHelper == null) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                string commandText = "select * from TBSYS_DATASOURCE where F_KEY='" + this.Mark + "'"; | 
						|
                DataTable dataTable = systemRDBHelper.ExecuteDatatable("TBSYS_DATASOURCE", commandText, true); | 
						|
                if (dataTable == null) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                if (dataTable.Rows.Count == 0) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                DataRow dataRow = dataTable.Rows[0]; | 
						|
                this.Name = ((dataRow["F_NAME"] == DBNull.Value) ? "" : dataRow["F_NAME"].ToString()); | 
						|
                this.Mark = ((dataRow["F_KEY"] == DBNull.Value) ? "" : dataRow["F_KEY"].ToString()); | 
						|
                this.RDSType = (DatabaseType)((dataRow["F_TYPE"] == DBNull.Value) ? 0 : Convert.ToInt32(dataRow["F_TYPE"])); | 
						|
                this.Recover((dataRow["F_ATTRIBUTE"] == DBNull.Value) ? "" : dataRow["F_ATTRIBUTE"].ToString()); | 
						|
                result = true; | 
						|
                return result; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //TraceEvent.AddException(ex); | 
						|
            } | 
						|
            return false; | 
						|
        } | 
						|
        public bool Update() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                ICoreRDBHelper systemRDBHelper = RDBHelperStorage.SystemRDBHelper; | 
						|
                bool result; | 
						|
                if (systemRDBHelper == null) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                DataTable dataTable = systemRDBHelper.ExecuteDatatable("TBSYS_DATASOURCE", "SELECT * FROM TBSYS_DATASOURCE WHERE F_KEY='" + this.Mark + "'", false); | 
						|
                if (dataTable == null) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                dataTable.Rows[0]["F_NAME"] = this.Name; | 
						|
                dataTable.Rows[0]["F_ATTRIBUTE"] = this.Persist; | 
						|
                dataTable.Rows[0]["F_DSTYPE"] = Convert.ToInt32(this.DSType); | 
						|
                dataTable.Rows[0]["F_TYPE"] = Convert.ToInt32(this.RDSType); | 
						|
                result = systemRDBHelper.SaveTable("TBSYS_DATASOURCE", true); | 
						|
                return result; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //TraceEvent.AddException(ex); | 
						|
            } | 
						|
            return false; | 
						|
        } | 
						|
        public bool UpdateEx(string newMark) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                ICoreRDBHelper systemRDBHelper = RDBHelperStorage.SystemRDBHelper; | 
						|
                bool result; | 
						|
                if (systemRDBHelper == null) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                DataTable dataTable = systemRDBHelper.ExecuteDatatable("TBSYS_DATASOURCE", "SELECT * FROM TBSYS_DATASOURCE WHERE F_KEY='" + this.Mark + "'", false); | 
						|
                if (dataTable == null) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                dataTable.Rows[0]["F_NAME"] = this.Name; | 
						|
                dataTable.Rows[0]["F_ATTRIBUTE"] = this.Persist; | 
						|
                dataTable.Rows[0]["F_DSTYPE"] = Convert.ToInt32(this.DSType); | 
						|
                dataTable.Rows[0]["F_TYPE"] = Convert.ToInt32(this.RDSType); | 
						|
                dataTable.Rows[0]["F_KEY"] = newMark; | 
						|
                this.Mark = newMark; | 
						|
                systemRDBHelper.SaveTable("TBSYS_DATASOURCE", true); | 
						|
                result = true; | 
						|
                return result; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //TraceEvent.AddException(ex); | 
						|
            } | 
						|
            return false; | 
						|
        } | 
						|
        public static bool Delete(string mark) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                ICoreRDBHelper systemRDBHelper = RDBHelperStorage.SystemRDBHelper; | 
						|
                bool result; | 
						|
                if (systemRDBHelper == null) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                if (systemRDBHelper.ExecuteNonQuery("DELETE FROM TBSYS_DATASOURCE WHERE F_KEY='" + mark + "'", CommandType.Text) == 0) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                result = true; | 
						|
                return result; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //TraceEvent.AddException(ex); | 
						|
            } | 
						|
            return false; | 
						|
        } | 
						|
        public override string ToString() | 
						|
        { | 
						|
            return this.Name; | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |