home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 October / PCWorld_2000-10_cd2.bin / Borland / interbase / IBConsole_src.ZIP / ibconsole / zluibcClasses.pas < prev    next >
Pascal/Delphi Source File  |  2000-07-24  |  13KB  |  362 lines

  1. {
  2.  * The contents of this file are subject to the InterBase Public License
  3.  * Version 1.0 (the "License"); you may not use this file except in
  4.  * compliance with the License.
  5.  * 
  6.  * You may obtain a copy of the License at http://www.Inprise.com/IPL.html.
  7.  * 
  8.  * Software distributed under the License is distributed on an "AS IS"
  9.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  10.  * the License for the specific language governing rights and limitations
  11.  * under the License.  The Original Code was created by Inprise
  12.  * Corporation and its predecessors.
  13.  * 
  14.  * Portions created by Inprise Corporation are Copyright (C) Inprise
  15.  * Corporation. All Rights Reserved.
  16.  * 
  17.  * Contributor(s): ______________________________________.
  18. }
  19.  
  20. {****************************************************************
  21. *
  22. *  z l u i b c C l a s s e s
  23. *
  24. ****************************************************************
  25. *  Author: The Client Server Factory Inc.
  26. *  Date:   March 1, 1999
  27. *
  28. *  Description:  This unit contains custom class definitions/
  29. *                implementations
  30. *
  31. *****************************************************************
  32. * Revisions:
  33. *
  34. *****************************************************************}
  35.  
  36. unit zluibcClasses;
  37.  
  38. interface
  39.  
  40. uses
  41.   Forms, SysUtils, Classes, WinTypes, WinProcs, CommCtrl, IBDatabase, IB,
  42.   IBServices, IBSQL, DB, IBCustomDataSet, Controls, frmuObjectWindow, zluGlobal,
  43.   frmuTextViewer;
  44.  
  45. type
  46.  
  47.   TibcTreeNode = class(TComponent)
  48.   private
  49.     FNodeID: HTreeItem;
  50.     FNodeName: string;
  51.     FNodeType: word;
  52.     FShowSystem: boolean;
  53.     FObjectList: TStringList;
  54.   protected
  55.   public
  56.     property NodeID: HTreeItem read FNodeID;
  57.     property NodeName: string read FNodeName write FNodeName;
  58.     property NodeType: word read FNodeType;
  59.     property ShowSystem: boolean read FShowSystem write FShowSystem;
  60.     property ObjectList: TStringList read FObjectList write FObjectList;
  61.  
  62.     constructor Create(AOwner: TComponent; const NodeID: HTreeItem; const NodeName: string; const NodeType: word); reintroduce;
  63.     destructor Destroy(); override;
  64.   published
  65.   end;
  66.  
  67.   TibcServerNode = class(TibcTreeNode)
  68.   private
  69.     FServerName: string;
  70.     FUserName: string;
  71.     FPassword: string;
  72.     FVersion : Integer;
  73.     FDatabasesID: HTreeItem;
  74.     FBackupFilesID: HTreeItem;
  75.     FServer: TIBServerProperties;
  76.     FDescription: string;
  77.     FLastAccessed: TDateTime;
  78.     FOutputWindow: TfrmTextViewer;
  79.   protected
  80.   public
  81.     property Servername: string read FServername write FServername;
  82.     property UserName: string read FUserName write FUserName;
  83.     property Password: string read FPassword write FPassword;
  84.     property DatabasesID: HTreeItem read FDatabasesID write FDatabasesID;
  85.     property Version : Integer read FVersion write FVersion;
  86.     property Description: string read FDescription write FDescription;
  87.     property LastAccessed: TDateTime read FLastAccessed write FLastAccessed;
  88.     property BackupFilesID: HTreeItem read FBackupFilesID write FBackupFilesID;
  89.     property Server: TIBServerProperties read FServer write FServer;
  90.     property OutputWindow: TfrmTextViewer read FOutputWindow;
  91.  
  92.     constructor Create(AOwner: TComponent; const NodeID: HTreeItem; const NodeName,ServerName,UserName,Password, Description: string; const Protocol: TProtocol; const LastAccessed: TDateTime; const NodeType: word);
  93.     destructor Destroy(); override;
  94.     procedure ShowText (const Data: TStringList; const Title: String;
  95.         const readonly: boolean=true);
  96.     procedure OpenTextViewer (const Service: TIBControlAndQueryService;
  97.         const Title: String; const readonly: boolean=true);
  98.   published
  99.   end;
  100.  
  101.   TibcDatabaseNode = class(TibcTreeNode)
  102.   private
  103.     FDatabaseFiles: TStringList;
  104.     FUserName: string;
  105.     FPassword: string;
  106.     FRole: string;
  107.     FCaseSensitiveRole: boolean;
  108.     FDefaultBackupAlias: string;
  109.     FSQLBuffer: TStringList;
  110.     FSQLBufferPos: integer;
  111.     FDatabase: TIBDatabase;
  112.     FTransaction: TIBTransaction;
  113.     FQryTransaction: TIBTransaction;
  114.     FDataSet: TIBDataSet;
  115.     FQryDataSet: TIBDataSet;
  116.     FDataSource: TDataSource;
  117.     FQryDataSource: TDataSource;
  118.     FQuery: TIBSQL;
  119.  
  120.     FTablesID: HTreeItem;
  121.     FDomainsID: HTreeItem;
  122.     FViewsID: HTreeItem;
  123.     FProceduresID: HTreeItem;
  124.     FFunctionsID: HTreeItem;
  125.     FGeneratorsID: HTreeItem;
  126.     FExceptionsID: HTreeItem;
  127.     FFiltersID: HTreeItem;
  128.     FRolesID: HTreeItem;
  129.     FTriggersID: HTreeItem;
  130.  
  131.     FObjectViewer: TFrmObjectView;
  132.  
  133.   protected
  134.   public
  135.     property DatabaseFiles: TStringList read FDatabaseFiles write FDatabaseFiles;
  136.     property UserName: string read FUserName write FUserName;
  137.     property Password: string read FPassword write FPassword;
  138.     property Role: string read FRole write FRole;
  139.     property CaseSensitiveRole: boolean read FCaseSensitiveRole write FCaseSensitiveRole;
  140.     property DefaultBackupAlias: string read FDefaultBackupAlias write FDefaultBackupAlias;
  141.     property SQLBuffer: TStringList read FSQLBuffer write FSQLBuffer;
  142.     property SQLBufferPos: integer read FSQLBufferPos write FSQLBufferPos;
  143.     property Database: TIBDatabase read FDatabase write FDatabase;
  144.     property Transaction: TIBTransaction read FTransaction write FTransaction;
  145.     property QryTransaction: TIBTransaction read FQryTransaction write FQryTransaction;
  146.     property DataSet: TIBDataSet read FDataSet write FDataSet;
  147.     property QryDataSet: TIBDataSet read FQryDataSet write FQryDataSet;
  148.     property DataSource: TDataSource read FDatasource write FDatasource;
  149.     property QryDataSource: TDataSource read FQryDatasource write FQryDatasource;
  150.     property Query: TIBSQL read FQuery write FQuery;
  151.  
  152.     property TablesID: HTreeItem read FTablesID write FTablesID;
  153.     property DomainsID: HTreeItem read FDomainsID write FDomainsID;
  154.     property ViewsID: HTreeItem read FViewsID write FViewsID;
  155.     property ProceduresID: HTreeItem read FProceduresID write FProceduresID;
  156.     property FunctionsID: HTreeItem read FFunctionsID write FFunctionsID;
  157.     property GeneratorsID: HTreeItem read FGeneratorsID write FGeneratorsID;
  158.     property ExceptionsID: HTreeItem read FExceptionsID write FExceptionsID;
  159.     property FiltersID: HTreeItem read FFiltersID write FFiltersID;
  160.     property RolesID: HTreeItem read FRolesID write FRolesID;
  161.     property TriggersID: HTreeItem read FTriggersID write FTriggersID;
  162.  
  163.     property ObjectViewer: TFrmObjectView read FObjectViewer;
  164.  
  165.     constructor Create(AOwner: TComponent; const NodeID: HTreeItem;
  166.       const NodeName: string; const NodeType: word;
  167.       const DatabaseFiles: TStringList; var NewDatabase: TIBDatabase);
  168.     destructor Destroy(); override;
  169.     procedure CreateObjectViewer;
  170.   published
  171.   end;
  172.  
  173.   TibcBackupAliasNode = class(TibcTreeNode)
  174.   private
  175.     FSourceDBServer: string;
  176.     FSourceDBAlias: string;
  177.     FBackupFiles: TStringList;
  178.     FCreated: TDateTime;
  179.     FLastAccessed: TDateTime;
  180.   protected
  181.   public
  182.     property SourceDBServer: string read FSourceDBServer write FSourceDBServer;
  183.     property SourceDBAlias: string read FSourceDBAlias write FSourceDBAlias;
  184.     property BackupFiles: TStringList read FBackupFiles write FBackupFiles;
  185.     property Created: TDateTime read FCreated write FCreated;
  186.     property LastAccessed: TDateTime read FLastAccessed write FLastAccessed;
  187.     constructor Create(AOwner: TComponent; const NodeID: HTreeItem; const NodeName: string; const Created, LastAccessed: TDateTime; const NodeType: word);
  188.     destructor Destroy(); override;
  189.   published
  190.   end;
  191.  
  192. implementation
  193.  
  194. constructor TibcTreeNode.Create(AOwner: TComponent; const NodeID: HTreeItem; const NodeName: string; const NodeType: word);
  195. begin
  196.   inherited Create(AOwner);
  197.   FNodeID := NodeID;
  198.   FNodeName := NodeName;
  199.   FNodeType := NodeType;
  200.   FObjectList := TStringList.Create;
  201.   FShowSystem := false;
  202. end;
  203.  
  204. destructor TibcTreeNode.Destroy();
  205. begin
  206.   FObjectList.Free;
  207.   inherited Destroy();
  208. end;
  209.  
  210. constructor TibcServerNode.Create(AOwner: TComponent; const NodeID: HTreeItem; const NodeName,Servername,UserName,Password, Description: string; const Protocol: TProtocol; const LastAccessed: TDateTime; const NodeType: word);
  211. begin
  212.   inherited Create(AOwner,NodeID,NodeName,NodeType);
  213.   FServername := Servername;
  214.   FUserName := UserName;
  215.   FPassword := Password;
  216.   FVersion := 6;
  217.   FServer := TIBServerProperties.Create(nil);
  218.   FServer.ServerName := ServerName;
  219.   FServer.Protocol := Protocol;
  220.   FServer.LoginPrompt := false;
  221.   FDescription := Description;
  222.   FLastAccessed := LastAccessed;
  223.   FOutputWindow := nil;
  224. end;
  225.  
  226. destructor TibcServerNode.Destroy();
  227. begin
  228.   try
  229.     if Self.Server.Active then
  230.       FServer.Detach;
  231.     FServer.Free;
  232.   except on E: Exception do
  233.     FServer.Free;
  234.   end;
  235.   inherited Destroy();
  236. end;
  237.  
  238. constructor TibcDatabaseNode.Create(AOwner: TComponent; const NodeID: HTreeItem;
  239.   const NodeName: string; const NodeType: word; const DatabaseFiles: TStringList;
  240.   var NewDatabase: TIBDatabase);
  241. var
  242.   tmp: string;
  243. begin
  244.   inherited Create(AOwner,NodeID,NodeName,NodeType);
  245.  
  246.   FObjectViewer := nil;
  247.   FDatabaseFiles := TStringList.Create;
  248.  
  249.   if not Assigned(NewDatabase) then
  250.     FDatabase := TIBDatabase.Create(AOwner)
  251.   else
  252.     FDatabase := NewDatabase;
  253.  
  254.   FTransaction := TIBTransaction.Create(AOwner);
  255.   FQryTransaction := TIBTransaction.Create(AOwner);
  256.   FDataSet := TIBDataSet.Create (AOwner);
  257.   FQryDataSet := TIBDataSet.Create (AOwner);
  258.   FDataSource := TDataSource.Create (AOwner);
  259.   FQryDataSource := TDataSource.Create (AOwner);
  260.   FQuery := TIBSQL.Create(AOwner);
  261.   FQuery.Database := FDatabase;
  262.   FQuery.Transaction := FTransaction;
  263.  
  264.   with FDataSet do
  265.   begin
  266.     Database := FDatabase;
  267.     Transaction := FTransaction;
  268.     ObjectView := true;
  269.     SparseArrays := true;
  270.   end;
  271.  
  272.   with FQryDataSet do
  273.   begin
  274.     Database := FDatabase;
  275.     Transaction := FQryTransaction;
  276.     ObjectView := true;
  277.     SparseArrays := true;
  278.   end;
  279.  
  280.   FTransaction.DefaultDatabase := FDatabase;
  281.   FQryTransaction.DefaultDatabase := FDatabase;
  282.   FQryDataSource.DataSet := FQryDataset;
  283.  
  284.   FDataSource.DataSet := FDataSet;
  285.   FDataSource.AutoEdit := false;
  286.  
  287.   FQuery.GoToFirstRecordOnExecute := true;
  288.   FSQLBuffer := TStringList.Create;
  289.   FSQLBufferPos := 0;
  290.   FDatabaseFiles.Assign(DatabaseFiles);
  291.   FDatabase.LoginPrompt := false;
  292.   if FDatabaseFiles.Count > 0  then
  293.   begin
  294.     { Force the database to have a full path }
  295.     if ExtractFilePath(FDatabaseFiles.Strings[0]) = '' then
  296.     begin
  297.       tmp := ExtractFilePath(Application.ExeName);
  298.       FDatabase.DatabaseName := tmp + FDatabaseFiles.Strings[0];
  299.     end
  300.     else
  301.       FDatabase.DatabaseName := FDatabaseFiles.Strings[0];
  302.   end;
  303.   FDatabase.DefaultTransaction := FTransaction;  
  304.   
  305. end;
  306.  
  307. procedure TibcDatabaseNode.CreateObjectViewer;
  308. begin
  309.   if not Assigned(FObjectViewer) then
  310.     FObjectViewer := TfrmObjectView.Create(Application)
  311.   else
  312.     FObjectViewer.WindowState := wsNormal;
  313. end;
  314.  
  315. destructor TibcDatabaseNode.Destroy();
  316. begin
  317.   if Assigned (FDatabase) and Assigned(FDatabase.Handle) then
  318.   begin
  319.     try
  320.       FDatabase.Connected := false;
  321.     except on E: Exception do
  322.       FDatabase.Free;
  323.     end;
  324.   end;
  325.   FSQLBuffer.Free;
  326.   FDatabaseFiles.Free;
  327.   FTransaction.Free;
  328.   inherited Destroy();
  329. end;
  330.  
  331. constructor TibcBackupAliasNode.Create(AOwner: TComponent; const NodeID: HTreeItem; const NodeName: string; const Created, LastAccessed: TDateTime; const NodeType: word);
  332. begin
  333.   inherited Create(AOwner,NodeID,NodeName,NodeType);
  334.   FBackupFiles := TStringList.Create;
  335.   FCreated := Created;
  336.   FLastAccessed := LastAccessed
  337. end;
  338.  
  339. destructor TibcBackupAliasNode.Destroy();
  340. begin
  341.   FBackupFiles.Free;
  342.   inherited Destroy();
  343. end;
  344.  
  345. procedure TibcServerNode.ShowText(const Data: TStringList;
  346.   const Title: String; const readonly:boolean=true);
  347. begin
  348.   if not Assigned (FOutputwindow) then
  349.     FOutputWindow := TfrmTextViewer.Create(Application);
  350.   FOutputWindow.ShowText(Data, Title, Readonly);
  351. end;
  352.  
  353. procedure TibcServerNode.OpenTextViewer(const Service: TIBControlAndQueryService;
  354.   const Title: String; const readonly:boolean=true);
  355. begin
  356.   if not Assigned (FOutputwindow) then
  357.     FOutputWindow := TfrmTextViewer.Create(Application);
  358.   FOutputWindow.OpenTextViewer (Service, Title, readonly); 
  359. end;
  360.  
  361. end.
  362.