Ejemplo n.º 1
0
        public TableRecordModel CreateNewRecord(bool allowExpand)
        {
            TableRecordModel result = null;

            if (BigEndian)
            {
                tablename = ConvertBE(Name);
            }
            else
            {
                tablename = Name;
            }
            int newRecNo = TDB.TDBTableRecordAdd(dbIndex, tablename, allowExpand);

            if (newRecNo == 0xFFFF)
            {
                //We are at max capacity
                //Chuck an exception
                throw new ApplicationException("Table " + name + " has reached max capacity");
            }

            result = ConstructRecordModel(newRecNo);

            result.Dirty      = true;
            parentModel.Dirty = true;

            foreach (TdbFieldProperties fieldProps in fieldList)
            {
                switch (fieldProps.FieldType)
                {
                case TdbFieldType.tdbString:
                    string val = "Unassigned";
                    result.RegisterField(fieldProps.Name, val);
                    break;

                case TdbFieldType.tdbUInt:
                    UInt32 intval = 0;
                    result.RegisterField(fieldProps.Name, (int)intval);
                    break;

                case TdbFieldType.tdbSInt:
                    Int32 signedval = 0;
                    result.RegisterField(fieldProps.Name, signedval);
                    break;

                case TdbFieldType.tdbFloat:
                    float floatval = 0;
                    result.RegisterField(fieldProps.Name, floatval);
                    break;

                default:
                    Trace.WriteLine("NOT SUPPORTED YET!!!");
                    break;
                }
            }

            return(result);
        }
        private async void DownloadApplyTDB()
        {
            var result = _messageService.Show("This will create the 'world' database. If the database already exists, it will be overwritten! Continue?", "Warning!", MessageButton.YesNo, MessageImage.Warning);

            if (result == MessageResult.Yes)
            {
                Progress <int> progress = new Progress <int>(val =>
                {
                    TDBSetupProgress = val;
                });

                //var wizard = e.Source as Xceed.Wpf.Toolkit.Wizard;

                //if (Wizard != null)
                //{
                //    Wizard.CanSelectNextPage = false;
                //    Wizard.CanSelectPreviousPage = false;
                //}

                TDBSetupWorking = true;

                string tempDir   = FileHelper.GenerateTempDirectory();
                string file      = Path.Combine(tempDir, "TDB.7z");
                string extractTo = Path.Combine(tempDir, "TDB");
                Directory.CreateDirectory(extractTo);

                await TDB.DownloadTDBAsync(progress, file);

                await TDB.Extract7zAsync(file, extractTo, progress);

                string[] files  = Directory.GetFiles(extractTo);
                string   tdbSql = "";

                foreach (string f in files)
                {
                    if (Path.GetFileName(f).StartsWith("TDB_full"))
                    {
                        tdbSql = f;
                        break;
                    }
                }

                if (!string.IsNullOrEmpty(tdbSql))
                {
                    MySqlDatabase db = new WorldDatabase(MySQLHost, MySQLPort, MySQLUsername, MySQLPassword, "world");
                    await db.CreateDatabaseAsync();

                    await TDB.ApplyAsync(tdbSql, db, progress, new CancellationTokenSource());
                }

                FileHelper.DeleteDirectory(tempDir);
                TDBSetupWorking = false;
            }
        }
Ejemplo n.º 3
0
 public void Compact()
 {
     TDB.TDBDatabaseCompact(dbIndex);
 }
Ejemplo n.º 4
0
        /// <summary>
        /// This function saves the changes from the table record models to the database
        ///
        /// These changes need to be made persistent by calling TDB.Save(). usually you don't
        /// call this function directly. Instead call EditorModel.Save() which will
        /// do it all for you.
        /// </summary>
        public void Save()
        {
            List <TableRecordModel> listToUse = null;

            for (int j = 0; j < 2; j++)
            {
                if (j == 0)
                {
                    listToUse = recordList;
                }
                else
                {
                    listToUse = deletedRecordList;
                }
                foreach (TableRecordModel record in listToUse)
                {
                    if (record.Dirty)
                    {
                        // Need to reverse tablename to find the correct table since we reversed them to begin with
                        // when first reading them in to make them compatible with the editor.
                        if (BigEndian)
                        {
                            tablename = ConvertBE(Name);
                        }
                        else
                        {
                            tablename = Name;
                        }

                        //First check to see if this record is going to be deleted
                        if (record.Deleted)
                        {
                            Trace.Write("About to mark for deletion record " + record.RecNo);
                            // Mark record for deletion in DB
                            // s68 - not sure why 'record remove was commented out and changed to 'change deleted' , that doesnt remove the record
                            // will leave it here in case there was some kind of problem with using record remove.
                            // TDB.TDBTableRecordChangeDeleted(dbIndex, tablename, record.RecNo, false);

                            TDB.TDBTableRecordRemove(dbIndex, tablename, record.RecNo);
                            continue;
                        }

                        string[] keyArray         = null;
                        int[]    valueArray       = null;
                        float[]  floatArray       = null;
                        string[] stringValueArray = null;

                        #region Int Fields
                        record.GetChangedIntFields(ref keyArray, ref valueArray);

                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            TDB.TDBFieldSetValueAsInteger(dbIndex, tablename, keyArray[i], record.RecNo, valueArray[i]);
                        }
                        #endregion

                        #region String Fields
                        keyArray = null;
                        record.GetChangedStringFields(ref keyArray, ref stringValueArray);

                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            TDB.TDBFieldSetValueAsString(dbIndex, tablename, keyArray[i], record.RecNo, stringValueArray[i]);
                        }
                        #endregion

                        #region Float Fields
                        keyArray = null;
                        record.GetChangedFloatFields(ref keyArray, ref floatArray);
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            TDB.TDBFieldSetValueAsFloat(dbIndex, tablename, keyArray[i], record.RecNo, floatArray[i]);
                        }
                        #endregion

                        record.DiscardBackups();
                    }
                }
            }

            //TDB.TDBDatabaseCompact(dbIndex);
            //TDB.TDBSave(dbIndex);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// This function saves the changes from the table record models to the database
        ///
        /// These changes need to be made persistent by calling TDB.Save(). usually you don't
        /// call this function directly. Instead call EditorModel.Save() which will
        /// do it all for you.
        /// </summary>
        public void Save()
        {
            List <TableRecordModel> listToUse = null;

            for (int j = 0; j < 2; j++)
            {
                if (j == 0)
                {
                    listToUse = recordList;
                }
                else
                {
                    listToUse = deletedRecordList;
                }
                foreach (TableRecordModel record in listToUse)
                {
                    if (record.Dirty)
                    {
                        //First check to see if this record is going to be deleted
                        if (record.Deleted)
                        {
                            Trace.Write("About to mark for deletion record " + record.RecNo);
                            //Mark record for deletion in DB

                            TDB.TDBTableRecordChangeDeleted(dbIndex, name, record.RecNo, false);
                            //TDB.TDBTableRecordRemove(dbIndex, name, record.RecNo);
                            continue;
                        }

                        string[] keyArray         = null;
                        int[]    valueArray       = null;
                        float[]  floatArray       = null;
                        string[] stringValueArray = null;

                        record.GetChangedIntFields(ref keyArray, ref valueArray);

                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            TDB.TDBFieldSetValueAsInteger(dbIndex, name, keyArray[i], record.RecNo, valueArray[i]);
                        }

                        keyArray = null;
                        record.GetChangedStringFields(ref keyArray, ref stringValueArray);

                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            TDB.TDBFieldSetValueAsString(dbIndex, name, keyArray[i], record.RecNo, stringValueArray[i]);
                        }

                        keyArray = null;
                        record.GetChangedFloatFields(ref keyArray, ref floatArray);
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            TDB.TDBFieldSetValueAsFloat(dbIndex, name, keyArray[i], record.RecNo, floatArray[i]);
                        }

                        record.DiscardBackups();
                    }
                }
            }

            //TDB.TDBDatabaseCompact(dbIndex);
            //TDB.TDBSave(dbIndex);
        }
Ejemplo n.º 6
0
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            TDB f4 = new TDB();

            f4.ShowDialog();
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 检测未发送短信
        /// </summary>
        /// <returns></returns>
        public static ActionResultVM SmsNotSent()
        {
            var vm             = new ActionResultVM();
            var listPrimaryKey = new List <string>();

            try
            {
                string connectionString = string.Empty;

                //查询SQL
                var querySql = GlobalTo.GetValue("Task:QuerySql");

                DataTable dt = null;

                //数据源连接字符串
                if (Enum.TryParse(GlobalTo.GetValue("TypeDB"), true, out TypeDB TDB))
                {
                    connectionString = GlobalTo.Configuration.GetConnectionString(TDB.ToString());
                    switch (TDB)
                    {
                    case TypeDB.MySQL:
                        dt = new Data.MySQL.MySQLHelper(connectionString).Query(querySql).Tables[0];
                        break;

                    case TypeDB.SQLite:
                        dt = new Data.SQLite.SQLiteHelper(connectionString).Query(querySql).Tables[0];
                        break;

                    case TypeDB.Oracle:
                        dt = new Data.Oracle.OracleHelper(connectionString).Query(querySql).Tables[0];
                        break;

                    case TypeDB.SQLServer:
                        dt = new Data.SQLServer.SQLServerHelper(connectionString).Query(querySql).Tables[0];
                        break;

                    case TypeDB.PostgreSQL:
                        dt = new Data.PostgreSQL.PostgreSQLHelper(connectionString).Query(querySql).Tables[0];
                        break;
                    }
                }

                if (dt.Rows.Count > 0)
                {
                    var listPhoneNumber       = new List <string>();
                    var listSignName          = new List <string>();
                    var TemplateCode          = string.Empty;
                    var listTemplateParamJson = new List <string>();

                    //表列名
                    var colPrimaryKey    = GlobalTo.GetValue("Task:TableColumn:PrimaryKey");
                    var colPhoneNumber   = GlobalTo.GetValue("Task:TableColumn:PhoneNumber");
                    var colSignName      = GlobalTo.GetValue("Task:TableColumn:SignName");
                    var colTemplateCode  = GlobalTo.GetValue("Task:TableColumn:TemplateCode");
                    var colTemplateParam = GlobalTo.GetValue("Task:TableColumn:TemplateParam");

                    foreach (DataRow dr in dt.Rows)
                    {
                        listPrimaryKey.Add(dr[colPrimaryKey].ToString());

                        listPhoneNumber.Add(dr[colPhoneNumber].ToString());
                        listSignName.Add(dr[colSignName].ToString());
                        if (string.IsNullOrWhiteSpace(TemplateCode))
                        {
                            TemplateCode = dr[colTemplateCode].ToString();
                        }
                        listTemplateParamJson.Add(dr[colTemplateParam].ToString());
                    }

                    //发送参数
                    var dicAddQuery = new Dictionary <string, string>
                    {
                        { "PhoneNumberJson", listPhoneNumber.ToJson() },
                        { "SignNameJson", listSignName.ToJson() },
                        { "TemplateCode", TemplateCode },
                        { "TemplateParamJson", listTemplateParamJson.ToJson() }
                    };

                    //调用发送方法
                    vm = SmsService.SendBatchSms(dicAddQuery);

                    //发送成功
                    if (vm.Code == 200)
                    {
                        //修改状态
                        var updateSql = GlobalTo.GetValue("Task:UpdateSql");
                        updateSql = string.Format(updateSql, "'" + string.Join("','", listPrimaryKey) + "'");

                        int num = 0;

                        switch (TDB)
                        {
                        case TypeDB.MySQL:
                            num = new Data.MySQL.MySQLHelper(connectionString).ExecuteNonQuery(updateSql);
                            break;

                        case TypeDB.SQLite:
                            num = new Data.SQLite.SQLiteHelper(connectionString).ExecuteNonQuery(updateSql);
                            break;

                        case TypeDB.Oracle:
                            num = new Data.Oracle.OracleHelper(connectionString).ExecuteNonQuery(updateSql);
                            break;

                        case TypeDB.SQLServer:
                            num = new Data.SQLServer.SQLServerHelper(connectionString).ExecuteNonQuery(updateSql);
                            break;

                        case TypeDB.PostgreSQL:
                            num = new Data.PostgreSQL.PostgreSQLHelper(connectionString).ExecuteNonQuery(updateSql);
                            break;
                        }

                        if (num <= 0)
                        {
                            vm.Msg += "(修改发送状态失败)";
                        }
                    }
                }
                else
                {
                    vm.Set(ARTag.lack);
                }
            }
            catch (Exception ex)
            {
                vm.Set(ex);
            }

            //日志记录
            if (GlobalTo.GetValue <bool>("Logs:Enable"))
            {
                Core.ConsoleTo.Log(new { vm, listPrimaryKey }.ToJson() + Environment.NewLine);
            }

            return(vm);
        }