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
#
#-------------------------------------------------------------------------
from abc import ABCMeta, abstractmethod
import time
import pickle
from collections import deque
class DbUndo:
class DbUndo(metaclass=ABCMeta):
"""
Base class for the Gramps undo/redo manager. Needs to be subclassed
for use with a real backend.
@ -65,56 +66,56 @@ class DbUndo:
self.close()
return exc_type is None
@abstractmethod
def open(self, value):
"""
Open the backing storage. Needs to be overridden in the derived
class.
"""
raise NotImplementedError
@abstractmethod
def close(self):
"""
Close the backing storage. Needs to be overridden in the derived
class.
"""
raise NotImplementedError
@abstractmethod
def append(self, value):
"""
Add a new entry on the end. Needs to be overridden in the derived
class.
"""
raise NotImplementedError
@abstractmethod
def __getitem__(self, index):
"""
Returns an entry by index number. Needs to be overridden in the
derived class.
"""
raise NotImplementedError
@abstractmethod
def __setitem__(self, index, value):
"""
Set an entry to a value. Needs to be overridden in the derived class.
"""
raise NotImplementedError
@abstractmethod
def __len__(self):
"""
Returns the number of entries. Needs to be overridden in the derived
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):
"""

View File

@ -2014,3 +2014,60 @@ class DBAPI(DbGeneric):
summary = super().get_summary()
summary.update(self.dbapi.__class__.get_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