[Igarden-commit] Garden/source/Database Persist.h, 1.20, 1.20.2.1 Persist.cp, 1.41.2.1, 1.41.2.2
Status: Beta
Brought to you by:
jlbedell
|
From: Jeffrey B. <jlb...@us...> - 2006-12-12 00:53:54
|
Update of /cvsroot/igarden/Garden/source/Database In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv28333 Modified Files: Tag: Release_branch_v1 Persist.h Persist.cp Log Message: Improve performance of startup by only merging source material when changed. Index: Persist.cp =================================================================== RCS file: /cvsroot/igarden/Garden/source/Database/Persist.cp,v retrieving revision 1.41.2.1 retrieving revision 1.41.2.2 diff -C2 -d -r1.41.2.1 -r1.41.2.2 *** Persist.cp 9 Dec 2006 21:33:43 -0000 1.41.2.1 --- Persist.cp 12 Dec 2006 00:53:52 -0000 1.41.2.2 *************** *** 1286,1290 **** /// ParseObjectXML // ! void DBPersist::ParseObjectXML(XGXMLObject *obj, bool useAttributes ) { XGXMLData *dataObj; --- 1286,1290 ---- /// ParseObjectXML // ! void DBPersist::ParseObjectXML(XGXMLObject *obj, bool useAttributes, xmlReadContext_t context ) { XGXMLData *dataObj; *************** *** 1355,1362 **** case kAttrDate: case kAttrURLSet: - case kAttrSuppliers: AttributeDictionary::ConvertXMLToValue(value, static_cast<attributeID_t>(propID), this); break; case kAttrInteger: SetInt32(propID, StringToInteger(value)); --- 1355,1365 ---- case kAttrDate: case kAttrURLSet: AttributeDictionary::ConvertXMLToValue(value, static_cast<attributeID_t>(propID), this); break; + case kAttrSuppliers: + AttributeDictionary::ConvertXMLToSupplierValue(value, static_cast<attributeID_t>(propID), context.modDate, this); + break; + case kAttrInteger: SetInt32(propID, StringToInteger(value)); *************** *** 1773,1777 **** /// MergeAttributesFrom // ! void DBPersist::MergeAttributesFrom( XGXMLObject *obj, mergeType_t mergeType ) { Int32 count, iter, srcVal, destVal; --- 1776,1780 ---- /// MergeAttributesFrom // ! void DBPersist::MergeAttributesFrom( XGXMLObject *obj, RGDateTime &fileDate, mergeType_t mergeType ) { Int32 count, iter, srcVal, destVal; *************** *** 1913,1916 **** --- 1916,1921 ---- case kAttrSuppliers: + AttributeDictionary::ConvertXMLToSupplierValue(src, (attributeID_t)propertyID, fileDate, this); + break; case kAttrColorSet: AttributeDictionary::ConvertXMLToValue(src, (attributeID_t)propertyID, this); *************** *** 2072,2073 **** --- 2077,2103 ---- return found; } + + // --------------------------------------------------------------------------- + /// GetDatedReference + // + bool DBPersist::GetLatestDatedReference( propertyID_t propertyID, RGDateTime& date ) + { + UInt32 n, numItems; + XGUUID id; + RGDateTime theDate; + + numItems = NumItems(propertyID); + for(n = 0; n < numItems; n++) + { + if(GetIndexedDatedReference(propertyID, n, id, theDate)) + { + if(n == 0 || theDate.GetDouble() > date.GetDouble()) + { + date = theDate; + } + } + } + + return numItems > 0; + } + Index: Persist.h =================================================================== RCS file: /cvsroot/igarden/Garden/source/Database/Persist.h,v retrieving revision 1.20 retrieving revision 1.20.2.1 diff -C2 -d -r1.20 -r1.20.2.1 *** Persist.h 17 Jun 2006 14:27:57 -0000 1.20 --- Persist.h 12 Dec 2006 00:53:52 -0000 1.20.2.1 *************** *** 42,45 **** --- 42,50 ---- } mergeType_t; + typedef struct + { + RGDateTime modDate; + } xmlReadContext_t; + using yaaf::XGXMLObject; *************** *** 52,56 **** virtual bool GetFlexCount(propertyID_t propertyID, FlexCount &count) = 0; virtual void SetFlexCount(propertyID_t propertyID, FlexCount &count) = 0; ! virtual void ParseObjectXML(XGXMLObject *obj, bool useAttributes) = 0; virtual void SaveObjectAsXML(RGXMLWriter &writer, bool useAttributes) = 0; virtual bool GetValueInt32Range(propertyID_t propertyID, Int32& lowerLimit, Int32& upperLimit) = 0; --- 57,61 ---- virtual bool GetFlexCount(propertyID_t propertyID, FlexCount &count) = 0; virtual void SetFlexCount(propertyID_t propertyID, FlexCount &count) = 0; ! virtual void ParseObjectXML(XGXMLObject *obj, bool useAttributes, xmlReadContext_t context ) = 0; virtual void SaveObjectAsXML(RGXMLWriter &writer, bool useAttributes) = 0; virtual bool GetValueInt32Range(propertyID_t propertyID, Int32& lowerLimit, Int32& upperLimit) = 0; *************** *** 152,162 **** DatabaseFile *GetFile() const { POSTCONDITION(_rsView->GetFile() != NULL); return _rsView->GetFile(); } void GetViewName(String &result) { result = _rsView->GetViewName(); } ! virtual void ParseObjectXML(XGXMLObject *obj, bool useAttributes); virtual void SaveObjectAsXML(RGXMLWriter &writer, bool useAttributes); bool CanAttributesBeMerged(XGXMLObject *obj); ! void MergeAttributesFrom(XGXMLObject *obj, mergeType_t mergeType); bool GetIndexedDatedReference( propertyID_t propertyID, Int32 index, XGUUID& resultID, RGDateTime& resultDate ); void SetDatedReference( propertyID_t propertyID, XGUUID& supplierID, RGDateTime& dtr ); bool GetDatedReference( propertyID_t propertyID, XGUUID& supplierID, RGDateTime& date ); View *_rsView; --- 157,168 ---- DatabaseFile *GetFile() const { POSTCONDITION(_rsView->GetFile() != NULL); return _rsView->GetFile(); } void GetViewName(String &result) { result = _rsView->GetViewName(); } ! virtual void ParseObjectXML(XGXMLObject *obj, bool useAttributes, xmlReadContext_t context ); virtual void SaveObjectAsXML(RGXMLWriter &writer, bool useAttributes); bool CanAttributesBeMerged(XGXMLObject *obj); ! void MergeAttributesFrom(XGXMLObject *obj, RGDateTime &fileDate, mergeType_t mergeType); bool GetIndexedDatedReference( propertyID_t propertyID, Int32 index, XGUUID& resultID, RGDateTime& resultDate ); void SetDatedReference( propertyID_t propertyID, XGUUID& supplierID, RGDateTime& dtr ); bool GetDatedReference( propertyID_t propertyID, XGUUID& supplierID, RGDateTime& date ); + bool GetLatestDatedReference( propertyID_t propertyID, RGDateTime& date ); View *_rsView; |