示例#1
0
 private void mergeDatabasesToolStripMenuItem_Click(object sender, EventArgs e)
 {
     openFileDialog.FilterIndex = 2;
     openFileDialog.FileName = fileName.Replace(".bin", "Differences.xml");
     if (openFileDialog.ShowDialog() == DialogResult.OK) {
         try {
             DatabaseFile two = new DatabaseFile(openFileDialog.FileName);
             openFileDialog.Dispose();
             dbFile.Merge(two);
         }
         catch (Exception ex) {
             MessageBox.Show("The program failed to merge the files:" + Environment.NewLine + Environment.NewLine + ex.Message, "Ryder Database Editor", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
 }
示例#2
0
 private void openController(string path, int conversionType, int i)
 {
     try
     {
         if (i == schemaPaths.Count)
         {
             MessageBox.Show("The program failed to convert!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         else
         {
             switch (conversionType) {
                 case 0:
                     ClearInterface();
                     dbFile = new DatabaseFile(path, schemaPaths[i]);
                     WriteErrorLog(dbFile.LoadErrors);
                     for (int j = 0; j < dbFile.Tables.Count; j++) {
                         tableListBox.Items.Add(dbFile.Tables[j].TableName);
                     }
                     fileName = path;
                     this.Text = "Ego Database Editor - " + path;
                     break;
                 case 1:
                     dbFile.Write(File.Open(path, FileMode.Create, FileAccess.Write, FileShare.Read));
                     this.Text = "Ego Database Editor - " + path;
                     break;
                 case 2:
                     ClearInterface();
                     dbFile = new DatabaseFile(path);
                     WriteErrorLog(dbFile.LoadErrors);
                     for (int j = 0; j < dbFile.Tables.Count; j++) {
                         tableListBox.Items.Add(dbFile.Tables[j].TableName);
                     }
                     fileName = path;
                     this.Text = "Ego Database Editor - " + path;
                     break;
                 case 3:
                     dbFile.WriteXML(path);
                     this.Text = "Ego Database Editor - " + path;
                     break;
                 default:
                     MessageBox.Show("Incorrect Conversion Type! 0 - binToXml, 1 - xmlToBin", "Incorrect Conversion Type", MessageBoxButtons.OK, MessageBoxIcon.Error);
                     break;
             }
         }
     }
     catch
     {
         if (conversionType == 0) {
             openController(path, conversionType, i + 1);
         } else {
             openController(string.Empty, -1, schemaPaths.Count);
         }
     }
 }
示例#3
0
 private void compareDatabasesToolStripMenuItem_Click(object sender, EventArgs e)
 {
     openFileDialog.FilterIndex = 1;
     if (openFileDialog.ShowDialog() == DialogResult.OK)
     {
         DatabaseFile two = new DatabaseFile(openFileDialog.FileName, Path.Combine(Application.StartupPath, dbFile.Namespace));
         openFileDialog.Dispose();
         saveFileDialog.FilterIndex = 2;
         saveFileDialog.FileName = fileName.Replace(".bin", "Differences.xml");
         if (saveFileDialog.ShowDialog() == DialogResult.OK)
         {
             dbFile.GetDifferences(two).WriteXML(saveFileDialog.FileName);
             saveFileDialog.Dispose();
         }
         try {
         }
         catch (Exception ex) {
             MessageBox.Show("The program failed to compare the files:" + Environment.NewLine + Environment.NewLine + ex.Message, "Ryder Database Editor", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
 }
示例#4
0
 public void ClearInterface()
 {
     this.Text = "Ego Database Editor";
     dbFile = new DatabaseFile();
     tabControl.TabPages.Clear();
     tableListBox.Items.Clear();
 }
示例#5
0
 public Form1(string[] Args)
 {
     InitializeComponent();
     tmppppToolStripMenuItem.Visible = false;
     this.Icon = Icon.ExtractAssociatedIcon(System.Reflection.Assembly.GetExecutingAssembly().Location);
     dbFile = new DatabaseFile();
     // Load Schema List
     foreach (string schemaPath in Directory.GetFiles(Application.StartupPath, "schema*.xml", SearchOption.TopDirectoryOnly))
     {
         schemaPaths.Add(schemaPath);
     }
     if (Args.Length > 0)
     {
         if (File.Exists(Args[0]) == true)
         {
             openController(Args[0], 0, 0);
             openFileDialog.FileName = fileName;
         }
     }
 }
        public DatabaseFile GetDifferences(DatabaseFile compare)
        {
            List <string> list = new List <string>();
            DatabaseFile  file = new DatabaseFile
            {
                DataSetName = base.DataSetName,
                Namespace   = base.Namespace
            };

            foreach (DataTable table in base.Tables)
            {
                file.Tables.Add(table.Clone());
            }
            file.EnforceConstraints = false;
            file.Relations.Clear();
            foreach (DataTable table2 in compare.Tables)
            {
                int ordinal;
                int num2;
                if (!base.Tables.Contains(table2.TableName))
                {
                    throw new ArgumentException("The files contain a different amount of tables!");
                }
                DataTable table3 = table2.Copy();
                DataTable table4 = base.Tables[table3.TableName].Copy();
                if (base.Tables[table4.TableName].PrimaryKey.Length == 0)
                {
                    if (base.Tables[table4.TableName].Columns.Contains("ID"))
                    {
                        ordinal = base.Tables[table4.TableName].Columns["ID"].Ordinal;
                        goto Label_01B2;
                    }
                    list.Add(table4.TableName);
                    continue;
                }
                ordinal = base.Tables[table4.TableName].PrimaryKey[0].Ordinal;
Label_01B2:
                num2 = 0;
                while (num2 < table4.Rows.Count)
                {
                    for (int j = 0; j < table3.Rows.Count; j++)
                    {
                        if (!((table3.Rows[j].RowState != DataRowState.Deleted) && table4.Rows[num2].ItemArray[ordinal].Equals(table3.Rows[j].ItemArray[ordinal])))
                        {
                            continue;
                        }
                        for (int k = 0; k < table3.Rows[j].ItemArray.Length; k++)
                        {
                            if (!table4.Rows[num2].ItemArray[k].Equals(table3.Rows[j].ItemArray[k]))
                            {
                                file.Tables[table3.TableName].ImportRow(table3.Rows[j]);
                                break;
                            }
                        }
                        table3.Rows.RemoveAt(j);
                        break;
                    }
                    num2++;
                }
                foreach (DataRow row in table3.Rows)
                {
                    file.Tables[table3.TableName].ImportRow(row);
                }
            }
            string str = Environment.NewLine + Environment.NewLine;

            for (int i = 0; i < list.Count; i++)
            {
                str = str + list[i] + ", ";
            }
            str.Remove(str.Length - 2);
            //MessageBox.Show("NOTE: Deleted Rows and any rows from the following tables were not tested for:" + str, "Ryder Database Editor - Compare", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            file.AcceptChanges();
            return(file);
        }
 public DatabaseFile GetDifferences(DatabaseFile compare)
 {
     List<string> list = new List<string>();
     DatabaseFile file = new DatabaseFile
     {
         DataSetName = base.DataSetName,
         Namespace = base.Namespace
     };
     foreach (DataTable table in base.Tables)
     {
         file.Tables.Add(table.Clone());
     }
     file.EnforceConstraints = false;
     file.Relations.Clear();
     foreach (DataTable table2 in compare.Tables)
     {
         int ordinal;
         int num2;
         if (!base.Tables.Contains(table2.TableName))
         {
             throw new ArgumentException("The files contain a different amount of tables!");
         }
         DataTable table3 = table2.Copy();
         DataTable table4 = base.Tables[table3.TableName].Copy();
         if (base.Tables[table4.TableName].PrimaryKey.Length == 0)
         {
             if (base.Tables[table4.TableName].Columns.Contains("ID"))
             {
                 ordinal = base.Tables[table4.TableName].Columns["ID"].Ordinal;
                 goto Label_01B2;
             }
             list.Add(table4.TableName);
             continue;
         }
         ordinal = base.Tables[table4.TableName].PrimaryKey[0].Ordinal;
     Label_01B2:
         num2 = 0;
         while (num2 < table4.Rows.Count)
         {
             for (int j = 0; j < table3.Rows.Count; j++)
             {
                 if (!((table3.Rows[j].RowState != DataRowState.Deleted) && table4.Rows[num2].ItemArray[ordinal].Equals(table3.Rows[j].ItemArray[ordinal])))
                 {
                     continue;
                 }
                 for (int k = 0; k < table3.Rows[j].ItemArray.Length; k++)
                 {
                     if (!table4.Rows[num2].ItemArray[k].Equals(table3.Rows[j].ItemArray[k]))
                     {
                         file.Tables[table3.TableName].ImportRow(table3.Rows[j]);
                         break;
                     }
                 }
                 table3.Rows.RemoveAt(j);
                 break;
             }
             num2++;
         }
         foreach (DataRow row in table3.Rows)
         {
             file.Tables[table3.TableName].ImportRow(row);
         }
     }
     string str = Environment.NewLine + Environment.NewLine;
     for (int i = 0; i < list.Count; i++)
     {
         str = str + list[i] + ", ";
     }
     str.Remove(str.Length - 2);
     MessageBox.Show("NOTE: Deleted Rows and any rows from the following tables were not tested for:" + str, "Ryder Database Editor - Compare", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
     file.AcceptChanges();
     return file;
 }