public static int Import(List <string> args) { if (args.Count < 3) { Console.WriteLine("Usage: sscr Database GracesJapanese"); return(-1); } string InFile = args[0]; string OutDatabase = args[1]; string GracesJapanese = args[2]; SSCR SscrFile = new SSCR(System.IO.File.ReadAllBytes(InFile)); GraceNoteUtil.GenerateEmptyDatabase(OutDatabase); List <GraceNoteDatabaseEntry> Entries = new List <GraceNoteDatabaseEntry>(SscrFile.Names.Count + SscrFile.SystemTerms.Count + SscrFile.Somethings.Count); foreach (var x in SscrFile.Names) { Entries.Add(new GraceNoteDatabaseEntry(x.Name, x.Name, "", 0, 1, x.Id, (int)x.Unknown)); } foreach (var x in SscrFile.SystemTerms) { Entries.Add(new GraceNoteDatabaseEntry(x.Term, x.Term, "", 0, 2, "", (int)x.Unknown)); } foreach (var x in SscrFile.Somethings) { Entries.Add(new GraceNoteDatabaseEntry(x.Text, x.Text, "", 0, 3, x.Id, (int)x.Unknown4)); } GraceNoteDatabaseEntry.InsertSQL(Entries.ToArray(), "Data Source=" + OutDatabase, "Data Source=" + GracesJapanese); return(0); }
public static int Export(List <string> args) { if (args.Count < 2) { Console.WriteLine("Usage: original.sscr db new.sscr"); return(-1); } string SourceFile = args[0]; string InDatabase = args[1]; string OutFile = args[2]; SSCR SscrFile = new SSCR(System.IO.File.ReadAllBytes(SourceFile)); ReadDatabase(SscrFile, "Data Source=" + InDatabase); SscrFile.CreateFile(OutFile); return(0); }
public static void ReadDatabase(SSCR SscrFile, string ConnectionString) { SQLiteConnection Connection = new SQLiteConnection(ConnectionString); Connection.Open(); using (SQLiteTransaction Transaction = Connection.BeginTransaction()) using (SQLiteCommand Command = new SQLiteCommand(Connection)) { Command.CommandText = "SELECT english, PointerRef FROM Text ORDER BY ID"; SQLiteDataReader r = Command.ExecuteReader(); int NameCounter = 0; int SysTextCounter = 0; int SomethingCounter = 0; while (r.Read()) { String SQLText; try { SQLText = r.GetString(0).Replace("''", "'"); } catch (System.InvalidCastException) { SQLText = ""; } int PointerRef = r.GetInt32(1); switch (PointerRef) { case 1: SscrFile.Names[NameCounter].Name = SQLText; NameCounter++; break; case 2: SscrFile.SystemTerms[SysTextCounter].Term = SQLText; SysTextCounter++; break; case 3: SscrFile.Somethings[SomethingCounter].Text = SQLText; SomethingCounter++; break; } } Transaction.Rollback(); } return; }