Convert gen.db to use abstract base classes

This commit is contained in:
Nick Hall 2016-06-23 19:33:05 +01:00
parent fe9af29bf5
commit f0210825de
3 changed files with 288 additions and 229 deletions

File diff suppressed because it is too large Load Diff

View File

@ -3,11 +3,12 @@
# Standard python modules # Standard python modules
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
from abc import ABCMeta, abstractmethod
import time import time
import pickle import pickle
from collections import deque from collections import deque
class DbUndo: class DbUndo(metaclass=ABCMeta):
""" """
Base class for the Gramps undo/redo manager. Needs to be subclassed Base class for the Gramps undo/redo manager. Needs to be subclassed
for use with a real backend. for use with a real backend.
@ -65,56 +66,56 @@ class DbUndo:
self.close() self.close()
return exc_type is None return exc_type is None
@abstractmethod
def open(self, value): def open(self, value):
""" """
Open the backing storage. Needs to be overridden in the derived Open the backing storage. Needs to be overridden in the derived
class. class.
""" """
raise NotImplementedError
@abstractmethod
def close(self): def close(self):
""" """
Close the backing storage. Needs to be overridden in the derived Close the backing storage. Needs to be overridden in the derived
class. class.
""" """
raise NotImplementedError
@abstractmethod
def append(self, value): def append(self, value):
""" """
Add a new entry on the end. Needs to be overridden in the derived Add a new entry on the end. Needs to be overridden in the derived
class. class.
""" """
raise NotImplementedError
@abstractmethod
def __getitem__(self, index): def __getitem__(self, index):
""" """
Returns an entry by index number. Needs to be overridden in the Returns an entry by index number. Needs to be overridden in the
derived class. derived class.
""" """
raise NotImplementedError
@abstractmethod
def __setitem__(self, index, value): def __setitem__(self, index, value):
""" """
Set an entry to a value. Needs to be overridden in the derived class. Set an entry to a value. Needs to be overridden in the derived class.
""" """
raise NotImplementedError
@abstractmethod
def __len__(self): def __len__(self):
""" """
Returns the number of entries. Needs to be overridden in the derived Returns the number of entries. Needs to be overridden in the derived
class. class.
""" """
raise NotImplementedError
def __redo(self, update_history): @abstractmethod
def _redo(self, update_history):
""" """
""" """
raise NotImplementedError
def __undo(self, update_history): @abstractmethod
def _undo(self, update_history):
""" """
""" """
raise NotImplementedError
def commit(self, txn, msg): def commit(self, txn, msg):
""" """

View File

@ -2014,3 +2014,60 @@ class DBAPI(DbGeneric):
summary = super().get_summary() summary = super().get_summary()
summary.update(self.dbapi.__class__.get_summary()) summary.update(self.dbapi.__class__.get_summary())
return summary return summary
# TODO: The following abstract methods need implementing.
# See bug #9547.
def add_family_event(event, transaction):
pass
def add_person_event(event, transaction):
pass
def all_handles(table):
pass
def commit_base(obj, data_map, key, transaction, change_time):
pass
def commit_family_event(event, transaction, change_time):
pass
def commit_personal_event(event, transaction, change_time):
pass
def delete_primary_from_reference_map(handle, transaction):
pass
def get_from_handle(handle, class_type, data_map):
pass
def get_reference_map_cursor():
pass
def get_reference_map_primary_cursor():
pass
def get_reference_map_referenced_cursor():
pass
def gramps_upgrade():
pass
def need_schema_upgrade():
pass
def set_auto_remove():
pass
def set_redo_callback(callback):
pass
def set_undo_callback(callback):
pass
def sort_surname_list():
pass
def update_reference_map(obj, transaction):
pass