"""
__author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2007-2012 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2007-2015 PhiloSoft Design"
__license__ = "GNU GPL"
-import sys, os, shelve
+import sys
+from sqlobject import SQLObjectNotFound, sqlhub
+from sqlobject.sqlbuilder import Insert
+from m_lib.defenc import default_encoding
+from xsetbg_db import SqliteSequence, XSetBg, xsetbg_db
-xsetbg_dir = os.path.join(os.environ["HOME"], "lib", "xsetbg")
-os.chdir(xsetbg_dir)
-
-global_db_name = "xsetbg.db"
dump_file = open(sys.argv[1], 'rU')
-global_db = shelve.open(global_db_name, flag='n')
+if xsetbg_db:
+ try:
+ seq = SqliteSequence.byName(XSetBg.sqlmeta.table)
+ except SQLObjectNotFound:
+ SqliteSequence(name=XSetBg.sqlmeta.table, seq=0)
+ else:
+ seq.seq = 0 # Reset autoincrement counter
+ xsetbg_db.clearTable()
+else:
+ xsetbg_db = XSetBg
+ xsetbg_db.createTable()
+
+def convert_str(s):
+ if s == "None":
+ return None
+ else:
+ return int(float(s))
+
+connection = xsetbg_db._connection
+
+connection.query("PRAGMA synchronous=OFF")
+connection.query("PRAGMA count_changes=OFF")
+connection.query("PRAGMA journal_mode=MEMORY")
+connection.query("PRAGMA temp_store=MEMORY")
+
+txn = connection.transaction()
+sqlhub.processConnection = txn
+
for line in dump_file:
- timestamp, filename = line.strip().split(None, 1)
- global_db[filename] = float(timestamp)
-global_db.close()
+ id, timestamp, filename = line.strip().split(None, 2)
+ id = convert_str(id)
+ timestamp = convert_str(timestamp)
+ if default_encoding != 'utf-8':
+ filename = filename.decode(default_encoding).encode('utf-8')
+ values = {'last_shown': timestamp, 'full_name': filename}
+ if id:
+ values['id'] = id
+ query = txn.sqlrepr(Insert(XSetBg.sqlmeta.table, values=values))
+ txn.query(query)
+
+txn.commit()
+sqlhub.processConnection = connection
+
dump_file.close()