* src/GrampsInMemDB.py: new base class for in memory databases, such

as XML or GEDCOM
* src/GrampGEDDB.py: use new GrampsInMemDB base class
* src/GrampXMLDB.py: use new GrampsInMemDB base class
* src/Makefile.am: add GrampsInMemDB.py
* src/ReadGedcom.py: remove debug statements


svn: r3555
This commit is contained in:
Don Allingham 2004-09-19 04:11:34 +00:00
parent b9d8abee14
commit d382d7b094
9 changed files with 177 additions and 130 deletions

View File

@ -1,3 +1,11 @@
2004-09-18 Don Allingham <dallingham@users.sourceforge.net>
* src/GrampsInMemDB.py: new base class for in memory databases, such
as XML or GEDCOM
* src/GrampGEDDB.py: use new GrampsInMemDB base class
* src/GrampXMLDB.py: use new GrampsInMemDB base class
* src/Makefile.am: add GrampsInMemDB.py
* src/ReadGedcom.py: remove debug statements
2004-09-18 Alex Roitman <shura@alex.neuro.umn.edu> 2004-09-18 Alex Roitman <shura@alex.neuro.umn.edu>
* src/DateEdit.py (DateEdit): Take care of both the button and * src/DateEdit.py (DateEdit): Take care of both the button and
the LED pixmap now; Invoke DateEditorDialog if the button is pressed; the LED pixmap now; Invoke DateEditorDialog if the button is pressed;

View File

@ -184,7 +184,7 @@ class GrampsBSDDB(GrampsDbBase):
transaction.add(SOURCE_KEY,handle,old_data) transaction.add(SOURCE_KEY,handle,old_data)
self.source_map.delete(str(handle)) self.source_map.delete(str(handle))
def remove_family_handle(self,handle,transaction): def remove_family(self,handle,transaction):
if transaction != None: if transaction != None:
old_data = self.family_map.get(str(handle)) old_data = self.family_map.get(str(handle))
transaction.add(FAMILY_KEY,handle,old_data) transaction.add(FAMILY_KEY,handle,old_data)

View File

@ -21,7 +21,7 @@
# $Id$ # $Id$
from RelLib import * from RelLib import *
from GrampsDbBase import * from GrampsInMemDB import *
import ReadGedcom import ReadGedcom
import WriteGedcom import WriteGedcom
@ -31,27 +31,16 @@ import WriteGedcom
# GrampsGEDDB # GrampsGEDDB
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class GrampsGEDDB(GrampsDbBase): class GrampsGEDDB(GrampsInMemDB):
"""GRAMPS database object. This object is a base class for other """GRAMPS database object. This object is a base class for other
objects.""" objects."""
def __init__(self): def __init__(self):
"""creates a new GrampsDB""" """creates a new GrampsDB"""
GrampsDbBase.__init__(self) GrampsInMemDB.__init__(self)
def load(self,name,callback): def load(self,name,callback):
self.person_map = {}
self.family_map = {}
self.place_map = {}
self.source_map = {}
self.media_map = {}
self.event_map = {}
self.metadata = {}
self.filename = name self.filename = name
self.id_trans = {}
self.eventnames = {}
self.undodb = []
ReadGedcom.importData(self,name) ReadGedcom.importData(self,name)
self.bookmarks = self.metadata.get('bookmarks') self.bookmarks = self.metadata.get('bookmarks')
@ -63,46 +52,3 @@ class GrampsGEDDB(GrampsDbBase):
writer = WriteGedcom.GedcomWriter(self,self.get_default_person()) writer = WriteGedcom.GedcomWriter(self,self.get_default_person())
writer.export_data(self.filename) writer.export_data(self.filename)
def get_surname_list(self):
a = {}
for person_id in self.get_person_handles(sort_handles=False):
p = self.get_person_from_handle(person_id)
a[p.get_primary_name().get_surname()] = 1
vals = a.keys()
vals.sort()
return vals
def get_person_event_type_list(self):
names = self.eventnames.keys()
a = {}
for name in names:
a[unicode(name)] = 1
vals = a.keys()
vals.sort()
return vals
def remove_person(self,handle,transaction):
self.genderStats.uncount_person (self.person_map[handle])
if transaction != None:
old_data = self.person_map.get(handle)
transaction.add(PERSON_KEY,handle,old_data)
del self.person_map[handle]
def remove_source(self,handle,transaction):
if transaction != None:
old_data = self.source_map.get(str(handle))
transaction.add(SOURCE_KEY,handle,old_data)
del self.source_map[str(handle)]
def remove_family_handle(self,handle,transaction):
if transaction != None:
old_data = self.family_map.get(str(handle))
transaction.add(FAMILY_KEY,handle,old_data)
del self.family_map[str(handle)]
def remove_event(self,handle,transaction):
if transaction != None:
old_data = self.event_map.get(str(handle))
transaction.add(EVENT_KEY,handle,old_data)
del self.event_map[str(handle)]

160
src/GrampsInMemDB.py Normal file
View File

@ -0,0 +1,160 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2004 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# $Id$
from RelLib import *
from GrampsDbBase import *
import ReadGedcom
import WriteGedcom
#-------------------------------------------------------------------------
#
# GrampsInMemDB
#
#-------------------------------------------------------------------------
class GrampsInMemDB(GrampsDbBase):
"""GRAMPS database object. This object is a base class for other
objects."""
def __init__(self):
"""creates a new GrampsDB"""
GrampsDbBase.__init__(self)
self.person_map = {}
self.family_map = {}
self.place_map = {}
self.source_map = {}
self.media_map = {}
self.event_map = {}
self.metadata = {}
self.filename = ""
self.id_trans = {}
self.pid_trans = {}
self.fid_trans = {}
self.sid_trans = {}
self.oid_trans = {}
self.eventnames = {}
self.undodb = []
def load(self,name,callback):
pass
def close(self):
pass
def get_surname_list(self):
a = {}
for person_id in self.get_person_handles(sort_handles=False):
p = self.get_person_from_handle(person_id)
a[p.get_primary_name().get_surname()] = 1
vals = a.keys()
vals.sort()
return vals
def get_person_event_type_list(self):
names = self.eventnames.keys()
a = {}
for name in names:
a[unicode(name)] = 1
vals = a.keys()
vals.sort()
return vals
def remove_person(self,handle,transaction):
self.genderStats.uncount_person (self.person_map[handle])
if transaction != None:
old_data = self.person_map.get(handle)
transaction.add(PERSON_KEY,handle,old_data)
del self.id_trans[self.person_map[handle].get_gramps_id()]
del self.person_map[handle]
def remove_source(self,handle,transaction):
if transaction != None:
old_data = self.source_map.get(str(handle))
transaction.add(SOURCE_KEY,handle,old_data)
del self.sid_trans[self.source_map[handle].get_gramps_id()]
del self.source_map[str(handle)]
def remove_family(self,handle,transaction):
if transaction != None:
old_data = self.family_map.get(str(handle))
transaction.add(FAMILY_KEY,handle,old_data)
del self.fid_trans[self.family_map[handle].get_gramps_id()]
del self.family_map[str(handle)]
def remove_event(self,handle,transaction):
if transaction != None:
old_data = self.event_map.get(str(handle))
transaction.add(EVENT_KEY,handle,old_data)
del self.eid_trans[self.event_map[handle].get_gramps_id()]
del self.event_map[str(handle)]
def remove_family(self,handle,transaction):
if transaction != None:
old_data = self.family_map.get(str(handle))
transaction.add(EVENT_KEY,handle,old_data)
del self.fid_trans[self.family_map[handle].get_gramps_id()]
del self.family_map[str(handle)]
def commit_person(self,person,transaction,change_time=None):
id = person.get_gramps_id()
self.id_trans[id] = person.get_handle()
GrampsDbBase.commit_person(self,person,transaction,change_time)
def commit_place(self,place,transaction,change_time=None):
id = place.get_gramps_id()
self.pid_trans[id] = place.get_handle()
GrampsDbBase.commit_place(self,place,transaction,change_time)
def commit_family(self,family,transaction,change_time=None):
id = family.get_gramps_id()
self.fid_trans[id] = family.get_handle()
GrampsDbBase.commit_family(self,family,transaction,change_time)
def commit_media_object(self,obj,transaction,change_time=None):
id = obj.get_gramps_id()
self.oid_trans[id] = obj.get_handle()
GrampsDbBase.commit_media_object(self,obj,transaction,change_time)
def commit_source(self,source,transaction,change_time=None):
id = source.get_gramps_id()
self.sid_trans[id] = source.get_handle()
GrampsDbBase.commit_source(self,source,transaction,change_time)
def get_person_from_gramps_id(self,val):
handle = self.id_trans.get(str(val))
return self.person_map[handle]
def get_family_from_gramps_id(self,val):
handle = self.fid_trans.get(str(val))
return self.family_map[handle]
def get_place_from_gramps_id(self,val):
handle = self.pid_trans.get(str(val))
return self.place_map[handle]
def get_source_from_gramps_id(self,val):
handle = self.sid_trans.get(str(val))
return self.source_map[handle]
def get_object_from_gramps_id(self,val):
handle = self.oid_trans.get(str(val))
return self.media_map[handle]

View File

@ -21,45 +21,26 @@
# $Id$ # $Id$
from RelLib import * from RelLib import *
from GrampsDbBase import * from GrampsInMemDB import *
import ReadXML import ReadXML
import WriteXML import WriteXML
_UNDO_SIZE = 1000
#-------------------------------------------------------------------------
#
# ID regular expression
#
#-------------------------------------------------------------------------
_id_reg = compile("%\d+d")
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# GrampsXMLDB # GrampsXMLDB
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class GrampsXMLDB(GrampsDbBase): class GrampsXMLDB(GrampsInMemDB):
"""GRAMPS database object. This object is a base class for other """GRAMPS database object. This object is a base class for other
objects.""" objects."""
def __init__(self): def __init__(self):
"""creates a new GrampsDB""" """creates a new GrampsDB"""
GrampsDbBase.__init__(self) GrampsInMemDB.__init__(self)
def load(self,name,callback): def load(self,name,callback):
self.person_map = {}
self.family_map = {}
self.place_map = {}
self.source_map = {}
self.media_map = {}
self.event_map = {}
self.metadata = {}
self.filename = name
self.id_trans = {} self.id_trans = {}
self.eventnames = {}
self.undodb = []
ReadXML.importData(self,name) ReadXML.importData(self,name)
@ -71,46 +52,3 @@ class GrampsXMLDB(GrampsDbBase):
def close(self): def close(self):
WriteXML.quick_write(self,self.filename) WriteXML.quick_write(self,self.filename)
def get_surname_list(self):
a = {}
for person_id in self.get_person_handles(sort_handles=False):
p = self.get_person_from_handle(person_id)
a[p.get_primary_name().get_surname()] = 1
vals = a.keys()
vals.sort()
return vals
def get_person_event_type_list(self):
names = self.eventnames.keys()
a = {}
for name in names:
a[unicode(name)] = 1
vals = a.keys()
vals.sort()
return vals
def remove_person(self,handle,transaction):
self.genderStats.uncount_person (self.person_map[handle])
if transaction != None:
old_data = self.person_map.get(handle)
transaction.add(PERSON_KEY,handle,old_data)
del self.person_map[handle]
def remove_source(self,handle,transaction):
if transaction != None:
old_data = self.source_map.get(str(handle))
transaction.add(SOURCE_KEY,handle,old_data)
del self.source_map[str(handle)]
def remove_family_handle(self,handle,transaction):
if transaction != None:
old_data = self.family_map.get(str(handle))
transaction.add(FAMILY_KEY,handle,old_data)
del self.family_map[str(handle)]
def remove_event(self,handle,transaction):
if transaction != None:
old_data = self.event_map.get(str(handle))
transaction.add(EVENT_KEY,handle,old_data)
del self.event_map[str(handle)]

View File

@ -46,6 +46,7 @@ gdir_PYTHON = \
GrampsCfg.py\ GrampsCfg.py\
GrampsBSDDB.py\ GrampsBSDDB.py\
GrampsDbBase.py\ GrampsDbBase.py\
GrampsInMemDB.py\
GrampsXMLDB.py\ GrampsXMLDB.py\
GrampsGEDDB.py\ GrampsGEDDB.py\
GrampsMime.py\ GrampsMime.py\

View File

@ -1729,7 +1729,6 @@ class GedcomParser:
stop = self.dp.parse(data2) stop = self.dp.parse(data2)
dateobj.set(Date.QUAL_NONE, Date.MOD_RANGE, cal, dateobj.set(Date.QUAL_NONE, Date.MOD_RANGE, cal,
start.get_start_date() + stop.get_start_date()) start.get_start_date() + stop.get_start_date())
print dateobj
return dateobj return dateobj
match = spanRegexp.match(text) match = spanRegexp.match(text)
@ -1751,7 +1750,6 @@ class GedcomParser:
stop = self.dp.parse(data2) stop = self.dp.parse(data2)
dateobj.set(Date.QUAL_NONE, Date.MOD_SPAN, cal, dateobj.set(Date.QUAL_NONE, Date.MOD_SPAN, cal,
start.get_start_date() + stop.get_start_date()) start.get_start_date() + stop.get_start_date())
print dateobj
return dateobj return dateobj
match = calRegexp.match(text) match = calRegexp.match(text)
@ -1764,10 +1762,8 @@ class GedcomParser:
dateobj.set_calendar(Date.CAL_JULIAN) dateobj.set_calendar(Date.CAL_JULIAN)
elif cal == "HEBREW": elif cal == "HEBREW":
dateobj.set_calendar(Date.CAL_HEBREW) dateobj.set_calendar(Date.CAL_HEBREW)
print dateobj
return dateobj return dateobj
else: else:
print text, self.dp.parse(text)
return self.dp.parse(text) return self.dp.parse(text)
except IOError: except IOError:
return self.dp.set_text(text) return self.dp.set_text(text)
@ -1793,7 +1789,6 @@ class GedcomParser:
prefix = self.db.iprefix prefix = self.db.iprefix
index = 0 index = 0
new_pmax = self.db.pmap_index new_pmax = self.db.pmap_index
print self.added
for pid in self.added.keys(): for pid in self.added.keys():
index = index + 1 index = index + 1
if self.refn.has_key(pid): if self.refn.has_key(pid):

View File

@ -1408,7 +1408,6 @@ class LdsOrd(SourceNote):
def get_date(self) : def get_date(self) :
"""returns a string representation of the date of the ordinance""" """returns a string representation of the date of the ordinance"""
if self.date: if self.date:
print self.dd
return self.dd.display(self.date) return self.dd.display(self.date)
return u"" return u""

View File

@ -243,7 +243,7 @@ class CheckIntegrity:
child = self.db.get_person_from_handle(key) child = self.db.get_person_from_handle(key)
child.remove_parent_family_handle(family_handle) child.remove_parent_family_handle(family_handle)
child.remove_family_handle(family_handle) child.remove_family_handle(family_handle)
self.db.remove_family_handle(family_handle,self.trans) self.db.remove_family(family_handle,self.trans)
def check_parent_relationships(self): def check_parent_relationships(self):
for key in self.db.get_family_handles(): for key in self.db.get_family_handles():