Example #1
0
        /// <summary>
        /// Write complete route db into the supplied database as one transaction
        /// </summary>
        /// <param name="db">The route db to dump</param>
        /// <param name="sqConnection">The db connection</param>
        /// <returns>The result string, either empty or error</returns>
        public static string WriteSqDB(rtDatabase db, SQLiteConnection sqConnection)
        {
            string ret = "";

            using (SQLiteCommand sqlite_cmd = sqConnection.CreateCommand( )) {
                sqlite_cmd.CommandText = "BEGIN TRANSACTION;";
                sqlite_cmd.ExecuteNonQuery( );
                try {
                    foreach (var c in PREFIXES)
                    {
                        ret = WriteFile(sqConnection, db.GetSubtable(c.ToString( )));
                    }
                    sqlite_cmd.CommandText = "COMMIT;";
                    sqlite_cmd.ExecuteNonQuery( );
                }
                catch {
                    sqlite_cmd.CommandText = "ROLLBACK;";
                    sqlite_cmd.ExecuteNonQuery( );
                }
                finally {
                    if (!string.IsNullOrEmpty(ret))
                    {
                        ret = $"ERROR - inserting rows failed: {ret}\n";
                    }
                }
            }
            return(ret);
        }
Example #2
0
 /// <summary>
 /// Write the route db as CSV formatted file
 /// </summary>
 /// <param name="db">The database to dump</param>
 /// <param name="csvOutStream">The stream to write to</param>
 /// <returns>True for success</returns>
 public static bool WriteCsv(rtDatabase db, Stream csvOutStream)
 {
     using (var sw = new StreamWriter(csvOutStream, Encoding.UTF8)) {
         sw.WriteLine(rtRec.CsvHeader);
         foreach (var c in PREFIXES)
         {
             WriteFile(sw, db.GetSubtable(c.ToString( )));
         }
     }
     return(true);
 }
Example #3
0
        /// <summary>
        /// Write the route db as FA formatted Json files into the given folder
        /// </summary>
        /// <param name="db">The database to dump</param>
        /// <param name="dbFolder">The folder to write to</param>
        /// <returns>True for success</returns>
        public static bool WriteDb(rtDatabase db, string dbFolder)
        {
            if (!Directory.Exists(dbFolder))
            {
                return(false);
            }

            Dictionary <string, int> prefixes = new Dictionary <string, int>( );

            foreach (var c in PREFIXES)
            {
                DecomposeTable(dbFolder, db.GetSubtable(c.ToString( ))); // level one get always decomposed
            }
            return(true);
        }