예제 #1
0
        public static int Import(List <string> args)
        {
            if (args.Count < 3)
            {
                Console.WriteLine("Usage: scr Database GracesJapanese");
                return(-1);
            }

            string InFile         = args[0];
            string OutDatabase    = args[1];
            string GracesJapanese = args[2];
            var    bscrFile       = new HyoutaTools.Narisokonai.scr(System.IO.File.ReadAllBytes(InFile));

            GraceNoteUtil.GenerateEmptyDatabase(OutDatabase);
            if (!System.IO.File.Exists(GracesJapanese))
            {
                GraceNoteUtil.GenerateEmptyGracesJapanese(GracesJapanese);
            }

            List <GraceNoteDatabaseEntry> Entries = new List <GraceNoteDatabaseEntry>();

            foreach (var sec in bscrFile.Sections)
            {
                if (sec.Elements == null)
                {
                    continue;                                         // dummy section
                }
                GraceNoteDatabaseEntry gn;

                foreach (var e in sec.Elements)
                {
                    switch (e.Type)
                    {
                    case HyoutaTools.Narisokonai.scrElement.scrElementType.Code:
                        StringBuilder sb = new StringBuilder();
                        for (int i = 0; i < e.Code.Length; ++i)
                        {
                            sb.Append('<').Append(e.Code[i].ToString("X2")).Append("> ");
                        }
                        gn = new GraceNoteDatabaseEntry(sb.ToString(), sb.ToString(), "", -1, (int)sec.Location, e.Type.ToString(), sec.PointerIndex);
                        break;

                    case HyoutaTools.Narisokonai.scrElement.scrElementType.Text:
                        gn = new GraceNoteDatabaseEntry(e.Text, e.Text, "", 0, (int)sec.Location, e.Type.ToString(), sec.PointerIndex);
                        break;

                    default:
                        throw new Exception("scrImport: Unknown Element Type!");
                    }
                    Entries.Add(gn);
                }
            }

            GraceNoteDatabaseEntry.InsertSQL(Entries.ToArray(), "Data Source=" + OutDatabase, "Data Source=" + GracesJapanese);

            return(0);
        }
예제 #2
0
        public static int Import( List<string> args )
        {
            if ( args.Count < 3 ) {
                Console.WriteLine( "Usage: scr Database GracesJapanese" );
                return -1;
            }

            string InFile = args[0];
            string OutDatabase = args[1];
            string GracesJapanese = args[2];
            var bscrFile = new HyoutaTools.Narisokonai.scr( System.IO.File.ReadAllBytes( InFile ) );
            System.IO.File.WriteAllBytes( OutDatabase, Properties.Resources.gndb_template );
            if ( !System.IO.File.Exists( GracesJapanese ) ) { System.IO.File.WriteAllBytes( GracesJapanese, Properties.Resources.gngj_template ); }

            List<GraceNoteDatabaseEntry> Entries = new List<GraceNoteDatabaseEntry>();
            foreach ( var sec in bscrFile.Sections ) {
                if ( sec.Elements == null ) continue; // dummy section
                GraceNoteDatabaseEntry gn;

                foreach ( var e in sec.Elements ) {
                    switch ( e.Type ) {
                        case HyoutaTools.Narisokonai.scrElement.scrElementType.Code:
                            StringBuilder sb = new StringBuilder();
                            for ( int i = 0; i < e.Code.Length; ++i ) {
                                sb.Append( '<' ).Append( e.Code[i].ToString( "X2" ) ).Append( "> " );
                            }
                            gn = new GraceNoteDatabaseEntry( sb.ToString(), sb.ToString(), "", -1, (int)sec.Location, e.Type.ToString(), sec.PointerIndex );
                            break;
                        case HyoutaTools.Narisokonai.scrElement.scrElementType.Text:
                            gn = new GraceNoteDatabaseEntry( e.Text, e.Text, "", 0, (int)sec.Location, e.Type.ToString(), sec.PointerIndex );
                            break;
                        default:
                            throw new Exception("scrImport: Unknown Element Type!");
                    }
                    Entries.Add( gn );
                }
            }

            GraceNoteDatabaseEntry.InsertSQL( Entries.ToArray(), "Data Source=" + OutDatabase, "Data Source=" + GracesJapanese );

            return 0;
        }