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); } } }
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); } } }
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); } } }
public void ClearInterface() { this.Text = "Ego Database Editor"; dbFile = new DatabaseFile(); tabControl.TabPages.Clear(); tableListBox.Items.Clear(); }
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; }