From: <jfu...@us...> - 2007-03-04 19:42:39
|
Revision: 11200 http://svn.sourceforge.net/jvcl/?rev=11200&view=rev Author: jfudickar Date: 2007-03-04 11:42:35 -0800 (Sun, 04 Mar 2007) Log Message: ----------- Added JvOdacOraQuery and JvOdacOraTable Modified Paths: -------------- trunk/jvcl/design/JvDBReg.pas trunk/jvcl/run/JvOdacSmartQuery.pas Modified: trunk/jvcl/design/JvDBReg.pas =================================================================== --- trunk/jvcl/design/JvDBReg.pas 2007-03-02 23:27:55 UTC (rev 11199) +++ trunk/jvcl/design/JvDBReg.pas 2007-03-04 19:42:35 UTC (rev 11200) @@ -90,6 +90,7 @@ {$ENDIF USE_3RDPARTY_DOA} {$IFDEF USE_3RDPARTY_CORELAB_ODAC} TJvDBOdacConnectDialog, TJvDBOdacPasswordDialog, TjvOdacSmartQuery, + TjvOdacOraTable, TjvOdacOraQuery, {$ENDIF USE_3RDPARTY_CORELAB_ODAC} TJvDBGridWordExport, TJvDBGridExcelExport, TJvDBGridHTMLExport, TJvDBGridCSVExport, TJvDBGridXMLExport, TJvDatabaseActionList]); Modified: trunk/jvcl/run/JvOdacSmartQuery.pas =================================================================== --- trunk/jvcl/run/JvOdacSmartQuery.pas 2007-03-02 23:27:55 UTC (rev 11199) +++ trunk/jvcl/run/JvOdacSmartQuery.pas 2007-03-04 19:42:35 UTC (rev 11200) @@ -123,6 +123,117 @@ property ThreadOptions: TJvThreadedDatasetThreadOptions read GetThreadOptions write SetThreadOptions; end; + TJvOdacOraQuery = class(TOraQuery, IJvThreadedDatasetInterface) + procedure BreakExecution; + procedure DoInheritedAfterOpen; + procedure DoInheritedAfterRefresh; + procedure DoInheritedBeforeOpen; + procedure DoInheritedBeforeRefresh; + procedure DoInheritedInternalLast; + procedure DoInheritedInternalRefresh; + procedure DoInheritedSetActive(Active: Boolean); + procedure DoInternalOpen; + function GetDatasetFetchAllRecords: Boolean; + function IsThreadAllowed: Boolean; + procedure SetDatasetFetchAllRecords(const Value: Boolean); + private + FBeforeFetch: TBeforeFetchEvent; + FThreadHandler: TJvBaseDatasetThreadHandler; + function GetAfterThreadExecution: TJvThreadedDatasetThreadEvent; + function GetBeforeThreadExecution: TJvThreadedDatasetThreadEvent; + function GetDialogOptions: TJvThreadedDatasetDialogOptions; + function GetEnhancedOptions: TJvOdacThreadedDatasetEnhancedOptions; + function GetThreadOptions: TJvThreadedDatasetThreadOptions; + procedure SetAfterThreadExecution(const Value: TJvThreadedDatasetThreadEvent); + procedure SetBeforeThreadExecution(const Value: TJvThreadedDatasetThreadEvent); + procedure SetDialogOptions(Value: TJvThreadedDatasetDialogOptions); + procedure SetEnhancedOptions(const Value: + TJvOdacThreadedDatasetEnhancedOptions); + procedure SetThreadOptions(const Value: TJvThreadedDatasetThreadOptions); + property ThreadHandler: TJvBaseDatasetThreadHandler read FThreadHandler; + protected + procedure DoAfterOpen; override; + procedure DoAfterRefresh; override; + procedure DoBeforeOpen; override; + procedure DoBeforeRefresh; override; + procedure InternalLast; override; + procedure InternalRefresh; override; + procedure ReplaceBeforeFetch(Dataset: TCustomDADataSet; var Cancel: Boolean); + procedure SetActive(Value: Boolean); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function CurrentFetchDuration: TDateTime; + function CurrentOpenDuration: TDateTime; + function ErrorMessage: string; + function ThreadIsActive: Boolean; + published + property AfterThreadExecution: TJvThreadedDatasetThreadEvent read + GetAfterThreadExecution write SetAfterThreadExecution; + property BeforeFetch: TBeforeFetchEvent read FBeforeFetch write FBeforeFetch; + property BeforeThreadExecution: TJvThreadedDatasetThreadEvent read + GetBeforeThreadExecution write SetBeforeThreadExecution; + property DialogOptions: TJvThreadedDatasetDialogOptions read GetDialogOptions write SetDialogOptions; + property EnhancedOptions: TJvOdacThreadedDatasetEnhancedOptions read GetEnhancedOptions write SetEnhancedOptions; + property ThreadOptions: TJvThreadedDatasetThreadOptions read GetThreadOptions write SetThreadOptions; + end; + +type + TJvOdacOraTable = class(TOraTable, IJvThreadedDatasetInterface) + procedure BreakExecution; + procedure DoInheritedAfterOpen; + procedure DoInheritedAfterRefresh; + procedure DoInheritedBeforeOpen; + procedure DoInheritedBeforeRefresh; + procedure DoInheritedInternalLast; + procedure DoInheritedInternalRefresh; + procedure DoInheritedSetActive(Active: Boolean); + procedure DoInternalOpen; + function GetDatasetFetchAllRecords: Boolean; + function IsThreadAllowed: Boolean; + procedure SetDatasetFetchAllRecords(const Value: Boolean); + private + FBeforeFetch: TBeforeFetchEvent; + FThreadHandler: TJvBaseDatasetThreadHandler; + function GetAfterThreadExecution: TJvThreadedDatasetThreadEvent; + function GetBeforeThreadExecution: TJvThreadedDatasetThreadEvent; + function GetDialogOptions: TJvThreadedDatasetDialogOptions; + function GetEnhancedOptions: TJvOdacThreadedDatasetEnhancedOptions; + function GetThreadOptions: TJvThreadedDatasetThreadOptions; + procedure SetAfterThreadExecution(const Value: TJvThreadedDatasetThreadEvent); + procedure SetBeforeThreadExecution(const Value: TJvThreadedDatasetThreadEvent); + procedure SetDialogOptions(Value: TJvThreadedDatasetDialogOptions); + procedure SetEnhancedOptions(const Value: + TJvOdacThreadedDatasetEnhancedOptions); + procedure SetThreadOptions(const Value: TJvThreadedDatasetThreadOptions); + property ThreadHandler: TJvBaseDatasetThreadHandler read FThreadHandler; + protected + procedure DoAfterOpen; override; + procedure DoAfterRefresh; override; + procedure DoBeforeOpen; override; + procedure DoBeforeRefresh; override; + procedure InternalLast; override; + procedure InternalRefresh; override; + procedure ReplaceBeforeFetch(Dataset: TCustomDADataSet; var Cancel: Boolean); + procedure SetActive(Value: Boolean); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function CurrentFetchDuration: TDateTime; + function CurrentOpenDuration: TDateTime; + function ErrorMessage: string; + function ThreadIsActive: Boolean; + published + property AfterThreadExecution: TJvThreadedDatasetThreadEvent read + GetAfterThreadExecution write SetAfterThreadExecution; + property BeforeFetch: TBeforeFetchEvent read FBeforeFetch write FBeforeFetch; + property BeforeThreadExecution: TJvThreadedDatasetThreadEvent read + GetBeforeThreadExecution write SetBeforeThreadExecution; + property DialogOptions: TJvThreadedDatasetDialogOptions read GetDialogOptions write SetDialogOptions; + property EnhancedOptions: TJvOdacThreadedDatasetEnhancedOptions read GetEnhancedOptions write SetEnhancedOptions; + property ThreadOptions: TJvThreadedDatasetThreadOptions read GetThreadOptions write SetThreadOptions; + end; + {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( @@ -401,6 +512,478 @@ inherited AllowedContinueRecordFetchOptions := Value; end; +//=== { TJvOdacSmartQuery } ================================================== + +constructor TJvOdacOraQuery.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FThreadHandler := TJvOdacDatasetThreadHandler.Create(Self, Self); + inherited BeforeFetch := ReplaceBeforeFetch; +end; + +destructor TJvOdacOraQuery.Destroy; +begin + FreeAndNil(FThreadHandler); + inherited Destroy; +end; + +procedure TJvOdacOraQuery.BreakExecution; +begin + BreakExec; +end; + +function TJvOdacOraQuery.CurrentFetchDuration: TDateTime; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.CurrentFetchDuration + else + Result := 0; +end; + +function TJvOdacOraQuery.CurrentOpenDuration: TDateTime; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.CurrentOpenDuration + else + Result := 0; +end; + +procedure TJvOdacOraQuery.DoAfterOpen; +begin + ThreadHandler.AfterOpen; +end; + +procedure TJvOdacOraQuery.DoAfterRefresh; +begin + ThreadHandler.AfterRefresh; +end; + +procedure TJvOdacOraQuery.DoBeforeOpen; +begin + ThreadHandler.BeforeOpen; +end; + +procedure TJvOdacOraQuery.DoBeforeRefresh; +begin + ThreadHandler.BeforeRefresh; +end; + +procedure TJvOdacOraQuery.DoInheritedAfterOpen; +begin + inherited DoAfterOpen; +end; + +procedure TJvOdacOraQuery.DoInheritedAfterRefresh; +begin + inherited DoAfterRefresh; +end; + +procedure TJvOdacOraQuery.DoInheritedBeforeOpen; +begin + inherited DoBeforeOpen; +end; + +procedure TJvOdacOraQuery.DoInheritedBeforeRefresh; +begin + inherited DoBeforeRefresh; +end; + +procedure TJvOdacOraQuery.DoInheritedInternalLast; +begin + inherited InternalLast; +end; + +procedure TJvOdacOraQuery.DoInheritedInternalRefresh; +begin + inherited InternalRefresh; +end; + +procedure TJvOdacOraQuery.DoInheritedSetActive(Active: Boolean); +begin + inherited SetActive(Active); +end; + +procedure TJvOdacOraQuery.DoInternalOpen; +begin + InternalOpen; +end; + +function TJvOdacOraQuery.ErrorMessage: string; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.ErrorMessage + else + Result := ''; +end; + +function TJvOdacOraQuery.GetAfterThreadExecution: + TJvThreadedDatasetThreadEvent; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.AfterThreadExecution + else + Result := nil; +end; + +function TJvOdacOraQuery.GetBeforeThreadExecution: + TJvThreadedDatasetThreadEvent; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.BeforeThreadExecution + else + Result := nil; +end; + +function TJvOdacOraQuery.GetDatasetFetchAllRecords: Boolean; +begin + Result := FetchAll; +end; + +function TJvOdacOraQuery.GetDialogOptions: TJvThreadedDatasetDialogOptions; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.DialogOptions + else + Result := nil; +end; + +function TJvOdacOraQuery.GetEnhancedOptions: + TJvOdacThreadedDatasetEnhancedOptions; +begin + if Assigned(ThreadHandler) then + Result := TJvOdacThreadedDatasetEnhancedOptions(ThreadHandler.EnhancedOptions) + else + Result := nil; +end; + +function TJvOdacOraQuery.GetThreadOptions: TJvThreadedDatasetThreadOptions; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.ThreadOptions + else + Result := nil; +end; + +procedure TJvOdacOraQuery.InternalLast; +begin + if Assigned(ThreadHandler) then + ThreadHandler.InternalLast; +end; + +procedure TJvOdacOraQuery.InternalRefresh; +begin + if Assigned(ThreadHandler) then + ThreadHandler.InternalRefresh; +end; + +function TJvOdacOraQuery.IsThreadAllowed: Boolean; +begin + if Assigned(MasterSource) and Assigned(MasterSource.Dataset) and (MasterSource.Dataset is TJvOdacSmartQuery) then + Result := not TJvOdacSmartQuery(MasterSource.Dataset).ThreadHandler.ThreadIsActive + else + Result := True; +end; + +procedure TJvOdacOraQuery.ReplaceBeforeFetch(Dataset: TCustomDADataSet; var + Cancel: Boolean); +begin + if Assigned(ThreadHandler) then + Cancel := ThreadHandler.CheckContinueRecordFetch <> tdccrContinue; + if Assigned(BeforeFetch) then + BeforeFetch(Dataset, Cancel); +end; + +procedure TJvOdacOraQuery.SetActive(Value: Boolean); +begin + if Assigned(ThreadHandler) then + ThreadHandler.SetActive(Value); +end; + +procedure TJvOdacOraQuery.SetAfterThreadExecution(const Value: + TJvThreadedDatasetThreadEvent); +begin + if Assigned(ThreadHandler) then + ThreadHandler.AfterThreadExecution := Value; +end; + +procedure TJvOdacOraQuery.SetBeforeThreadExecution(const Value: + TJvThreadedDatasetThreadEvent); +begin + if Assigned(ThreadHandler) then + ThreadHandler.BeforeThreadExecution := Value; +end; + +procedure TJvOdacOraQuery.SetDatasetFetchAllRecords(const Value: Boolean); +begin + FetchAll := Value; +end; + +procedure TJvOdacOraQuery.SetDialogOptions(Value: + TJvThreadedDatasetDialogOptions); +begin + if Assigned(ThreadHandler) then + ThreadHandler.DialogOptions.Assign(Value); +end; + +procedure TJvOdacOraQuery.SetEnhancedOptions(const Value: + TJvOdacThreadedDatasetEnhancedOptions); +begin + if Assigned(ThreadHandler) then + ThreadHandler.EnhancedOptions.Assign(Value); +end; + +procedure TJvOdacOraQuery.SetThreadOptions(const Value: + TJvThreadedDatasetThreadOptions); +begin + if Assigned(ThreadHandler) then + ThreadHandler.ThreadOptions.Assign(Value); +end; + +function TJvOdacOraQuery.ThreadIsActive: Boolean; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.ThreadIsActive + else + Result := False; +end; + +//=== { TJvOdacSmartQuery } ================================================== + +constructor TJvOdacOraTable.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FThreadHandler := TJvOdacDatasetThreadHandler.Create(Self, Self); + inherited BeforeFetch := ReplaceBeforeFetch; +end; + +destructor TJvOdacOraTable.Destroy; +begin + FreeAndNil(FThreadHandler); + inherited Destroy; +end; + +procedure TJvOdacOraTable.BreakExecution; +begin + BreakExec; +end; + +function TJvOdacOraTable.CurrentFetchDuration: TDateTime; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.CurrentFetchDuration + else + Result := 0; +end; + +function TJvOdacOraTable.CurrentOpenDuration: TDateTime; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.CurrentOpenDuration + else + Result := 0; +end; + +procedure TJvOdacOraTable.DoAfterOpen; +begin + ThreadHandler.AfterOpen; +end; + +procedure TJvOdacOraTable.DoAfterRefresh; +begin + ThreadHandler.AfterRefresh; +end; + +procedure TJvOdacOraTable.DoBeforeOpen; +begin + ThreadHandler.BeforeOpen; +end; + +procedure TJvOdacOraTable.DoBeforeRefresh; +begin + ThreadHandler.BeforeRefresh; +end; + +procedure TJvOdacOraTable.DoInheritedAfterOpen; +begin + inherited DoAfterOpen; +end; + +procedure TJvOdacOraTable.DoInheritedAfterRefresh; +begin + inherited DoAfterRefresh; +end; + +procedure TJvOdacOraTable.DoInheritedBeforeOpen; +begin + inherited DoBeforeOpen; +end; + +procedure TJvOdacOraTable.DoInheritedBeforeRefresh; +begin + inherited DoBeforeRefresh; +end; + +procedure TJvOdacOraTable.DoInheritedInternalLast; +begin + inherited InternalLast; +end; + +procedure TJvOdacOraTable.DoInheritedInternalRefresh; +begin + inherited InternalRefresh; +end; + +procedure TJvOdacOraTable.DoInheritedSetActive(Active: Boolean); +begin + inherited SetActive(Active); +end; + +procedure TJvOdacOraTable.DoInternalOpen; +begin + InternalOpen; +end; + +function TJvOdacOraTable.ErrorMessage: string; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.ErrorMessage + else + Result := ''; +end; + +function TJvOdacOraTable.GetAfterThreadExecution: + TJvThreadedDatasetThreadEvent; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.AfterThreadExecution + else + Result := nil; +end; + +function TJvOdacOraTable.GetBeforeThreadExecution: + TJvThreadedDatasetThreadEvent; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.BeforeThreadExecution + else + Result := nil; +end; + +function TJvOdacOraTable.GetDatasetFetchAllRecords: Boolean; +begin + Result := FetchAll; +end; + +function TJvOdacOraTable.GetDialogOptions: TJvThreadedDatasetDialogOptions; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.DialogOptions + else + Result := nil; +end; + +function TJvOdacOraTable.GetEnhancedOptions: + TJvOdacThreadedDatasetEnhancedOptions; +begin + if Assigned(ThreadHandler) then + Result := TJvOdacThreadedDatasetEnhancedOptions(ThreadHandler.EnhancedOptions) + else + Result := nil; +end; + +function TJvOdacOraTable.GetThreadOptions: TJvThreadedDatasetThreadOptions; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.ThreadOptions + else + Result := nil; +end; + +procedure TJvOdacOraTable.InternalLast; +begin + if Assigned(ThreadHandler) then + ThreadHandler.InternalLast; +end; + +procedure TJvOdacOraTable.InternalRefresh; +begin + if Assigned(ThreadHandler) then + ThreadHandler.InternalRefresh; +end; + +function TJvOdacOraTable.IsThreadAllowed: Boolean; +begin + if Assigned(MasterSource) and Assigned(MasterSource.Dataset) and (MasterSource.Dataset is TJvOdacSmartQuery) then + Result := not TJvOdacSmartQuery(MasterSource.Dataset).ThreadHandler.ThreadIsActive + else + Result := True; +end; + +procedure TJvOdacOraTable.ReplaceBeforeFetch(Dataset: TCustomDADataSet; var + Cancel: Boolean); +begin + if Assigned(ThreadHandler) then + Cancel := ThreadHandler.CheckContinueRecordFetch <> tdccrContinue; + if Assigned(BeforeFetch) then + BeforeFetch(Dataset, Cancel); +end; + +procedure TJvOdacOraTable.SetActive(Value: Boolean); +begin + if Assigned(ThreadHandler) then + ThreadHandler.SetActive(Value); +end; + +procedure TJvOdacOraTable.SetAfterThreadExecution(const Value: + TJvThreadedDatasetThreadEvent); +begin + if Assigned(ThreadHandler) then + ThreadHandler.AfterThreadExecution := Value; +end; + +procedure TJvOdacOraTable.SetBeforeThreadExecution(const Value: + TJvThreadedDatasetThreadEvent); +begin + if Assigned(ThreadHandler) then + ThreadHandler.BeforeThreadExecution := Value; +end; + +procedure TJvOdacOraTable.SetDatasetFetchAllRecords(const Value: Boolean); +begin + FetchAll := Value; +end; + +procedure TJvOdacOraTable.SetDialogOptions(Value: + TJvThreadedDatasetDialogOptions); +begin + if Assigned(ThreadHandler) then + ThreadHandler.DialogOptions.Assign(Value); +end; + +procedure TJvOdacOraTable.SetEnhancedOptions(const Value: + TJvOdacThreadedDatasetEnhancedOptions); +begin + if Assigned(ThreadHandler) then + ThreadHandler.EnhancedOptions.Assign(Value); +end; + +procedure TJvOdacOraTable.SetThreadOptions(const Value: + TJvThreadedDatasetThreadOptions); +begin + if Assigned(ThreadHandler) then + ThreadHandler.ThreadOptions.Assign(Value); +end; + +function TJvOdacOraTable.ThreadIsActive: Boolean; +begin + if Assigned(ThreadHandler) then + Result := ThreadHandler.ThreadIsActive + else + Result := False; +end; + + + {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |