Ver código fonte

Comparison: modified triggers, stored procedures
modified: TurboBird.lpi
modified: TurboBird.lpr
modified: comparison.pas
modified: main.pas
modified: systables.pas

motaz 13 anos atrás
pai
commit
d4a525a14c
5 arquivos alterados com 228 adições e 91 exclusões
  1. 69 69
      TurboBird.lpi
  2. 1 1
      TurboBird.lpr
  3. 136 2
      comparison.pas
  4. 2 2
      main.pas
  5. 20 17
      systables.pas

+ 69 - 69
TurboBird.lpi

@@ -60,7 +60,6 @@
         <Filename Value="TurboBird.lpr"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="TurboBird"/>
-        <IsVisibleTab Value="True"/>
         <EditorIndex Value="1"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
@@ -76,8 +75,8 @@
         <UnitName Value="main"/>
         <EditorIndex Value="7"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="2232"/>
-        <CursorPos X="22" Y="2251"/>
+        <TopLine Value="926"/>
+        <CursorPos X="22" Y="941"/>
         <UsageCount Value="200"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
@@ -453,8 +452,8 @@
         <UnitName Value="SysTables"/>
         <EditorIndex Value="2"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="502"/>
-        <CursorPos X="20" Y="513"/>
+        <TopLine Value="229"/>
+        <CursorPos X="1" Y="257"/>
         <UsageCount Value="200"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
@@ -578,7 +577,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="67"/>
         <CursorPos X="7" Y="15"/>
-        <UsageCount Value="186"/>
+        <UsageCount Value="187"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit55>
@@ -623,7 +622,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="13"/>
         <CursorPos X="22" Y="54"/>
-        <UsageCount Value="172"/>
+        <UsageCount Value="173"/>
       </Unit60>
       <Unit61>
         <Filename Value="unitfirebirdservices.pas"/>
@@ -689,7 +688,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="3"/>
         <CursorPos X="71" Y="7"/>
-        <UsageCount Value="142"/>
+        <UsageCount Value="143"/>
       </Unit68>
       <Unit69>
         <Filename Value="changepass.pas"/>
@@ -700,7 +699,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="3"/>
         <CursorPos X="88" Y="14"/>
-        <UsageCount Value="141"/>
+        <UsageCount Value="142"/>
       </Unit69>
       <Unit70>
         <Filename Value="permissionmanage.pas"/>
@@ -712,7 +711,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="440"/>
         <CursorPos X="5" Y="442"/>
-        <UsageCount Value="139"/>
+        <UsageCount Value="140"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit70>
@@ -726,7 +725,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="35" Y="66"/>
-        <UsageCount Value="124"/>
+        <UsageCount Value="125"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit71>
@@ -753,7 +752,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="18"/>
         <CursorPos X="1" Y="44"/>
-        <UsageCount Value="95"/>
+        <UsageCount Value="96"/>
       </Unit74>
       <Unit75>
         <Filename Value="/usr/lib/lazarus/0.9.30/lcl/comctrls.pp"/>
@@ -945,7 +944,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="20"/>
         <CursorPos X="22" Y="41"/>
-        <UsageCount Value="63"/>
+        <UsageCount Value="64"/>
       </Unit98>
       <Unit99>
         <Filename Value="../../FromInternet/fpc2.4/fpc-2.4.4/packages/ibase/src/ibase60dyn.pp"/>
@@ -976,11 +975,12 @@
         <ComponentName Value="fmComparison"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="Comparison"/>
+        <IsVisibleTab Value="True"/>
         <EditorIndex Value="3"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="535"/>
-        <CursorPos X="27" Y="551"/>
-        <UsageCount Value="50"/>
+        <TopLine Value="865"/>
+        <CursorPos X="43" Y="877"/>
+        <UsageCount Value="51"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit102>
@@ -990,7 +990,7 @@
         <WindowIndex Value="0"/>
         <TopLine Value="815"/>
         <CursorPos X="11" Y="832"/>
-        <UsageCount Value="13"/>
+        <UsageCount Value="14"/>
         <Loaded Value="True"/>
       </Unit103>
       <Unit104>
@@ -1003,124 +1003,124 @@
     </Units>
     <JumpHistory Count="30" HistoryIndex="29">
       <Position1>
-        <Filename Value="main.pas"/>
-        <Caret Line="2994" Column="1" TopLine="2966"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="594" Column="23" TopLine="577"/>
       </Position1>
       <Position2>
-        <Filename Value="main.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="79" Column="38" TopLine="54"/>
       </Position2>
       <Position3>
-        <Filename Value="main.pas"/>
-        <Caret Line="94" Column="18" TopLine="66"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="862" Column="71" TopLine="847"/>
       </Position3>
       <Position4>
         <Filename Value="main.pas"/>
-        <Caret Line="95" Column="22" TopLine="67"/>
+        <Caret Line="2251" Column="22" TopLine="2232"/>
       </Position4>
       <Position5>
         <Filename Value="main.pas"/>
-        <Caret Line="143" Column="28" TopLine="115"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position5>
       <Position6>
         <Filename Value="main.pas"/>
-        <Caret Line="148" Column="32" TopLine="120"/>
+        <Caret Line="1949" Column="22" TopLine="1948"/>
       </Position6>
       <Position7>
-        <Filename Value="main.pas"/>
-        <Caret Line="236" Column="53" TopLine="208"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="866" Column="5" TopLine="843"/>
       </Position7>
       <Position8>
-        <Filename Value="main.pas"/>
-        <Caret Line="361" Column="38" TopLine="333"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="188" Column="27" TopLine="160"/>
       </Position8>
       <Position9>
-        <Filename Value="main.pas"/>
-        <Caret Line="362" Column="57" TopLine="334"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="874" Column="13" TopLine="850"/>
       </Position9>
       <Position10>
-        <Filename Value="main.pas"/>
-        <Caret Line="1540" Column="32" TopLine="1563"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="865" Column="1" TopLine="849"/>
       </Position10>
       <Position11>
-        <Filename Value="main.pas"/>
-        <Caret Line="1655" Column="34" TopLine="1629"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="868" Column="7" TopLine="847"/>
       </Position11>
       <Position12>
-        <Filename Value="permissionmanage.pas"/>
-        <Caret Line="524" Column="3" TopLine="501"/>
+        <Filename Value="systables.pas"/>
+        <Caret Line="28" Column="43" TopLine="10"/>
       </Position12>
       <Position13>
-        <Filename Value="permissionmanage.pas"/>
-        <Caret Line="161" Column="47" TopLine="152"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="1949" Column="22" TopLine="1948"/>
       </Position13>
       <Position14>
-        <Filename Value="permissionmanage.pas"/>
-        <Caret Line="159" Column="78" TopLine="152"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position14>
       <Position15>
-        <Filename Value="permissionmanage.pas"/>
-        <Caret Line="529" Column="1" TopLine="500"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="163" Column="15" TopLine="146"/>
       </Position15>
       <Position16>
-        <Filename Value="permissionmanage.pas"/>
-        <Caret Line="451" Column="13" TopLine="439"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="985" Column="32" TopLine="978"/>
       </Position16>
       <Position17>
-        <Filename Value="permissionmanage.pas"/>
-        <Caret Line="436" Column="3" TopLine="434"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="210" Column="14" TopLine="193"/>
       </Position17>
       <Position18>
-        <Filename Value="permissionmanage.pas"/>
-        <Caret Line="447" Column="3" TopLine="445"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="72" Column="39" TopLine="62"/>
       </Position18>
       <Position19>
         <Filename Value="main.pas"/>
-        <Caret Line="1655" Column="34" TopLine="1629"/>
+        <Caret Line="163" Column="15" TopLine="146"/>
       </Position19>
       <Position20>
         <Filename Value="main.pas"/>
-        <Caret Line="2248" Column="7" TopLine="2240"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position20>
       <Position21>
         <Filename Value="main.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Caret Line="3127" Column="34" TopLine="3132"/>
       </Position21>
       <Position22>
-        <Filename Value="main.pas"/>
-        <Caret Line="1632" Column="37" TopLine="1625"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="72" Column="15" TopLine="55"/>
       </Position22>
       <Position23>
         <Filename Value="comparison.pas"/>
-        <Caret Line="799" Column="37" TopLine="782"/>
+        <Caret Line="128" Column="1" TopLine="107"/>
       </Position23>
       <Position24>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="12" Column="24" TopLine="1"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="154" Column="30" TopLine="131"/>
       </Position24>
       <Position25>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="239" Column="3" TopLine="237"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="109" Column="3" TopLine="107"/>
       </Position25>
       <Position26>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="420" Column="3" TopLine="474"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="2382" Column="3" TopLine="2368"/>
       </Position26>
       <Position27>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="638" Column="3" TopLine="636"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position27>
       <Position28>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="239" Column="3" TopLine="237"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="162" Column="15" TopLine="145"/>
       </Position28>
       <Position29>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="420" Column="3" TopLine="438"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="81" Column="40" TopLine="70"/>
       </Position29>
       <Position30>
         <Filename Value="comparison.pas"/>
-        <Caret Line="799" Column="39" TopLine="782"/>
+        <Caret Line="926" Column="5" TopLine="913"/>
       </Position30>
     </JumpHistory>
   </ProjectOptions>

+ 1 - 1
TurboBird.lpr

@@ -2,7 +2,7 @@
 {  TurboBird: FireBird database administration and management tool          }
 {  Developed by: Motaz Abdel Azeem http://code.sd/                          }
 {  Start development :  5.Dec.2009                                          }
-{  Last updated      : 19.May.2012                                          }
+{  Last updated      : 20.May.2012                                          }
 {  License           : GPL for GUI, LGPL for Units                          }
 {***************************************************************************}
 

+ 136 - 2
comparison.pas

@@ -55,6 +55,8 @@ type
     ModifiedConstraintsList: TStringList;
 
     ModifiedViewsList: TStringList;
+    ModifiedTriggersList: TStringList;
+    ModifiedProceduresList: TStringList;
 
     fQueryWindow: TfmQueryWindow;
 
@@ -66,6 +68,8 @@ type
     procedure CheckModifiedIndices;
     procedure CheckModifiedConstraints;
     procedure CheckModifiedViews;
+    procedure CheckModifiedTriggers;
+    procedure CheckModifiedProcedures;
 
     procedure InitializeQueryWindow;
     procedure ScriptMissingFields;
@@ -73,6 +77,8 @@ type
     procedure ScriptModifiedIndices;
     procedure ScriptModifiedConstraints;
     procedure ScriptModifiedViews;
+    procedure ScriptModifiedTriggers;
+    procedure ScriptModifiedProcedures;
   public
     procedure Init(dbIndex: Integer);
     { public declarations }
@@ -112,8 +118,15 @@ begin
     CheckModifiedIndices;
     CheckModifiedConstraints;
   end;
+
   if cxViews.Checked then
     CheckModifiedViews;
+
+  if cxTriggers.Checked then
+    CheckModifiedTriggers;
+
+  if cxStoredProcs.Checked then
+    CheckModifiedProcedures;
 end;
 
 procedure TfmComparison.FormClose(Sender: TObject; var CloseAction: TCloseAction);
@@ -138,6 +151,8 @@ begin
   ModifiedConstraintsList.Free;
 
   ModifiedViewsList.Free;
+  ModifiedTriggersList.Free;
+  ModifiedProceduresList.Free;
 
 end;
 
@@ -175,6 +190,12 @@ begin
   if cxViews.Checked then
     ScriptModifiedViews;
 
+  if cxTriggers.Checked then
+    ScriptModifiedTriggers;
+
+  if cxStoredProcs.Checked then
+    ScriptModifiedProcedures;
+
 
   dmSysTables.Init(fdbIndex);
 
@@ -556,6 +577,65 @@ begin
 
   end;
 
+end;
+
+procedure TfmComparison.CheckModifiedTriggers;
+var
+  i: Integer;
+  TriggerName: string;
+  AfterBefor, OnTable, Event, Body : string;
+  TriggerEnabled: Boolean;
+  TPosition: Integer;
+  CAfterBefor, COnTable, CEvent, CBody : string;
+  CTriggerEnabled: Boolean;
+  CTPosition: Integer;
+begin
+  meLog.Lines.Add('');
+  meLog.Lines.Add('Modified Triggers');
+  ModifiedTriggersList.Clear;
+
+  for i:= 0 to dbExistingObjectsList[3].Count - 1 do
+  begin
+    TriggerName:= dbExistingObjectsList[3][i];
+    dmSysTables.GetTriggerInfo(fdbIndex, TriggerName, AfterBefor, OnTable, Event, Body, TriggerEnabled, TPosition);
+    if dmSysTables.GetTriggerInfo(cbComparedDatabase.ItemIndex, TriggerName, CAfterBefor, COnTable, CEvent, CBody,
+      CTriggerEnabled, CTPosition) then
+    if  (Trim(Body) <> Trim(CBody)) or (AfterBefor <> CAfterBefor) or (TriggerEnabled <> CTriggerEnabled)
+       or (TPosition <> CTPosition) then
+    begin
+      meLog.Lines.Add(' ' + TriggerName);
+      ModifiedTriggersList.Add(TriggerName);
+    end;
+
+  end;
+
+end;
+
+procedure TfmComparison.CheckModifiedProcedures;
+var
+  i: Integer;
+  ProcName: string;
+  Body : string;
+  CBody : string;
+  SPOwner: string;
+  CSPOwner: string;
+begin
+  meLog.Lines.Add('');
+  meLog.Lines.Add('Modified Procedures');
+  ModifiedProceduresList.Clear;
+
+  for i:= 0 to dbExistingObjectsList[5].Count - 1 do
+  begin
+    ProcName:= dbExistingObjectsList[5][i];
+    Body:= fmMain.GetStoredProcBody(fdbIndex, ProcName, SPOwner);
+    CBody:= fmMain.GetStoredProcBody(cbComparedDatabase.ItemIndex, ProcName, CSPOwner);
+    if  (Trim(Body) <> Trim(CBody)) then
+    begin
+      meLog.Lines.Add(' ' + ProcName);
+      ModifiedProceduresList.Add(ProcName);
+    end;
+
+  end;
 
 end;
 
@@ -794,8 +874,7 @@ begin
   begin
     ViewName:= ModifiedViewsList[i];
     fmMain.GetViewInfo(fdbIndex, ViewName, Columns, Body);
-    fQueryWindow.meQuery.Lines.Add('drop view "' + ViewName + '";');
-    fQueryWindow.meQuery.Lines.Add('create view "' + ViewName + '" (' + Columns + ')');
+    fQueryWindow.meQuery.Lines.Add('alter view "' + ViewName + '" (' + Columns + ')');
     fQueryWindow.meQuery.Lines.Add('as');
     fQueryWindow.meQuery.Lines.Add(Body);
     fQueryWindow.meQuery.Lines.Add(';');
@@ -804,6 +883,59 @@ begin
 
 end;
 
+procedure TfmComparison.ScriptModifiedTriggers;
+var
+  i: Integer;
+  TriggerName: string;
+  List: TStringList;
+begin
+  fQueryWindow.meQuery.Lines.Add('');
+  fQueryWindow.meQuery.Lines.Add('-- Modified Triggers');
+  List:= TStringList.Create;
+  try
+    for i:= 0 to ModifiedTriggersList.Count - 1 do
+    begin
+      TriggerName:= ModifiedTriggersList[i];
+      List.Clear;
+      if dmSysTables.ScriptTrigger(fdbIndex, TriggerName, List, True) then
+      begin
+        fQueryWindow.meQuery.Lines.Add('drop trigger ' + TriggerName + ';');
+        fQueryWindow.meQuery.Lines.Add('');
+        fQueryWindow.meQuery.Lines.AddStrings(List);
+        fQueryWindow.meQuery.Lines.Add('');
+      end;
+    end;
+
+  finally
+    List.Free;
+  end;
+
+end;
+
+procedure TfmComparison.ScriptModifiedProcedures;
+var
+  i: Integer;
+  ProcName: string;
+  Body: string;
+  SOwner: string;
+  List: TStringList;
+begin
+  List:= TStringList.Create;
+  fQueryWindow.meQuery.Lines.Add('');
+  fQueryWindow.meQuery.Lines.Add('-- Modified Procedures');
+  for i:= 0 to ModifiedProceduresList.Count - 1 do
+  begin
+    ProcName:= ModifiedProceduresList[i];
+    Body:= fmMain.GetStoredProcBody(fdbIndex, ProcName, SOwner);
+    fQueryWindow.meQuery.Lines.Add('alter procedure ' + ProcName + '(');
+    List.Text:= Body + ';';
+    fQueryWindow.meQuery.Lines.AddStrings(List);
+
+    fQueryWindow.meQuery.Lines.Add('');
+  end;
+
+end;
+
 procedure TfmComparison.Init(dbIndex: Integer);
 var
   i: Integer;
@@ -850,6 +982,8 @@ begin
   ModifiedConstraintsList:= TStringList.Create;
 
   ModifiedViewsList:= TStringList.Create;
+  ModifiedTriggersList:= TStringList.Create;
+  ModifiedProceduresList:= TStringList.Create;
 end;
 
 procedure TfmComparison.CheckMissingIndices;

+ 2 - 2
main.pas

@@ -3142,7 +3142,7 @@ begin
     AProcName:= SelNode.Text;
     dbIndex:= SelNode.Parent.Parent.OverlayIndex;
     SPBody:= GetStoredProcBody(dbIndex, AProcName, SPOwner);
-    Title:= 'StoredProcedure : ' + AProcName;
+    Title:= SelNode.Parent.Parent.Text +  ': StoredProcedure : ' + AProcName;
     // Fill SProc Parameters
     fmViewSProc:= FindCusomForm(Title, TfmViewSProc) as TfmViewSProc;
     if fmViewSProc = nil then
@@ -3200,7 +3200,7 @@ begin
   if (SelNode <> nil) and (SelNode.Parent <> nil) then
   begin
     ATriggerName:= SelNode.Text;
-    Title:= 'Trigger : ' + ATriggerName;
+    Title:= SelNode.Parent.Parent.Text +  ': Trigger : ' + ATriggerName;
     dbIndex:= SelNode.Parent.Parent.OverlayIndex;
     dmSysTables.GetTriggerInfo(dbIndex, ATriggerName, BeforeAfter, OnTable,
       Event, Body, TriggerEnabled, TriggerPosition);

+ 20 - 17
systables.pas

@@ -24,8 +24,8 @@ type
     function GetTriggerInfo(DatabaseIndex: Integer; ATriggername: string;
       var AfterBefor, OnTable, Event, Body: string; var TriggerEnabled: Boolean;
       var TriggerPosition: Integer): Boolean;
-    procedure ScriptTrigger(dbIndex: Integer; ATriggerName: string; List: TStrings;
-      AsCreate: Boolean = False);
+    function ScriptTrigger(dbIndex: Integer; ATriggerName: string; List: TStrings;
+      AsCreate: Boolean = False): Boolean;
     function GetTableConstraints(ATableName: string; var SqlQuery: TSQLQuery;
       ConstraintsList: TStringList = nil): Boolean;
 
@@ -226,8 +226,8 @@ end;
 
 (****************  Script Trigger  ***************)
 
-procedure TdmSysTables.ScriptTrigger(dbIndex: Integer; ATriggerName: string; List: TStrings;
-   AsCreate: Boolean = False);
+function TdmSysTables.ScriptTrigger(dbIndex: Integer; ATriggerName: string;
+  List: TStrings; AsCreate: Boolean): Boolean;
 var
   Body: string;
   AfterBefore: string;
@@ -236,22 +236,25 @@ var
   TriggerEnabled: Boolean;
   TriggerPosition: Integer;
 begin
-  GetTriggerInfo(dbIndex, ATriggerName, AfterBefore, OnTable, Event, Body, TriggerEnabled, TriggerPosition);
-  List.Add('SET TERM ^ ;');
-  if AsCreate then
-    List.Add('Create Trigger ' + ATriggerName + ' for ' + OnTable)
-  else
-    List.Add('Alter Trigger ' + ATriggerName);
-    if TriggerEnabled then
-      List.Add('ACTIVE')
+  Result:= GetTriggerInfo(dbIndex, ATriggerName, AfterBefore, OnTable, Event, Body, TriggerEnabled, TriggerPosition);
+  if Result then
+  begin
+    List.Add('SET TERM ^ ;');
+    if AsCreate then
+      List.Add('Create Trigger ' + ATriggerName + ' for ' + OnTable)
     else
-      List.Add('INACTIVE');
+      List.Add('Alter Trigger ' + ATriggerName);
+      if TriggerEnabled then
+        List.Add('ACTIVE')
+      else
+        List.Add('INACTIVE');
 
-  List.Add(AfterBefore + ' ' + Event);
-  List.Add('Position ' + IntToStr(TriggerPosition));
+    List.Add(AfterBefore + ' ' + Event);
+    List.Add('Position ' + IntToStr(TriggerPosition));
 
-  List.Text:= List.Text + Body + ' ^';
-  List.Add('SET TERM ; ^');
+    List.Text:= List.Text + Body + ' ^';
+    List.Add('SET TERM ; ^');
+  end;
 
 end;