You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(13) |
Sep
(25) |
Oct
(10) |
Nov
(19) |
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
(206) |
Mar
(43) |
Apr
(25) |
May
(20) |
Jun
(69) |
Jul
(121) |
Aug
(95) |
Sep
(122) |
Oct
(213) |
Nov
(46) |
Dec
(39) |
2006 |
Jan
(28) |
Feb
(57) |
Mar
(21) |
Apr
(7) |
May
(11) |
Jun
(2) |
Jul
(8) |
Aug
(13) |
Sep
(2) |
Oct
(2) |
Nov
(20) |
Dec
(16) |
2007 |
Jan
(9) |
Feb
(15) |
Mar
|
Apr
(4) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
(1) |
Sep
(9) |
Oct
|
Nov
(1) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
(8) |
Apr
(1) |
May
|
Jun
|
Jul
(11) |
Aug
(57) |
Sep
(2) |
Oct
(6) |
Nov
|
Dec
(7) |
2010 |
Jan
(11) |
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
(2) |
Sep
(27) |
Oct
(3) |
Nov
(7) |
Dec
(1) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(10) |
Oct
|
Nov
|
Dec
|
2012 |
Jan
(8) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(3) |
Nov
(1) |
Dec
(1) |
2013 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
(4) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
(4) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(3) |
Oct
|
Nov
(4) |
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
From: Nando D. <na...@us...> - 2006-01-17 08:33:45
|
Update of /cvsroot/instantobjects/Source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13764/Source Modified Files: InstantVersion.res Log Message: updated for 2.0 beta 2 Index: InstantVersion.res =================================================================== RCS file: /cvsroot/instantobjects/Source/InstantVersion.res,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Binary files /tmp/cvsauiqEv and /tmp/cvssq3AwA differ |
From: Nando D. <na...@us...> - 2006-01-17 08:32:10
|
Update of /cvsroot/instantobjects/Docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13471/Docs Modified Files: Changes.txt Log Message: updated for 2.0 beta 2 Index: Changes.txt =================================================================== RCS file: /cvsroot/instantobjects/Docs/Changes.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Changes.txt 4 Nov 2005 12:40:31 -0000 1.2 --- Changes.txt 17 Jan 2006 08:31:56 -0000 1.3 *************** *** 2,5 **** --- 2,35 ---- --------------- + Version 2.0 Beta 2 (1.9.1.2) (2006-01) + + - Fixed possible AV in TInstantBrokerCatalog. + + - Many fixes to the circular references management code. + + - ZeosDBO: added IB/Fb/MySQL database creation support. + + - UIB: fixed AV that was raised trying to disconnect + UIBDatabase while it's being destroyed. + + - Delphi 2005/6: added InstantObjects entry for the + start up splash screens using the handled sphere icon. + + - ModelMaker: added a version resource to show in + ModelMaker's Tools/Expert Manager dialog. + + - Fixed bug #1403489. Fix for the problem that in some + situations, where there aren't circular references, + an object is incorrectly detached from a References + attribute. + + - Fix for EOleException in ModelMaker when cancelling + the dialog during the addition of a new IOAttribute. + + - Various internal refactorings and optimizations. + + - Removal of several memory leaks and sources of AVs. + + Version 2.0 Beta 1 (1.9.1.1) (2005-11) |
From: Steven M. <sr...@us...> - 2006-01-15 06:35:38
|
Update of /cvsroot/instantobjects/Source/ObjectFoundry In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4100 Modified Files: OFExpert.pas Log Message: Fix for EOleException in MM when cancelling the dialog during the addition of a new IOAttribute. Needed to add property parameter validation in function TObjectFoundryExpert.GetAttributeType. Index: OFExpert.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/ObjectFoundry/OFExpert.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** OFExpert.pas 24 Feb 2005 00:27:21 -0000 1.3 --- OFExpert.pas 15 Jan 2006 06:35:31 -0000 1.4 *************** *** 252,272 **** const P: IMMProperty): TIOAttributeType; begin ! with TMMCodeAttribute.Create(P) do ! try ! case AttributeType of ! atPart: ! Result := ioaPart; ! atParts: ! Result := ioaParts; ! atReference: ! Result := ioaReference; ! atReferences: ! Result := ioaReferences; ! else ! Result := ioaSimple; ! end; ! finally ! Free; ! end; end; --- 252,275 ---- const P: IMMProperty): TIOAttributeType; begin ! if Assigned(P) and P.Valid then ! with TMMCodeAttribute.Create(P) do ! try ! case AttributeType of ! atPart: ! Result := ioaPart; ! atParts: ! Result := ioaParts; ! atReference: ! Result := ioaReference; ! atReferences: ! Result := ioaReferences; ! else ! Result := ioaSimple; ! end; ! finally ! Free; ! end ! else ! Result := ioaNoAttribute; end; |
From: Steven M. <sr...@us...> - 2006-01-12 01:15:55
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5634 Modified Files: InstantPersistence.pas Log Message: Fix for the problem that in some situations, where there aren't circular references, an object is incorrectly detached from a References attribute. [SF BT #1403489] Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.81 retrieving revision 1.82 diff -C2 -d -r1.81 -r1.82 *** InstantPersistence.pas 4 Jan 2006 04:42:12 -0000 1.81 --- InstantPersistence.pas 12 Jan 2006 01:15:44 -0000 1.82 *************** *** 8226,8229 **** --- 8226,8252 ---- procedure TInstantObject.FreeCircularReferences; + + function IsInsideCircularReference(const AItem: TInstantComplex): + Boolean; + var + CurrentItem: TInstantComplex; + I: Integer; + begin + Result := AItem.Owner = Self; + if not Result and Assigned(AItem.Owner.FRefBy) then + for I := 0 to Pred(AItem.Owner.FRefBy.Count) do + if AItem.Owner.FRefBy[I] is TInstantComplex then + begin + CurrentItem := TInstantComplex(AItem.Owner.FRefBy[I]); + if CurrentItem.AttributeType in [atReference, atReferences] then + begin + Result := (AItem.Owner.RefCount = AItem.Owner.FRefBy.Count) and + IsInsideCircularReference(CurrentItem); + if Result then + Exit; + end; + end; + end; + var I: Integer; *************** *** 8234,8238 **** with TInstantComplex(FRefBy[I]) do if (AttributeType in [atReference, atReferences]) and ! (Owner.RefCount = Owner.ReferencedBy.Count) then // FRefCount will be decremented whenever this // instance is Detached --- 8257,8261 ---- with TInstantComplex(FRefBy[I]) do if (AttributeType in [atReference, atReferences]) and ! IsInsideCircularReference(TInstantComplex(FRefBy[I])) then // FRefCount will be decremented whenever this // instance is Detached |
From: Steven M. <sr...@us...> - 2006-01-08 07:24:33
|
Update of /cvsroot/instantobjects/Source/Design In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17587 Modified Files: InstantReg.pas Log Message: Used the new SSplashScreenTitle resource string in InstantConsts.pas and changed title to 'InstantObjects - Object Persistence Framework'. Index: InstantReg.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Design/InstantReg.pas,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** InstantReg.pas 3 Jan 2006 04:41:07 -0000 1.14 --- InstantReg.pas 8 Jan 2006 07:24:24 -0000 1.15 *************** *** 73,78 **** try ! SplashScreenServices.AddPluginBitmap('InstantObjects Model Explorer', ! Bmp.Handle, False, '', ''); finally Bmp.Free; --- 73,78 ---- try ! SplashScreenServices.AddPluginBitmap(SSplashScreenTitle, ! Bmp.Handle, False, '', ''); finally Bmp.Free; |
From: Steven M. <sr...@us...> - 2006-01-08 07:20:28
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17171 Modified Files: InstantConsts.pas Log Message: Added SSplashScreenTitle entry resource string and re-sorted resourcestrings into alphabetic order. Index: InstantConsts.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantConsts.pas,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** InstantConsts.pas 31 Dec 2005 11:45:24 -0000 1.22 --- InstantConsts.pas 8 Jan 2006 07:20:19 -0000 1.23 *************** *** 92,98 **** --- 92,101 ---- SConnectionManagerCaption = 'Connection Manager'; SConnectionManagerExecutorNotAssigned = 'Connection manager execution procedure not assigned'; + SConnectionName = 'Connection Name'; SConnectorInUse = 'Connector %s in use by %d object(s)'; SConnectorMismatch = 'Connector mismatch'; SContainerNotFound = 'Container: ''%s'' not found for class %s'; + SDatabaseBuildConfirmation = 'Build database via connection "%s" and clear all data?'; + SDatabaseBuilt = 'Database was built successfully'; SDatabaseCreationNotSupported = '''%s'' does not support automatic database creation'; SDatabaseEvolutionNonSupported = 'This broker does not support database evolution'; *************** *** 100,103 **** --- 103,107 ---- SDefaultContainerNotFound = 'Default container not found for class %s'; SDefaultContainerNotSpecified = 'Default container not specified for class %s'; + SDeleteConnectionConfirmation = 'Delete connection "%s"?'; SDeniedDispose = 'Denied dispose of object %s(''%s'')'; SDeniedRefresh = 'Denied refresh of object %s(''%s'')'; *************** *** 148,151 **** --- 152,156 ---- SProtocolNotSupported = 'Protocol ''%s'' not supported'; SSpecifierMissing = 'Specifier missing'; + SSplashScreenTitle = 'InstantObjects - Object Persistence Framework'; SSQLStatementIndexOutOfBounds = 'SQL statement index out of bounds.'; STransactionInProgress = 'Transaction in progress'; *************** *** 164,167 **** --- 169,173 ---- SUnassignedMap = 'Unassigned map'; SUnassignedObjectInAttribute = 'Unassigned object in attribute %s(''%s'')'; + SUnassignedOnConnectError = 'Unassigned OnConnect event of InstantConnectionManager'; SUnassignedQuery = 'Unassigned query'; SUnassignedResolver = 'Unassigned resolver'; *************** *** 182,191 **** SUnsupportedType = 'Unsupported type: %s'; SUpdateConflict = 'Object %s(''%s'') was updated by another session'; ! SDatabaseBuildConfirmation = 'Build database via connection "%s" and clear all data?'; ! SDatabaseBuilt = 'Database was built successfully'; ! SDeleteConnectionConfirmation = 'Delete connection "%s"?'; ! SConnectionName = 'Connection Name'; ! SUnassignedOnConnectError = 'Unassigned OnConnect event of InstantConnectionManager'; ! implementation --- 188,192 ---- SUnsupportedType = 'Unsupported type: %s'; SUpdateConflict = 'Object %s(''%s'') was updated by another session'; ! implementation |
From: Steven M. <sr...@us...> - 2006-01-04 06:19:38
|
Update of /cvsroot/instantobjects/Source/ObjectFoundry In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19167 Modified Files: OFExpt.dpr Added Files: OFExpt_ver.res Log Message: Add a version resource to show in ModelMaker's Tools/Expert Manager dialog. --- NEW FILE: OFExpt_ver.res --- (This appears to be a binary file; contents omitted.) Index: OFExpt.dpr =================================================================== RCS file: /cvsroot/instantobjects/Source/ObjectFoundry/OFExpt.dpr,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** OFExpt.dpr 16 Sep 2005 00:57:16 -0000 1.5 --- OFExpt.dpr 4 Jan 2006 06:19:28 -0000 1.6 *************** *** 1,5 **** library OFExpt; ! {$R *.RES} uses --- 1,5 ---- library OFExpt; ! {$R OFExpt_ver.res} uses |
From: Steven M. <sr...@us...> - 2006-01-04 04:42:25
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6891 Modified Files: InstantPersistence.pas Log Message: Changes: 1. Refactored the TInstantReferences class to use the new TInstantObjectReferenceList class. 2. Fixed a bug in the TInstantObjectReferenceList.Add method and added more functionality to support the list's use in TInstantReferences. Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -d -r1.80 -r1.81 *** InstantPersistence.pas 31 Dec 2005 10:53:57 -0000 1.80 --- InstantPersistence.pas 4 Jan 2006 04:42:12 -0000 1.81 *************** *** 82,85 **** --- 82,86 ---- TInstantAttribute = class; TInstantAttributeClass = class of TInstantAttribute; + TInstantObjectReferenceList = class; TInstantStorageKind = (skEmbedded, skExternal); *************** *** 1080,1090 **** FAllowOwned: Boolean; FConnector: TInstantConnector; ! FObjectReferenceList: TObjectList; ! function CreateObjectReference(AObject: TInstantObject): TInstantObjectReference; ! function GetObjectReferenceList: TObjectList; ! function GetObjectReferences(Index: Integer): TInstantObjectReference; ! procedure SetObjectReferences(Index: Integer; Value: TInstantObjectReference); ! property ObjectReferenceList: TObjectList read GetObjectReferenceList; ! property ObjectReferences[Index: Integer]: TInstantObjectReference read GetObjectReferences write SetObjectReferences; protected class function AttributeType: TInstantAttributeType; override; --- 1081,1088 ---- FAllowOwned: Boolean; FConnector: TInstantConnector; ! FObjectReferenceList: TInstantObjectReferenceList; ! function GetObjectReferenceList: TInstantObjectReferenceList; ! property ObjectReferenceList: TInstantObjectReferenceList read ! GetObjectReferenceList; protected class function AttributeType: TInstantAttributeType; override; *************** *** 1752,1757 **** end; - TInstantObjectReferenceList = class; - TInstantQuery = class(TPersistent) private --- 1750,1753 ---- *************** *** 2604,2609 **** --- 2600,2607 ---- procedure Clear; procedure Delete(Index: Integer); + procedure Exchange(Index1, Index2: Integer); function IndexOf(Item: TInstantObject): Integer; procedure Insert(Index: Integer; Item: TInstantObject); + procedure Move(CurIndex, NewIndex: Integer); function Remove(Item: TInstantObject): Integer; property Capacity: Integer read GetCapacity write SetCapacity; *************** *** 7138,7147 **** end; - function TInstantReferences.CreateObjectReference( - AObject: TInstantObject): TInstantObjectReference; - begin - Result := TInstantObjectReference.Create(AObject, True, Self); - end; - destructor TInstantReferences.Destroy; begin --- 7136,7139 ---- *************** *** 7152,7156 **** procedure TInstantReferences.DestroyObject(Index: Integer); begin ! ObjectReferences[Index].DestroyInstance; end; --- 7144,7148 ---- procedure TInstantReferences.DestroyObject(Index: Integer); begin ! ObjectReferenceList.RefItems[Index].DestroyInstance; end; *************** *** 7175,7206 **** function TInstantReferences.GetInstances(Index: Integer): TInstantObject; begin ! Result := ObjectReferences[Index].Instance; end; ! function TInstantReferences.GetObjectReferenceList: TObjectList; begin if not Assigned(FObjectReferenceList) then ! FObjectReferenceList := TObjectList.Create; Result := FObjectReferenceList; end; ! function TInstantReferences.GetObjectReferences( ! Index: Integer): TInstantObjectReference; ! begin ! Result := TInstantObjectReference(ObjectReferenceList[Index]); ! end; ! ! function TInstantReferences.InternalAdd( ! AObject: TInstantObject): Integer; ! var ! Ref: TInstantObjectReference; begin ! Ref := CreateObjectReference(AObject); ! try ! Result := ObjectReferenceList.Add(Ref); ! except ! Ref.Free; ! raise; ! end; end; --- 7167,7184 ---- function TInstantReferences.GetInstances(Index: Integer): TInstantObject; begin ! Result := ObjectReferenceList[Index]; end; ! function TInstantReferences.GetObjectReferenceList: TInstantObjectReferenceList; begin if not Assigned(FObjectReferenceList) then ! FObjectReferenceList := TInstantObjectReferenceList.Create( ! True, Connector, Self); Result := FObjectReferenceList; end; ! function TInstantReferences.InternalAdd(AObject: TInstantObject): Integer; begin ! Result := ObjectReferenceList.Add(AObject); end; *************** *** 7221,7274 **** function TInstantReferences.InternalGetItems(Index: Integer): TInstantObject; - var - Ref: TInstantObjectReference; begin ! Ref := ObjectReferences[Index]; ! if not Assigned(Ref.Instance) then ! Result := Ref.Dereference(Connector) ! else ! Result := Ref.Instance; end; function TInstantReferences.InternalIndexOf( AObject: TInstantObject): Integer; - var - Ref: TInstantObjectReference; begin ! for Result := 0 to Pred(Count) do ! begin ! Ref := ObjectReferences[Result]; ! if Ref.Equals(AObject) then ! Exit; ! end; ! Result := -1; end; function TInstantReferences.InternalIndexOfInstance( Instance: Pointer): Integer; - var - Ref: TInstantObjectReference; begin ! for Result := 0 to Pred(Count) do ! begin ! Ref := ObjectReferences[Result]; ! if Ref.Instance = Instance then ! Exit; ! end; ! Result := -1; end; procedure TInstantReferences.InternalInsert(Index: Integer; AObject: TInstantObject); - var - Ref: TInstantObjectReference; begin ! Ref := CreateObjectReference(AObject); ! try ! ObjectReferenceList.Insert(Index, Ref); ! except ! Ref.Free; ! raise; ! end; end; --- 7199,7222 ---- function TInstantReferences.InternalGetItems(Index: Integer): TInstantObject; begin ! Result := ObjectReferenceList[Index]; end; function TInstantReferences.InternalIndexOf( AObject: TInstantObject): Integer; begin ! Result := ObjectReferenceList.IndexOf(AObject); end; function TInstantReferences.InternalIndexOfInstance( Instance: Pointer): Integer; begin ! Result := ObjectReferenceList.IndexOf(TInstantObject(Instance)); end; procedure TInstantReferences.InternalInsert(Index: Integer; AObject: TInstantObject); begin ! ObjectReferenceList.Insert(Index, AObject); end; *************** *** 7281,7285 **** AValue: TInstantObject); begin ! ObjectReferences[Index].Instance := AValue; end; --- 7229,7233 ---- AValue: TInstantObject); begin ! ObjectReferenceList[Index] := AValue; end; *************** *** 7312,7323 **** Obj := InstantReadObjectFromStream(AStream); try ! ObjReference := TInstantObjectReference.Create(nil, True, Self); try ObjReference.ReferenceObject( TInstantObjectReference(Obj).ObjectClassName, TInstantObjectReference(Obj).ObjectId); - ObjectReferenceList.Add(ObjReference); except ! ObjReference.Free; raise; end; --- 7260,7270 ---- Obj := InstantReadObjectFromStream(AStream); try ! ObjReference := ObjectReferenceList.Add; try ObjReference.ReferenceObject( TInstantObjectReference(Obj).ObjectClassName, TInstantObjectReference(Obj).ObjectId); except ! ObjectReferenceList.Delete(Pred(Count)); raise; end; *************** *** 7341,7350 **** ObjId := Processor.ReadData; //Data = ObjectId Processor.ReadTag; //closing tag ! ObjReference := TInstantObjectReference.Create(nil, True, Self); try ObjReference.ReferenceObject(ObjClassName, ObjId); - ObjectReferenceList.Add(ObjReference); except ! ObjReference.Free; end; end; --- 7288,7297 ---- ObjId := Processor.ReadData; //Data = ObjectId Processor.ReadTag; //closing tag ! ObjReference := ObjectReferenceList.Add; try ObjReference.ReferenceObject(ObjClassName, ObjId); except ! ObjectReferenceList.Delete(Pred(Count)); ! raise; end; end; *************** *** 7365,7374 **** while not Reader.EndOfList do begin ! Ref := CreateObjectReference(nil); try Ref.ReadAsObject(Reader); - ObjectReferenceList.Add(Ref); except ! Ref.Free; raise; end; --- 7312,7320 ---- while not Reader.EndOfList do begin ! Ref := ObjectReferenceList.Add; try Ref.ReadAsObject(Reader); except ! ObjectReferenceList.Delete(Pred(Count)); raise; end; *************** *** 7389,7393 **** begin for I := 0 to Pred(Count) do ! InstantWriteObjectToStream(AStream, ObjectReferences[I]); end else --- 7335,7339 ---- begin for I := 0 to Pred(Count) do ! InstantWriteObjectToStream(AStream, ObjectReferenceList.RefItems[I]); end else *************** *** 7401,7406 **** for I := 0 to Pred(Count) do begin ! InstantXMLProducer.WriteStartTag(ObjectReferences[I].ObjectClassName); ! InstantXMLProducer.WriteData(ObjectReferences[I].ObjectId); InstantXMLProducer.WriteEndTag; end; --- 7347,7353 ---- for I := 0 to Pred(Count) do begin ! InstantXMLProducer.WriteStartTag( ! ObjectReferenceList.RefItems[I].ObjectClassName); ! InstantXMLProducer.WriteData(ObjectReferenceList.RefItems[I].ObjectId); InstantXMLProducer.WriteEndTag; end; *************** *** 7417,7426 **** end; - procedure TInstantReferences.SetObjectReferences(Index: Integer; - Value: TInstantObjectReference); - begin - ObjectReferenceList[Index] := Value; - end; - procedure TInstantReferences.ValidateObject(AObject: TInstantObject); begin --- 7364,7367 ---- *************** *** 7437,7441 **** Writer.WriteValue(vaCollection); for I := 0 to Pred(Count) do ! ObjectReferences[I].WriteAsObject(Writer); Writer.WriteListEnd; end; --- 7378,7382 ---- Writer.WriteValue(vaCollection); for I := 0 to Pred(Count) do ! ObjectReferenceList.RefItems[I].WriteAsObject(Writer); Writer.WriteListEnd; end; *************** *** 14472,14479 **** while not DataSet.Eof do begin ! RefObject := TInstantObjectReference.Create(nil, True, ! Attribute as TInstantReferences); RefObject.ReferenceObject(Metadata.ObjectClass, DataSet.Fields[1].AsString); - (Attribute as TInstantReferences).ObjectReferenceList.Add(RefObject); DataSet.Next; end; --- 14413,14419 ---- while not DataSet.Eof do begin ! RefObject := ! (Attribute as TInstantReferences).ObjectReferenceList.Add; RefObject.ReferenceObject(Metadata.ObjectClass, DataSet.Fields[1].AsString); DataSet.Next; end; *************** *** 15581,15588 **** begin Result := TInstantObjectReference.Create(nil, FRefOwnsInstance, FRefOwner); ! if Assigned(AObject) and FRefOwnsInstance then ! Result.Instance := AObject ! else ! Result.ReferenceObject(AObject.ClassName, AObject.Id); end; --- 15521,15531 ---- begin Result := TInstantObjectReference.Create(nil, FRefOwnsInstance, FRefOwner); ! if Assigned(AObject) then ! begin ! if FRefOwnsInstance then ! Result.Instance := AObject ! else ! Result.ReferenceObject(AObject.ClassName, AObject.Id); ! end; end; *************** *** 15592,15595 **** --- 15535,15543 ---- end; + procedure TInstantObjectReferenceList.Exchange(Index1, Index2: Integer); + begin + FList.Exchange(Index1, Index2); + end; + function TInstantObjectReferenceList.GetCapacity: Integer; begin *************** *** 15642,15645 **** --- 15590,15598 ---- end; + procedure TInstantObjectReferenceList.Move(CurIndex, NewIndex: Integer); + begin + FList.Move(CurIndex, NewIndex); + end; + function TInstantObjectReferenceList.Remove(Item: TInstantObject): Integer; begin |
From: Steven M. <sr...@us...> - 2006-01-03 04:41:17
|
Update of /cvsroot/instantobjects/Source/Design In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7332 Modified Files: InstantReg.pas Added Files: IOCompsSplash.res Log Message: Added InstantObjects entry for the Delphi 2005/6 start up splash screens using the handled sphere icon. --- NEW FILE: IOCompsSplash.res --- (This appears to be a binary file; contents omitted.) Index: InstantReg.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Design/InstantReg.pas,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** InstantReg.pas 6 Sep 2005 00:43:55 -0000 1.13 --- InstantReg.pas 3 Jan 2006 04:41:07 -0000 1.14 *************** *** 26,30 **** * * Contributor(s): ! * Nando Dessena * * ***** END LICENSE BLOCK ***** *) --- 26,30 ---- * * Contributor(s): ! * Nando Dessena, Steven Mitchell * * ***** END LICENSE BLOCK ***** *) *************** *** 50,60 **** {$ENDIF} uses ! Classes, InstantConsts, InstantPersistence, InstantPresentation, InstantExplorer, InstantConnectionManager, InstantConnectionManagerFormUnit, ! InstantPump, InstantDBEvolution, InstantDBBuild; procedure Register; begin RegisterComponents(InstantPaletteName, [ TInstantSelector, --- 50,91 ---- {$ENDIF} + {$IFDEF D9+} + {$R IOCompsSplash.res} + {$ENDIF} + uses ! Classes, Graphics, InstantConsts, InstantPersistence, InstantPresentation, InstantExplorer, InstantConnectionManager, InstantConnectionManagerFormUnit, ! InstantPump, InstantDBEvolution, InstantDBBuild ! {$IFDEF D9+} ! , ToolsAPI ! {$ENDIF} ! ; ! ! {$IFDEF D9+} ! procedure RegisterWithSplashScreen; ! var ! Bmp: TBitmap; ! begin ! // Register IO Splash Icon on Delphi Splash Screen ! Bmp := TBitmap.Create; ! Bmp.LoadFromResourceName(HInstance, 'IOCOMPSSPLASH'); ! ! try ! SplashScreenServices.AddPluginBitmap('InstantObjects Model Explorer', ! Bmp.Handle, False, '', ''); ! finally ! Bmp.Free; ! end; ! ! end; ! {$ENDIF} procedure Register; begin + {$IFDEF D9+} + RegisterWithSplashScreen; + {$ENDIF} + RegisterComponents(InstantPaletteName, [ TInstantSelector, |
From: Joao M. <jcm...@us...> - 2005-12-31 12:12:26
|
Update of /cvsroot/instantobjects/Source/Brokers/UIB In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12435/Brokers/UIB Modified Files: InstantUIB.pas Log Message: Changed Notification method of InstantUIBConnector, that is raising AV trying to disconnect UIBDatabase while it's being destroyed. Index: InstantUIB.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Brokers/UIB/InstantUIB.pas,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** InstantUIB.pas 22 Nov 2005 22:28:46 -0000 1.18 --- InstantUIB.pas 31 Dec 2005 12:12:17 -0000 1.19 *************** *** 22,26 **** * * Contributor(s): ! * Carlo Barazzetta, Nando Dessena * * ***** END LICENSE BLOCK ***** *) --- 22,26 ---- * * Contributor(s): ! * Carlo Barazzetta, Nando Dessena, Joao Morais * * ***** END LICENSE BLOCK ***** *) *************** *** 362,366 **** begin if HasDataBase then ! DataBase.Connected := False; end; --- 362,366 ---- begin if HasDataBase then ! FDataBase.Connected := False; end; *************** *** 370,377 **** inherited; if (AComponent = FDataBase) and (Operation = opRemove) then - begin - Disconnect; FDataBase := nil; - end; end; --- 370,374 ---- |
From: Joao M. <jcm...@us...> - 2005-12-31 11:45:34
|
Update of /cvsroot/instantobjects/Source/Brokers/ZeosDBO In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3059/Brokers/ZeosDBO Modified Files: InstantZeosDBO.pas Log Message: Added IbFb and MySQL database creation support for ZeosDBO Broker; Moved string constants from InstantZeosDBO to InstantConsts unit. Index: InstantZeosDBO.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Brokers/ZeosDBO/InstantZeosDBO.pas,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** InstantZeosDBO.pas 22 Nov 2005 23:08:05 -0000 1.6 --- InstantZeosDBO.pas 31 Dec 2005 11:45:24 -0000 1.7 *************** *** 25,29 **** * * Contributor(s): ! * Enrique Esquivel * * ***** END LICENSE BLOCK ***** *) --- 25,29 ---- * * Contributor(s): ! * Enrique Esquivel, David Taylor * * ***** END LICENSE BLOCK ***** *) *************** *** 84,87 **** --- 84,89 ---- end; + TInstantZeosDBOBroker = class; + TInstantZeosDBOConnector = class(TInstantRelationalConnector) private *************** *** 97,100 **** --- 99,103 ---- procedure SetLoginPrompt(const Value: Boolean); procedure SetUseDelimitedIdents(const Value: Boolean); + function GetBroker: TInstantZeosDBOBroker; protected procedure AfterConnectionChange; virtual; *************** *** 118,121 **** --- 121,125 ---- class function ConnectionDefClass: TInstantConnectionDefClass; override; function HasConnection: Boolean; + property Broker: TInstantZeosDBOBroker read GetBroker; published property Connection: TZConnection read GetConnection write SetConnection; *************** *** 138,154 **** function GetSQLDelimiters: string; override; function GetSQLQuote: Char; override; function InternalCreateQuery: TInstantQuery; override; function InternalDataTypeToColumnType(DataType: TInstantDataType): string; virtual; abstract; function UseBooleanFields: Boolean; virtual; abstract; public function CreateDataSet(const AStatement: string; AParams: TParams = nil): TDataSet; override; function CreateDBBuildCommand(const CommandType: TInstantDBBuildCommandType): TInstantDBBuildCommand; override; function DataTypeToColumnType(DataType: TInstantDataType; Size: Integer): string; override; function Execute(const AStatement: string; AParams: TParams = nil): Integer; override; property Connector: TInstantZeosDBOConnector read GetConnector; end; TInstantZeosDBOResolver = class(TInstantSQLResolver) ! // Read an integer field and convert it to boolean expression protected function ReadBooleanField(DataSet: TDataSet; const FieldName: string): Boolean; override; --- 142,162 ---- function GetSQLDelimiters: string; override; function GetSQLQuote: Char; override; + procedure InternalCreateDatabase; virtual; function InternalCreateQuery: TInstantQuery; override; function InternalDataTypeToColumnType(DataType: TInstantDataType): string; virtual; abstract; + function InternalDBNotExistsErrorCode: Integer; virtual; function UseBooleanFields: Boolean; virtual; abstract; public + procedure CreateDatabase; function CreateDataSet(const AStatement: string; AParams: TParams = nil): TDataSet; override; function CreateDBBuildCommand(const CommandType: TInstantDBBuildCommandType): TInstantDBBuildCommand; override; function DataTypeToColumnType(DataType: TInstantDataType; Size: Integer): string; override; function Execute(const AStatement: string; AParams: TParams = nil): Integer; override; + function DBNotExistsErrorCode: Integer; property Connector: TInstantZeosDBOConnector read GetConnector; end; TInstantZeosDBOResolver = class(TInstantSQLResolver) ! // Read an integer field and convert it to boolean expression protected function ReadBooleanField(DataSet: TDataSet; const FieldName: string): Boolean; override; *************** *** 156,160 **** TInstantZeosDBOTranslator = class(TInstantRelationalTranslator) ! // Translate boolean expressions to '0' or '1' protected function TranslateConstant(Constant: TInstantIQLConstant; Writer: TInstantIQLWriter): Boolean; override; --- 164,168 ---- TInstantZeosDBOTranslator = class(TInstantRelationalTranslator) ! // Translate boolean expressions to '0' or '1' protected function TranslateConstant(Constant: TInstantIQLConstant; Writer: TInstantIQLWriter): Boolean; override; *************** *** 191,195 **** --- 199,205 ---- TInstantZeosDBOIbFbBroker = class(TInstantZeosDBOBroker) protected + procedure InternalCreateDatabase; override; function InternalDataTypeToColumnType(DataType: TInstantDataType): string; override; + function InternalDBNotExistsErrorCode: Integer; override; function UseBooleanFields: Boolean; override; end; *************** *** 221,226 **** --- 231,238 ---- TInstantZeosDBOMySQLBroker = class(TInstantZeosDBOBroker) protected + procedure InternalCreateDatabase; override; function InternalDataTypeToColumnType(DataType: TInstantDataType): string; override; + function InternalDBNotExistsErrorCode: Integer; override; function UseBooleanFields: Boolean; override; end; *************** *** 283,287 **** InstantConsts, InstantClasses, InstantZeosDBOConnectionDefEdit, InstantZeosDBOCatalog, InstantUtils, ZClasses, ZCompatibility, ZDbcIntfs, ! ZDataset; {$IFDEF SQLITE_SUPPORT} --- 295,299 ---- InstantConsts, InstantClasses, InstantZeosDBOConnectionDefEdit, InstantZeosDBOCatalog, InstantUtils, ZClasses, ZCompatibility, ZDbcIntfs, ! {$IFDEF MYSQL_SUPPORT}ZDbcMySql,{$ENDIF} ZDataset; {$IFDEF SQLITE_SUPPORT} *************** *** 462,468 **** {$IFDEF IBFB_SUPPORT} if SameText(FConnection.Protocol, 'interbase-5') or ! SameText(FConnection.Protocol, 'interbase-6') or ! SameText(FConnection.Protocol, 'firebird-1.0') or ! SameText(FConnection.Protocol, 'firebird-1.5') then Result := TInstantZeosDBOIbFbBroker.Create(Self); {$ENDIF} --- 474,480 ---- {$IFDEF IBFB_SUPPORT} if SameText(FConnection.Protocol, 'interbase-5') or ! SameText(FConnection.Protocol, 'interbase-6') or ! SameText(FConnection.Protocol, 'firebird-1.0') or ! SameText(FConnection.Protocol, 'firebird-1.5') then Result := TInstantZeosDBOIbFbBroker.Create(Self); {$ENDIF} *************** *** 470,474 **** {$IFDEF ORACLE_SUPPORT} if SameText(FConnection.Protocol, 'oracle') or ! SameText(FConnection.Protocol, 'oracle-9i') then Result := TInstantZeosDBOOracleBroker.Create(Self); {$ENDIF} --- 482,486 ---- {$IFDEF ORACLE_SUPPORT} if SameText(FConnection.Protocol, 'oracle') or ! SameText(FConnection.Protocol, 'oracle-9i') then Result := TInstantZeosDBOOracleBroker.Create(Self); {$ENDIF} *************** *** 476,483 **** {$IFDEF PGSQL_SUPPORT} if SameText(FConnection.Protocol, 'postgresql') or ! SameText(FConnection.Protocol, 'postgresql-6.5') or ! SameText(FConnection.Protocol, 'postgresql-7.2') or ! SameText(FConnection.Protocol, 'postgresql-7.3') or ! SameText(FConnection.Protocol, 'postgresql-7.4') then Result := TInstantZeosDBOPgSQLBroker.Create(Self); {$ENDIF} --- 488,495 ---- {$IFDEF PGSQL_SUPPORT} if SameText(FConnection.Protocol, 'postgresql') or ! SameText(FConnection.Protocol, 'postgresql-6.5') or ! SameText(FConnection.Protocol, 'postgresql-7.2') or ! SameText(FConnection.Protocol, 'postgresql-7.3') or ! SameText(FConnection.Protocol, 'postgresql-7.4') then Result := TInstantZeosDBOPgSQLBroker.Create(Self); {$ENDIF} *************** *** 485,492 **** {$IFDEF MYSQL_SUPPORT} if SameText(FConnection.Protocol, 'mysql') or ! SameText(FConnection.Protocol, 'mysql-3.20') or ! SameText(FConnection.Protocol, 'mysql-3.23') or ! SameText(FConnection.Protocol, 'mysql-4.0') or ! SameText(FConnection.Protocol, 'mysql-4.1') then Result := TInstantZeosDBOMySQLBroker.Create(Self); {$ENDIF} --- 497,504 ---- {$IFDEF MYSQL_SUPPORT} if SameText(FConnection.Protocol, 'mysql') or ! SameText(FConnection.Protocol, 'mysql-3.20') or ! SameText(FConnection.Protocol, 'mysql-3.23') or ! SameText(FConnection.Protocol, 'mysql-4.0') or ! SameText(FConnection.Protocol, 'mysql-4.1') then Result := TInstantZeosDBOMySQLBroker.Create(Self); {$ENDIF} *************** *** 494,504 **** {$IFDEF SQLITE_SUPPORT} if SameText(FConnection.Protocol, 'sqlite') or ! SameText(FConnection.Protocol, 'sqlite-2.8') then Result := TInstantZeosDBOSQLiteBroker.Create(Self); {$ENDIF} if Result = nil then ! raise EInstantError.CreateFmt('ZeosDBO protocol "%s" not supported', ! [FConnection.Protocol]); end; --- 506,516 ---- {$IFDEF SQLITE_SUPPORT} if SameText(FConnection.Protocol, 'sqlite') or ! SameText(FConnection.Protocol, 'sqlite-2.8') then Result := TInstantZeosDBOSQLiteBroker.Create(Self); {$ENDIF} if Result = nil then ! raise EInstantError.CreateFmt(SProtocolNotSupported, ! [FConnection.Protocol]); end; *************** *** 520,523 **** --- 532,542 ---- end; + function TInstantZeosDBOConnector.GetBroker: TInstantZeosDBOBroker; + begin + { TODO : Check if current broker is appropriate + (before FConnection.Protocol). } + Result := inherited Broker as TInstantZeosDBOBroker; + end; + function TInstantZeosDBOConnector.GetConnected: Boolean; begin *************** *** 537,542 **** function TInstantZeosDBOConnector.GetDatabaseExists: Boolean; begin ! { TODO : Implement } ! Result := True; end; --- 556,574 ---- function TInstantZeosDBOConnector.GetDatabaseExists: Boolean; begin ! AssignLoginOptions; ! try ! Connection.Connect; ! Result := True; ! Connection.Disconnect; ! except ! on E : EZSQLException do ! begin ! if (E.ErrorCode = Broker.DBNotExistsErrorCode) then ! Result := False ! else ! raise EZSQLException.CreateWithCode(E.ErrorCode, ! Format('%s. Error Code: %d', [E.Message, E.ErrorCode])); ! end; ! end; end; *************** *** 581,585 **** procedure TInstantZeosDBOConnector.InternalCreateDatabase; begin ! { TODO : Implement } end; --- 613,619 ---- procedure TInstantZeosDBOConnector.InternalCreateDatabase; begin ! if (Connection.Connected) then ! raise EInstantError.Create(SDatabaseOpen); ! Broker.CreateDatabase; end; *************** *** 684,687 **** --- 718,726 ---- end; + procedure TInstantZeosDBOBroker.CreateDatabase; + begin + InternalCreateDatabase; + end; + function TInstantZeosDBOBroker.CreateDataSet(const AStatement: string; AParams: TParams): TDataSet; *************** *** 750,753 **** --- 789,797 ---- end; + function TInstantZeosDBOBroker.DBNotExistsErrorCode: Integer; + begin + Result := InternalDBNotExistsErrorCode; + end; + function TInstantZeosDBOBroker.Execute(const AStatement: string; AParams: TParams): Integer; *************** *** 794,797 **** --- 838,846 ---- end; + procedure TInstantZeosDBOBroker.InternalCreateDatabase; + begin + raise EInstantError.CreateFmt(SDatabaseCreationNotSupported, [GetDBMSName]); + end; + function TInstantZeosDBOBroker.InternalCreateQuery: TInstantQuery; begin *************** *** 802,805 **** --- 851,859 ---- end; + function TInstantZeosDBOBroker.InternalDBNotExistsErrorCode: Integer; + begin + Result := 0; + end; + { TInstantZeosDBOResolver } *************** *** 840,844 **** {$IFDEF SYBASE_SUPPORT} - function TInstantZeosDBOSybaseBroker.InternalDataTypeToColumnType( DataType: TInstantDataType): string; --- 894,897 ---- *************** *** 866,870 **** {$IFDEF MSSQL_SUPPORT} - function TInstantZeosDBOMSSQLBroker.InternalDataTypeToColumnType( DataType: TInstantDataType): string; --- 919,922 ---- *************** *** 892,895 **** --- 944,964 ---- {$IFDEF IBFB_SUPPORT} + procedure TInstantZeosDBOIbFbBroker.InternalCreateDatabase; + begin + // do not call inherited + with Connector.Connection do + begin + Properties.Text := Format( + 'createNewDatabase=CREATE DATABASE ''%s'' ' + + 'USER ''%s'' PASSWORD ''%s'' PAGE_SIZE 4096 ' + + 'DEFAULT CHARACTER SET ISO8859_1', [Database, User, Password]); + try + Connect; + finally + Disconnect; + Properties.Clear; + end; + end; + end; function TInstantZeosDBOIbFbBroker.InternalDataTypeToColumnType( *************** *** 909,912 **** --- 978,986 ---- end; + function TInstantZeosDBOIbFbBroker.InternalDBNotExistsErrorCode: Integer; + begin + Result := -902; + end; + function TInstantZeosDBOIbFbBroker.UseBooleanFields: Boolean; begin *************** *** 918,922 **** {$IFDEF ORACLE_SUPPORT} - function TInstantZeosDBOOracleBroker.InternalDataTypeToColumnType( DataType: TInstantDataType): string; --- 992,995 ---- *************** *** 944,948 **** {$IFDEF PGSQL_SUPPORT} - function TInstantZeosDBOPgSQLBroker.InternalDataTypeToColumnType( DataType: TInstantDataType): string; --- 1017,1020 ---- *************** *** 970,973 **** --- 1042,1067 ---- {$IFDEF MYSQL_SUPPORT} + procedure TInstantZeosDBOMySQLBroker.InternalCreateDatabase; + var + MySqlConnection: IZMySqlConnection; + begin + // do not call inherited + with Connector.Connection do + begin + Properties.Text := 'dbless=TRUE'; + try + Connect; + DbcConnection.QueryInterface(IZMySqlConnection, MySqlConnection); + if Assigned(MySqlConnection) then + MySqlConnection.GetPlainDriver. + CreateDatabase(MySqlConnection.GetConnectionHandle, PChar(Database)) + else + inherited; + finally + Disconnect; + Properties.Clear; + end; + end; + end; function TInstantZeosDBOMySQLBroker.InternalDataTypeToColumnType( *************** *** 987,990 **** --- 1081,1089 ---- end; + function TInstantZeosDBOMySQLBroker.InternalDBNotExistsErrorCode: Integer; + begin + Result := 1049; + end; + function TInstantZeosDBOMySQLBroker.UseBooleanFields: Boolean; begin |
From: Joao M. <jcm...@us...> - 2005-12-31 11:45:34
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3059/Core Modified Files: InstantConsts.pas Log Message: Added IbFb and MySQL database creation support for ZeosDBO Broker; Moved string constants from InstantZeosDBO to InstantConsts unit. Index: InstantConsts.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantConsts.pas,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** InstantConsts.pas 29 Oct 2005 11:35:57 -0000 1.21 --- InstantConsts.pas 31 Dec 2005 11:45:24 -0000 1.22 *************** *** 25,29 **** * * Contributor(s): ! * Nando Dessena, Steven Mitchell * * ***** END LICENSE BLOCK ***** *) --- 25,29 ---- * * Contributor(s): ! * Nando Dessena, Steven Mitchell, Joao Morais * * ***** END LICENSE BLOCK ***** *) *************** *** 95,98 **** --- 95,99 ---- SConnectorMismatch = 'Connector mismatch'; SContainerNotFound = 'Container: ''%s'' not found for class %s'; + SDatabaseCreationNotSupported = '''%s'' does not support automatic database creation'; SDatabaseEvolutionNonSupported = 'This broker does not support database evolution'; SDatabaseOpen = 'Cannot perform this operation on an open database'; *************** *** 145,148 **** --- 146,150 ---- SOwnershipRecursion = 'Ownership Recursion for object %s(''%s'')'; SPersistentObjectNotAllowed = 'Persistent object %s(''%s'') not allowed.'; + SProtocolNotSupported = 'Protocol ''%s'' not supported'; SSpecifierMissing = 'Specifier missing'; SSQLStatementIndexOutOfBounds = 'SQL statement index out of bounds.'; |
From: Joao M. <jcm...@us...> - 2005-12-31 10:54:08
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21058/Core Modified Files: InstantPersistence.pas Log Message: Changed how check of leakage with circular reference is performed, avoiding check through Release method. Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -d -r1.79 -r1.80 *** InstantPersistence.pas 24 Dec 2005 00:52:58 -0000 1.79 --- InstantPersistence.pas 31 Dec 2005 10:53:57 -0000 1.80 *************** *** 1195,1198 **** --- 1195,1199 ---- procedure DoUnchange; function FindDefaultContainer: TInstantContainer; + procedure FreeCircularReferences; function GetClassId: string; function GetDefaultContainer: TInstantContainer; *************** *** 8140,8157 **** function TInstantObject.DoRelease: Integer; - var - I: Integer; begin - // This object will be destroyed only when it is referenced - // by other object(s) pointing each other - if Assigned(FRefBy) and (FRefBy.Count = FRefCount-1) then - for I := Pred(FRefBy.Count) downto 0 do - if FRefBy[I] is TInstantComplex then - with TInstantComplex(FRefBy[I]) do - if (AttributeType in [atReference, atReferences]) and - (Owner.RefCount = Owner.ReferencedBy.Count) then - // FRefCount will be decremented whenever this object is dereferenced - repeat until not DetachObject(Self); - if FRefCount > 0 then begin --- 8141,8145 ---- *************** *** 8296,8302 **** end; procedure TInstantObject.FreeInstance; begin ! Release; if FRefCount = 0 then try --- 8284,8306 ---- end; + procedure TInstantObject.FreeCircularReferences; + var + I: Integer; + begin + if Assigned(FRefBy) and (FRefBy.Count = FRefCount-1) then + for I := Pred(FRefBy.Count) downto 0 do + if FRefBy[I] is TInstantComplex then + with TInstantComplex(FRefBy[I]) do + if (AttributeType in [atReference, atReferences]) and + (Owner.RefCount = Owner.ReferencedBy.Count) then + // FRefCount will be decremented whenever this + // instance is Detached + repeat until not DetachObject(Self); + end; + procedure TInstantObject.FreeInstance; begin ! FreeCircularReferences; ! DoRelease; if FRefCount = 0 then try |
From: Steven M. <sr...@us...> - 2005-12-24 00:53:07
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21742 Modified Files: InstantPersistence.pas Log Message: Remove CodeSite instrumenting code left in by mistake on last commit. Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.78 retrieving revision 1.79 diff -C2 -d -r1.78 -r1.79 *** InstantPersistence.pas 23 Dec 2005 23:54:35 -0000 1.78 --- InstantPersistence.pas 24 Dec 2005 00:52:58 -0000 1.79 *************** *** 11547,11565 **** I: Integer; begin - //CodeSite.Send('Enter RemoveRefsOfDeletedObjectsFromList'); - //CodeSite.Send('BusyObjectRefs.Count', BusyObjectRefs.Count); for I := Pred(BusyObjectRefs.Count) downto 0 do with BusyObjectRefs.RefItems[I] do begin - //CodeSite.Send('I', I); ObjStore := Connector.ObjectStores.FindObjectStore(ObjectClass); - //CodeSite.Send('Assigned(ObjStore)', Assigned(ObjStore)); if not (Assigned(ObjStore) and Assigned(ObjStore.Find(ObjectId))) then - begin - //CodeSite.Send('Delete(I)', I); BusyObjectRefs.Delete(I); - end; end; - //CodeSite.Send('Exit RemoveRefsOfDeletedObjectsFromList'); end; --- 11547,11557 ---- *************** *** 11568,11572 **** I: Integer; begin - //CodeSite.Send('Enter RefreshObjectsInList'); for I := 0 to Pred(BusyObjectRefs.Count) do begin --- 11560,11563 ---- *************** *** 11575,11583 **** Obj.Refresh; end; - //CodeSite.Send('Exit RefreshObjectsInList'); end; begin - //CodeSite.EnterMethod(Self, 'InternalRefreshObjects'); BusyObjectRefs := TInstantObjectReferenceList.Create(False, Connector); try --- 11566,11572 ---- *************** *** 11588,11592 **** Close; - //CodeSite.Send('After Close'); // Remove references from the BusyList for objects destroyed --- 11577,11580 ---- *************** *** 11595,11599 **** Open; - //CodeSite.Send('After Open'); // Refresh objects in the BusyList that were not destroyed --- 11583,11586 ---- *************** *** 11603,11607 **** BusyObjectRefs.Free; end; - //CodeSite.ExitMethod(Self, 'InternalRefreshObjects'); end; --- 11590,11593 ---- |
From: Joao M. <jcm...@us...> - 2005-12-23 23:54:46
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8448/Core Modified Files: InstantPersistence.pas Log Message: Changed Broker retrieve from InstantBrokerCatalog to ensure that there is a broker assigned to it. Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.77 retrieving revision 1.78 diff -C2 -d -r1.77 -r1.78 *** InstantPersistence.pas 22 Dec 2005 07:28:45 -0000 1.77 --- InstantPersistence.pas 23 Dec 2005 23:54:35 -0000 1.78 *************** *** 1399,1402 **** --- 1399,1403 ---- private FBroker: TInstantBroker; + function GetBroker: TInstantBroker; public // Creates an instance and binds it to the specified TInstantScheme object. *************** *** 1405,1409 **** const ABroker: TInstantBroker); virtual; // A reference to the broker through which the metadata info is read. ! property Broker: TInstantBroker read FBroker; end; --- 1406,1410 ---- const ABroker: TInstantBroker); virtual; // A reference to the broker through which the metadata info is read. ! property Broker: TInstantBroker read GetBroker; end; *************** *** 11546,11564 **** I: Integer; begin ! CodeSite.Send('Enter RemoveRefsOfDeletedObjectsFromList'); ! CodeSite.Send('BusyObjectRefs.Count', BusyObjectRefs.Count); for I := Pred(BusyObjectRefs.Count) downto 0 do with BusyObjectRefs.RefItems[I] do begin ! CodeSite.Send('I', I); ObjStore := Connector.ObjectStores.FindObjectStore(ObjectClass); ! CodeSite.Send('Assigned(ObjStore)', Assigned(ObjStore)); if not (Assigned(ObjStore) and Assigned(ObjStore.Find(ObjectId))) then begin ! CodeSite.Send('Delete(I)', I); BusyObjectRefs.Delete(I); end; end; ! CodeSite.Send('Exit RemoveRefsOfDeletedObjectsFromList'); end; --- 11547,11565 ---- I: Integer; begin ! //CodeSite.Send('Enter RemoveRefsOfDeletedObjectsFromList'); ! //CodeSite.Send('BusyObjectRefs.Count', BusyObjectRefs.Count); for I := Pred(BusyObjectRefs.Count) downto 0 do with BusyObjectRefs.RefItems[I] do begin ! //CodeSite.Send('I', I); ObjStore := Connector.ObjectStores.FindObjectStore(ObjectClass); ! //CodeSite.Send('Assigned(ObjStore)', Assigned(ObjStore)); if not (Assigned(ObjStore) and Assigned(ObjStore.Find(ObjectId))) then begin ! //CodeSite.Send('Delete(I)', I); BusyObjectRefs.Delete(I); end; end; ! //CodeSite.Send('Exit RemoveRefsOfDeletedObjectsFromList'); end; *************** *** 11567,11571 **** I: Integer; begin ! CodeSite.Send('Enter RefreshObjectsInList'); for I := 0 to Pred(BusyObjectRefs.Count) do begin --- 11568,11572 ---- I: Integer; begin ! //CodeSite.Send('Enter RefreshObjectsInList'); for I := 0 to Pred(BusyObjectRefs.Count) do begin *************** *** 11574,11582 **** Obj.Refresh; end; ! CodeSite.Send('Exit RefreshObjectsInList'); end; begin ! CodeSite.EnterMethod(Self, 'InternalRefreshObjects'); BusyObjectRefs := TInstantObjectReferenceList.Create(False, Connector); try --- 11575,11583 ---- Obj.Refresh; end; ! //CodeSite.Send('Exit RefreshObjectsInList'); end; begin ! //CodeSite.EnterMethod(Self, 'InternalRefreshObjects'); BusyObjectRefs := TInstantObjectReferenceList.Create(False, Connector); try *************** *** 11587,11591 **** Close; ! CodeSite.Send('After Close'); // Remove references from the BusyList for objects destroyed --- 11588,11592 ---- Close; ! //CodeSite.Send('After Close'); // Remove references from the BusyList for objects destroyed *************** *** 11594,11598 **** Open; ! CodeSite.Send('After Open'); // Refresh objects in the BusyList that were not destroyed --- 11595,11599 ---- Open; ! //CodeSite.Send('After Open'); // Refresh objects in the BusyList that were not destroyed *************** *** 11602,11606 **** BusyObjectRefs.Free; end; ! CodeSite.ExitMethod(Self, 'InternalRefreshObjects'); end; --- 11603,11607 ---- BusyObjectRefs.Free; end; ! //CodeSite.ExitMethod(Self, 'InternalRefreshObjects'); end; *************** *** 15371,15374 **** --- 15372,15382 ---- end; + function TInstantBrokerCatalog.GetBroker: TInstantBroker; + begin + if not Assigned(FBroker) then + raise EInstantError.Create(SUnassignedBroker); + Result := FBroker; + end; + { TInstantModelCatalog } |
From: Steven M. <sr...@us...> - 2005-12-22 07:28:55
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1434 Modified Files: InstantPersistence.pas Log Message: Changes: 1. Create TInstantObjectReferenceList based on TObjectList. TInstantObjectReferenceList delegates its list behaviour to a TObjectList. It is not a TObjectList descendant. Objects in this new list type are each wrapped in a TInstantObjectReference object; 2. Refactored the TInstantNavigationalQuery/TSQLQuery.InternalRefreshObjects methods into their ancestor TInstantCustomRelationalQuery class to reduce code duplication. Used the TInstantObjectReferenceList to process busy objects. Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.76 retrieving revision 1.77 diff -C2 -d -r1.76 -r1.77 *** InstantPersistence.pas 5 Dec 2005 21:37:12 -0000 1.76 --- InstantPersistence.pas 22 Dec 2005 07:28:45 -0000 1.77 *************** *** 1750,1753 **** --- 1750,1755 ---- end; + TInstantObjectReferenceList = class; + TInstantQuery = class(TPersistent) private *************** *** 2028,2031 **** --- 2030,2035 ---- protected function GetStatement: string; virtual; + procedure InternalGetInstantObjectRefs(List: TInstantObjectReferenceList); virtual; + procedure InternalRefreshObjects; override; procedure SetStatement(const Value: string); virtual; procedure TranslateCommand; override; *************** *** 2218,2221 **** --- 2222,2226 ---- function InternalAddObject(AObject: TObject): Integer; override; procedure InternalClose; override; + procedure InternalGetInstantObjectRefs(List: TInstantObjectReferenceList); override; function InternalGetObjectCount: Integer; override; function InternalGetObjects(Index: Integer): TObject; override; *************** *** 2453,2456 **** --- 2458,2462 ---- function InternalAddObject(AObject: TObject): Integer; override; procedure InternalClose; override; + procedure InternalGetInstantObjectRefs(List: TInstantObjectReferenceList); override; function InternalGetObjectCount: Integer; override; function InternalGetObjects(Index: Integer): TObject; override; *************** *** 2458,2462 **** procedure InternalInsertObject(Index: Integer; AObject: TObject); override; procedure InternalOpen; override; - procedure InternalRefreshObjects; override; procedure InternalReleaseObject(AObject: TObject); override; function InternalRemoveObject(AObject: TObject): Integer; override; --- 2464,2467 ---- *************** *** 2575,2578 **** --- 2580,2615 ---- end; + TInstantObjectReferenceList = class(TObject) + private + FConnector: TInstantConnector; + FList: TObjectList; + FRefOwner: TInstantComplex; + FRefOwnsInstance: Boolean; + function CreateObjectReference(AObject: TInstantObject): + TInstantObjectReference; + function GetCapacity: Integer; + function GetCount: Integer; + function GetItems(Index: Integer): TInstantObject; + function GetRefItems(Index: Integer): TInstantObjectReference; + procedure SetCapacity(Value: Integer); + procedure SetItems(Index: Integer; const Value: TInstantObject); + public + constructor Create(ARefOwnsInstance: Boolean; AConnector: TInstantConnector = + nil; ARefOwner: TInstantComplex = nil); + destructor Destroy; override; + function Add: TInstantObjectReference; overload; + function Add(Item: TInstantObject): Integer; overload; + procedure Clear; + procedure Delete(Index: Integer); + function IndexOf(Item: TInstantObject): Integer; + procedure Insert(Index: Integer; Item: TInstantObject); + function Remove(Item: TInstantObject): Integer; + property Capacity: Integer read GetCapacity write SetCapacity; + property Count: Integer read GetCount; + property Items[Index: Integer]: TInstantObject read GetItems write SetItems; + default; + property RefItems[Index: Integer]: TInstantObjectReference read GetRefItems; + end; + procedure AssignInstantStreamFormat(Strings: TStrings); function InstantAttributeTypeToDataType(AttributeType: TInstantAttributeType; *************** *** 11494,11497 **** --- 11531,11608 ---- end; + procedure TInstantCustomRelationalQuery.InternalGetInstantObjectRefs(List: + TInstantObjectReferenceList); + begin + end; + + procedure TInstantCustomRelationalQuery.InternalRefreshObjects; + var + BusyObjectRefs: TInstantObjectReferenceList; + Obj: TInstantObject; + ObjStore: TInstantObjectStore; + + procedure RemoveRefsOfDeletedObjectsFromList; + var + I: Integer; + begin + CodeSite.Send('Enter RemoveRefsOfDeletedObjectsFromList'); + CodeSite.Send('BusyObjectRefs.Count', BusyObjectRefs.Count); + for I := Pred(BusyObjectRefs.Count) downto 0 do + with BusyObjectRefs.RefItems[I] do + begin + CodeSite.Send('I', I); + ObjStore := Connector.ObjectStores.FindObjectStore(ObjectClass); + CodeSite.Send('Assigned(ObjStore)', Assigned(ObjStore)); + if not (Assigned(ObjStore) and Assigned(ObjStore.Find(ObjectId))) then + begin + CodeSite.Send('Delete(I)', I); + BusyObjectRefs.Delete(I); + end; + end; + CodeSite.Send('Exit RemoveRefsOfDeletedObjectsFromList'); + end; + + procedure RefreshObjectsInList; + var + I: Integer; + begin + CodeSite.Send('Enter RefreshObjectsInList'); + for I := 0 to Pred(BusyObjectRefs.Count) do + begin + Obj := BusyObjectRefs[I]; + if Assigned(Obj) then + Obj.Refresh; + end; + CodeSite.Send('Exit RefreshObjectsInList'); + end; + + begin + CodeSite.EnterMethod(Self, 'InternalRefreshObjects'); + BusyObjectRefs := TInstantObjectReferenceList.Create(False, Connector); + try + // Collect a reference to all InstantObjects in query. + // Note: In this list of TInstantObjectReferences + // OwnsInstance is false. + InternalGetInstantObjectRefs(BusyObjectRefs); + + Close; + CodeSite.Send('After Close'); + + // Remove references from the BusyList for objects destroyed + // when the query was closed. + RemoveRefsOfDeletedObjectsFromList; + + Open; + CodeSite.Send('After Open'); + + // Refresh objects in the BusyList that were not destroyed + // when the query was closed. + RefreshObjectsInList; + finally + BusyObjectRefs.Free; + end; + CodeSite.ExitMethod(Self, 'InternalRefreshObjects'); + end; + procedure TInstantCustomRelationalQuery.SetStatement(const Value: string); begin *************** *** 12522,12525 **** --- 12633,12646 ---- end; + procedure TInstantNavigationalQuery.InternalGetInstantObjectRefs(List: + TInstantObjectReferenceList); + var + I: Integer; + begin + for I := 0 to Pred(ObjectRowCount) do + if (ObjectRows[I]^.Instance is TInstantObject) then + List.Add(TInstantObject(ObjectRows[I]^.Instance)); + end; + function TInstantNavigationalQuery.InternalGetObjectCount: Integer; begin *************** *** 12576,12627 **** procedure TInstantNavigationalQuery.InternalRefreshObjects; - var - I, Idx: Integer; - BusyObjects: TObjectList; - Obj: TInstantObject; - ObjStore: TInstantObjectStore; begin if not DataSet.Active then Exit; - BusyObjects := TObjectList.Create; - try - // Collect a reference to all objects in query. - // Note: In this list of TInstantObjectReferences - // OwnsInstance is false. - for I := 0 to Pred(ObjectRowCount) do - with ObjectRows[I]^ do - if (Instance is TInstantObject) then - begin - Idx := BusyObjects.Add(TInstantObjectReference.Create(nil)); - TInstantObjectReference(BusyObjects[Idx]).ReferenceObject( - TInstantObject(Instance).ClassName, - TInstantObject(Instance).Id); - end; - - Close; ! // Remove references from the BusyList for objects deleted ! // when the query was closed. ! for I := Pred(BusyObjects.Count) downto 0 do ! with TInstantObjectReference(BusyObjects[I]) do ! begin ! ObjStore := Connector.ObjectStores.FindObjectStore(ObjectClass); ! if not (Assigned(ObjStore) and Assigned(ObjStore.Find(ObjectId))) then ! BusyObjects.Delete(I); ! end; ! ! Open; ! ! // Refresh objects in the BusyList that were not deleted ! // when the query was closed. ! for I := 0 to Pred(BusyObjects.Count) do ! begin ! Obj := TInstantObjectReference(BusyObjects[I]).Dereference(Connector, False); ! if Assigned(Obj) then ! Obj.Refresh; ! end; ! finally ! BusyObjects.Free; ! end; end; --- 12697,12705 ---- procedure TInstantNavigationalQuery.InternalRefreshObjects; begin if not DataSet.Active then Exit; ! inherited; end; *************** *** 14676,14679 **** --- 14754,14767 ---- end; + procedure TInstantSQLQuery.InternalGetInstantObjectRefs(List: + TInstantObjectReferenceList); + var + I: Integer; + begin + for I := 0 to Pred(ObjectReferenceCount) do + if ObjectReferences[I].HasInstance then + List.Add(ObjectReferences[I].Instance); + end; + function TInstantSQLQuery.InternalGetObjectCount: Integer; begin *************** *** 14726,14777 **** end; - procedure TInstantSQLQuery.InternalRefreshObjects; - var - I, Idx: Integer; - BusyObjects: TObjectList; - Obj: TInstantObject; - ObjStore: TInstantObjectStore; - begin - BusyObjects := TObjectList.Create; - try - // Collect a reference to all objects in query. - // Note: In this list of TInstantObjectReferences - // OwnsInstance is false. - for I := 0 to Pred(ObjectReferenceCount) do - with ObjectReferences[I] do - if HasInstance then - begin - Idx := BusyObjects.Add(TInstantObjectReference.Create(nil)); - TInstantObjectReference(BusyObjects[Idx]).ReferenceObject( - Instance.ClassName, Instance.Id); - end; - - Close; - - // Remove references from the BusyList for objects deleted - // when the query was closed. - for I := Pred(BusyObjects.Count) downto 0 do - with TInstantObjectReference(BusyObjects[I]) do - begin - ObjStore := Connector.ObjectStores.FindObjectStore(ObjectClass); - if not (Assigned(ObjStore) and Assigned(ObjStore.Find(ObjectId))) then - BusyObjects.Delete(I); - end; - - Open; - - // Refresh objects in the BusyList that were not deleted - // when the query was closed. - for I := Pred(BusyObjects.Count) downto 0 do - begin - Obj := TInstantObjectReference(BusyObjects[I]).Dereference(Connector, False); - if Assigned(Obj) then - Obj.Refresh; - end; - finally - BusyObjects.Free; - end; - end; - procedure TInstantSQLQuery.InternalReleaseObject(AObject: TObject); var --- 14814,14817 ---- *************** *** 15492,15495 **** --- 15532,15673 ---- end; + { TObjectReferenceList } + + constructor TInstantObjectReferenceList.Create(ARefOwnsInstance: Boolean; AConnector: + TInstantConnector; ARefOwner: TInstantComplex); + begin + inherited Create; + FList := TObjectList.Create; + FRefOwnsInstance := ARefOwnsInstance; + FRefOwner := ARefOwner; + FConnector := AConnector; + end; + + destructor TInstantObjectReferenceList.Destroy; + begin + FList.Free; + inherited; + end; + + function TInstantObjectReferenceList.Add: TInstantObjectReference; + begin + Result := CreateObjectReference(nil); + try + FList.Add(Result); + except + FreeAndNil(Result); + raise; + end; + end; + + function TInstantObjectReferenceList.Add(Item: TInstantObject): Integer; + var + Ref: TInstantObjectReference; + begin + Ref := CreateObjectReference(Item); + try + Result := FList.Add(Ref); + except + Ref.Free; + raise; + end; + end; + + procedure TInstantObjectReferenceList.Clear; + begin + FList.Clear; + end; + + function TInstantObjectReferenceList.CreateObjectReference(AObject: TInstantObject): + TInstantObjectReference; + begin + Result := TInstantObjectReference.Create(nil, FRefOwnsInstance, FRefOwner); + if Assigned(AObject) and FRefOwnsInstance then + Result.Instance := AObject + else + Result.ReferenceObject(AObject.ClassName, AObject.Id); + end; + + procedure TInstantObjectReferenceList.Delete(Index: Integer); + begin + FList.Delete(Index); + end; + + function TInstantObjectReferenceList.GetCapacity: Integer; + begin + Result := FList.Capacity; + end; + + function TInstantObjectReferenceList.GetCount: Integer; + begin + Result := FList.Count; + end; + + function TInstantObjectReferenceList.GetItems(Index: Integer): TInstantObject; + var + Ref: TInstantObjectReference; + begin + Ref := FList.Items[Index] as TInstantObjectReference; + Result := Ref.Dereference(FConnector, FRefOwnsInstance); + end; + + function TInstantObjectReferenceList.GetRefItems(Index: Integer): + TInstantObjectReference; + begin + Result := FList.Items[Index] as TInstantObjectReference; + end; + + function TInstantObjectReferenceList.IndexOf(Item: TInstantObject): Integer; + var + Ref: TInstantObjectReference; + begin + for Result := 0 to Pred(Count) do + begin + Ref := RefItems[Result]; + if Ref.Equals(Item) then + Exit; + end; + Result := -1; + end; + + procedure TInstantObjectReferenceList.Insert(Index: Integer; Item: TInstantObject); + var + Ref: TInstantObjectReference; + begin + Ref := CreateObjectReference(Item); + try + FList.Insert(Index, Ref); + except + Ref.Free; + raise; + end; + end; + + function TInstantObjectReferenceList.Remove(Item: TInstantObject): Integer; + begin + Result := IndexOf(Item); + if Result > -1 then + FList.Delete(Result); + end; + + procedure TInstantObjectReferenceList.SetCapacity(Value: Integer); + begin + FList.Capacity := Value; + end; + + procedure TInstantObjectReferenceList.SetItems(Index: Integer; const Value: + TInstantObject); + var + Ref: TInstantObjectReference; + begin + Ref := CreateObjectReference(Value); + try + FList.Items[Index] := Ref; + except + Ref.Free; + raise; + end; + end; + initialization RegisterClasses([TInstantClassMetadatas, TInstantClassMetadata, |
From: Steven M. <sr...@us...> - 2005-12-09 23:52:28
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15887 Modified Files: InstantPresentation.pas Log Message: Fix for a bug that would cause intermittent AVs when using InstantExposer components. Sometimes when a dataset refresh is done the InstantBookmark section of the current buffer does not contain a valid InstantObject instance. Index: InstantPresentation.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPresentation.pas,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** InstantPresentation.pas 24 Nov 2005 22:49:45 -0000 1.24 --- InstantPresentation.pas 9 Dec 2005 23:52:21 -0000 1.25 *************** *** 382,385 **** --- 382,386 ---- procedure DoAfterInsert; override; procedure DoBeforeDelete; override; + procedure DoBeforeRefresh; override; function FindContentModifiedObjectBuffer(AObject: TObject): PChar; virtual; function GetRecInfoUpdateStatus(ARecBuffer: PChar): TUpdateStatus; virtual; *************** *** 1483,1492 **** if Active then begin - // TODO: This Reset should not be necessary. - // It is a hack to avoid intermittent AVs. - // Further investigation is required to find - // the actual problem. - SM (24 Nov 2005) - Reset; - Refresh; DoAfterScroll; --- 1484,1487 ---- *************** *** 2207,2210 **** --- 2202,2211 ---- end; + procedure TInstantCustomExposer.DoBeforeRefresh; + begin + LoadRecord(RecNo, CurrentBuffer); + inherited; + end; + procedure TInstantCustomExposer.DoBeforeScroll; begin |
From: Carlo B. <car...@us...> - 2005-12-09 15:12:50
|
Update of /cvsroot/instantobjects/Source/Brokers/DBX In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22111/Source/Brokers/DBX Modified Files: InstantDBX.pas Log Message: DbExpress broker compatible with Oracle Corelab driver Index: InstantDBX.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Brokers/DBX/InstantDBX.pas,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** InstantDBX.pas 17 Oct 2005 10:21:18 -0000 1.10 --- InstantDBX.pas 9 Dec 2005 15:12:33 -0000 1.11 *************** *** 235,242 **** else if SameText(Connection.DriverName, 'MSSQL') then Result := TInstantDBXMSSQLBroker.Create(Self) ! else if SameText(Connection.DriverName, 'SQLServer') then //For CoreLab DbExpress driver Result := TInstantDBXMSSQLBroker.Create(Self) else if SameText(Connection.DriverName, 'Oracle') then Result := TInstantDBXOracleBroker.Create(Self) else if SameText(Connection.DriverName, 'DB2') then Result := TInstantDBXDB2Broker.Create(Self) --- 235,244 ---- else if SameText(Connection.DriverName, 'MSSQL') then Result := TInstantDBXMSSQLBroker.Create(Self) ! else if SameText(Connection.DriverName, 'SQLServer') then //For CoreLab driver Result := TInstantDBXMSSQLBroker.Create(Self) else if SameText(Connection.DriverName, 'Oracle') then Result := TInstantDBXOracleBroker.Create(Self) + else if SameText(Connection.DriverName, 'Oracle (Core Lab)') then //For CoreLab driver + Result := TInstantDBXOracleBroker.Create(Self) else if SameText(Connection.DriverName, 'DB2') then Result := TInstantDBXDB2Broker.Create(Self) |
From: Carlo B. <car...@us...> - 2005-12-09 15:12:43
|
Update of /cvsroot/instantobjects/Source/Brokers/DBX/D2006 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22111/Source/Brokers/DBX/D2006 Modified Files: IODBX.dpk Log Message: DbExpress broker compatible with Oracle Corelab driver Index: IODBX.dpk =================================================================== RCS file: /cvsroot/instantobjects/Source/Brokers/DBX/D2006/IODBX.dpk,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** IODBX.dpk 29 Oct 2005 11:28:03 -0000 1.1 --- IODBX.dpk 9 Dec 2005 15:12:33 -0000 1.2 *************** *** 1,5 **** package IODBX; - {$R *.res} {$ALIGN 8} {$ASSERTIONS ON} --- 1,4 ---- |
From: Carlo B. <car...@us...> - 2005-12-09 15:12:11
|
Update of /cvsroot/instantobjects/Source/Design In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22014/Source/Design Modified Files: InstantModelExpert.pas Log Message: Added list of units without IOMETADATA keywords into warning window. Index: InstantModelExpert.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Design/InstantModelExpert.pas,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** InstantModelExpert.pas 5 Dec 2005 22:00:22 -0000 1.13 --- InstantModelExpert.pas 9 Dec 2005 15:12:00 -0000 1.14 *************** *** 87,90 **** --- 87,91 ---- FUpdateTimer: TTimer; MetaDataCheckState : TIOMetaDataCheckState; + MetaDataCheckUnits : string; procedure ExplorerApplyClass(Sender: TObject; AClass: TInstantCodeClass; ChangeInfo: TInstantCodeClassChangeInfo); *************** *** 1016,1024 **** if MetaDataCheckState = mcNeverChecked then begin MetaDataCheckState := mcCheckCorrect; EnumSources(Modules, CheckIOMetadataKeyword); if MetaDataCheckState = mcCheckError then ! MessageDlg(Format('WARNING: Project %s contains some class metadata without IOMETADATA keyword. Please refer to IOMETADATA_keyword.txt in instantobjects\doc folder.', ! [FActiveProjectName]), mtWarning, [mbOK], 0); end; Result := (CheckTime = 0) or --- 1017,1027 ---- if MetaDataCheckState = mcNeverChecked then begin + MetadataCheckUnits := ''; MetaDataCheckState := mcCheckCorrect; EnumSources(Modules, CheckIOMetadataKeyword); if MetaDataCheckState = mcCheckError then ! MessageDlg(Format('WARNING: Project %s contains some class metadata without IOMETADATA keyword:'+ ! '%s'+sLineBreak+'Please refer to IOMETADATA_keyword.txt in instantobjects\doc folder.', ! [FActiveProjectName, MetadataCheckUnits]), mtWarning, [mbOK], 0); end; Result := (CheckTime = 0) or *************** *** 1181,1185 **** --- 1184,1191 ---- begin if pos('{ stored', Source) > 0 then + begin + MetaDataCheckUnits := MetaDataCheckUnits + sLineBreak+FileName+';'; MetaDataCheckState := mcCheckError; + end; end; |
From: Carlo B. <car...@us...> - 2005-12-09 15:10:37
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21727/Source/Core Modified Files: InstantConnectionManager.pas Log Message: Primer and PrimerCross file definitions changes accordling to IBX broker changes Index: InstantConnectionManager.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantConnectionManager.pas,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** InstantConnectionManager.pas 31 Oct 2005 13:49:56 -0000 1.22 --- InstantConnectionManager.pas 9 Dec 2005 15:10:29 -0000 1.23 *************** *** 280,284 **** ConnectionDef : TInstantConnectionDef; begin ! LoadConnectionDefs; ConnectionDef := ConnectionDefs.Find(ConnectionDefName) as TInstantConnectionDef; if Assigned(ConnectionDef) then --- 280,286 ---- ConnectionDef : TInstantConnectionDef; begin ! //Load connectiondefs only if connections definitions are not already loaded ! if ConnectionDefs.Count = 0 then ! LoadConnectionDefs; ConnectionDef := ConnectionDefs.Find(ConnectionDefName) as TInstantConnectionDef; if Assigned(ConnectionDef) then |
From: Carlo B. <car...@us...> - 2005-12-09 15:10:37
|
Update of /cvsroot/instantobjects/Demos/PrimerCross In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21727/Demos/PrimerCross Modified Files: Primer.xml PrimerExternal.xml Log Message: Primer and PrimerCross file definitions changes accordling to IBX broker changes Index: Primer.xml =================================================================== RCS file: /cvsroot/instantobjects/Demos/PrimerCross/Primer.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Primer.xml 19 Oct 2005 16:18:15 -0000 1.3 --- Primer.xml 9 Dec 2005 15:10:29 -0000 1.4 *************** *** 2,5 **** DEFAULT DRIVER=PARADOX ENABLE BCD=TRUE ! </Parameters></TInstantBDEConnectionDef><TInstantIBXConnectionDef><Name>FirebirdDB</Name><IsBuilt>TRUE</IsBuilt><BlobStreamFormat>sfXML</BlobStreamFormat><LoginPrompt>FALSE</LoginPrompt><Path>.\FirebirdDB\PRIMERDB.FDB</Path><NetType>ntLocal</NetType><Options>ibxUseDelimitedIdents</Options><Params>User_Name=SYSDBA Password=masterkey</Params></TInstantIBXConnectionDef></TInstantConnectionDefs> \ No newline at end of file --- 2,5 ---- DEFAULT DRIVER=PARADOX ENABLE BCD=TRUE ! </Parameters></TInstantBDEConnectionDef><TInstantIBXConnectionDef><Name>FirebirdDB</Name><IsBuilt>TRUE</IsBuilt><BlobStreamFormat>sfXML</BlobStreamFormat><LoginPrompt>FALSE</LoginPrompt><ConnectionString>.\FirebirdDB\PRIMERDB.FDB</ConnectionString><Options>ibxUseDelimitedIdents</Options><Params>User_Name=SYSDBA Password=masterkey</Params></TInstantIBXConnectionDef></TInstantConnectionDefs> \ No newline at end of file Index: PrimerExternal.xml =================================================================== RCS file: /cvsroot/instantobjects/Demos/PrimerCross/PrimerExternal.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PrimerExternal.xml 18 Feb 2005 15:36:51 -0000 1.3 --- PrimerExternal.xml 9 Dec 2005 15:10:29 -0000 1.4 *************** *** 1,2 **** ! <TInstantConnectionDefs><TInstantIBXConnectionDef><Name>FirebirdDBExternal</Name><IsBuilt>TRUE</IsBuilt><LoginPrompt>FALSE</LoginPrompt><Path>.\FirebirdDB\PRIMERDBEXTERNAL.FDB</Path><NetType>ntLocal</NetType><Options>ibxUseDelimitedIdents</Options><Params>User_Name=SYSDBA ! Password=masterkey</Params></TInstantIBXConnectionDef></TInstantConnectionDefs> \ No newline at end of file --- 1,11 ---- ! <TInstantConnectionDefs> ! <TInstantIBXConnectionDef> ! <Name>FirebirdDBExternal</Name> ! <IsBuilt>TRUE</IsBuilt> ! <LoginPrompt>FALSE</LoginPrompt> ! <ConnectionString>.\FirebirdDB\PRIMERDB.FDB</ConnectionString> ! <Options>ibxUseDelimitedIdents</Options> ! <Params>User_Name=SYSDBA ! Password=masterkey</Params> ! </TInstantIBXConnectionDef> ! </TInstantConnectionDefs> \ No newline at end of file |
From: Steven M. <sr...@us...> - 2005-12-07 20:33:47
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31818 Modified Files: InstantExplorer.pas Log Message: Fix for crashes occurring when the FNodeType is 'ntContainer' and FInstance is not a valid object. Index: InstantExplorer.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantExplorer.pas,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** InstantExplorer.pas 24 Nov 2005 23:14:11 -0000 1.5 --- InstantExplorer.pas 7 Dec 2005 20:33:39 -0000 1.6 *************** *** 268,272 **** FName := AName; FInstance := AInstance; ! if FInstance is TInstantObject then TInstantObject(FInstance).AddRef; FValue := AValue; --- 268,272 ---- FName := AName; FInstance := AInstance; ! if (FNodeType = ntObject) and (FInstance is TInstantObject) then TInstantObject(FInstance).AddRef; FValue := AValue; *************** *** 275,279 **** destructor TInstantExplorerNodeData.Destroy; begin ! if FInstance is TInstantObject then TInstantObject(FInstance).Free; inherited; --- 275,279 ---- destructor TInstantExplorerNodeData.Destroy; begin ! if (FNodeType = ntObject) and (FInstance is TInstantObject) then TInstantObject(FInstance).Free; inherited; |
From: Steven M. <sr...@us...> - 2005-12-05 22:00:32
|
Update of /cvsroot/instantobjects/Source/Design In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25040 Modified Files: InstantModelExplorer.dfm InstantModelExpert.pas Log Message: Changes as follows: 1. Rename the IDE menu item from "Model Explorer" to "InstantObjects Model Explorer"; 2. Rename the "Model Explorer" form title to "InstantObjects Model Explorer"; 3. In the newer BDS IDE add the item in the View menu so that the "InstantObjects Model Explorer" menu item is placed underneath the "Structure" menu item instead of defaulting to the bottom of the list. Index: InstantModelExpert.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Design/InstantModelExpert.pas,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** InstantModelExpert.pas 13 Oct 2005 10:51:27 -0000 1.12 --- InstantModelExpert.pas 5 Dec 2005 22:00:22 -0000 1.13 *************** *** 25,29 **** * * Contributor(s): ! * Nando Dessena * * ***** END LICENSE BLOCK ***** *) --- 25,29 ---- * * Contributor(s): ! * Nando Dessena, Steven Mitchell * * ***** END LICENSE BLOCK ***** *) *************** *** 172,176 **** SBuilderItemCaption = 'Database &Builder...'; SBuilderItemName = 'InstantBuilderItem'; ! SExplorerItemCaption = '&Model Explorer'; SExplorerItemName = 'InstantExplorerItem'; SModelCompiler = 'Model Compiler'; --- 172,176 ---- SBuilderItemCaption = 'Database &Builder...'; SBuilderItemName = 'InstantBuilderItem'; ! SExplorerItemCaption = 'InstantObjects &Model Explorer'; SExplorerItemName = 'InstantExplorerItem'; SModelCompiler = 'Model Compiler'; *************** *** 497,501 **** --- 497,505 ---- OnClick := ExplorerItemClick; end; + {$IFDEF D9+} + Item := ItemByName(Menu, 'ViewStructureItem'); + {$ELSE} Item := ItemByName(Menu, 'CodeExplorer'); + {$ENDIF} if Assigned(Item) then Menu.Insert(Item.MenuIndex + 1, FExplorerItem) Index: InstantModelExplorer.dfm =================================================================== RCS file: /cvsroot/instantobjects/Source/Design/InstantModelExplorer.dfm,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** InstantModelExplorer.dfm 25 Feb 2005 18:32:19 -0000 1.4 --- InstantModelExplorer.dfm 5 Dec 2005 22:00:22 -0000 1.5 *************** *** 6,10 **** VertScrollBar.Range = 20 AutoScroll = False ! Caption = 'Model Explorer' Color = clBtnFace Font.Charset = DEFAULT_CHARSET --- 6,10 ---- VertScrollBar.Range = 20 AutoScroll = False ! Caption = 'InstantObjects Model Explorer' Color = clBtnFace Font.Charset = DEFAULT_CHARSET |
From: Nando D. <na...@us...> - 2005-12-05 21:37:23
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19555/Source/Core Modified Files: InstantPersistence.pas Log Message: fixed memory leak in TInstantBroker.ReadDatabaseScheme Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -d -r1.75 -r1.76 *** InstantPersistence.pas 1 Dec 2005 03:18:00 -0000 1.75 --- InstantPersistence.pas 5 Dec 2005 21:37:12 -0000 1.76 *************** *** 10188,10194 **** begin Result := TInstantScheme.Create; ! Result.Catalog := CreateCatalog(Result); ! if Result.Catalog = nil then ! raise Exception.CreateFmt(SUndefinedCatalog, [ClassName]); end; --- 10188,10199 ---- begin Result := TInstantScheme.Create; ! try ! Result.Catalog := CreateCatalog(Result); ! if Result.Catalog = nil then ! raise Exception.CreateFmt(SUndefinedCatalog, [ClassName]); ! except ! Result.Free; ! raise; ! end; end; |