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 ) ); System.IO.File.WriteAllBytes( OutDatabase, Properties.Resources.gndb_template ); 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; }