ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/iblocaldb/IBCMLocalDBSupport.pas
(Generate patch)

Comparing ibx/trunk/iblocaldb/IBCMLocalDBSupport.pas (file contents):
Revision 79 by tony, Tue Dec 6 10:33:46 2016 UTC vs.
Revision 80 by tony, Mon Jan 1 11:31:07 2018 UTC

# Line 40 | Line 40 | type
40    TIBCMLocalDBSupport = class(TCustomIBLocalDBSupport)
41    private
42      FOnLogMessage: TOnLogMessage;
43 +    FDatabasePath: string;
44      procedure Add2Log(Sender: TObject; Msg: string);
45      procedure DoUpgrade(IBXScript: TIBXScript; TargetVersionNo: integer);
46      procedure WriteLog(Msg: string);
47 +    procedure HandleCreateDatabase(Sender: TObject; var DatabaseFileName: string);
48    protected
49      function CreateNewDatabase(DBName:string; DBParams: TStrings; DBArchive: string): boolean; override;
50      function RestoreDatabaseFromArchive(DBName:string; DBParams: TStrings; aFilename: string): boolean; override;
# Line 101 | Line 103 | begin
103      OnLogMessage(self,Msg);
104   end;
105  
106 + procedure TIBCMLocalDBSupport.HandleCreateDatabase(Sender: TObject;
107 +  var DatabaseFileName: string);
108 + begin
109 +  DatabaseFileName := FDatabasePath;
110 + end;
111 +
112   function TIBCMLocalDBSupport.CreateNewDatabase(DBName: string;
113    DBParams: TStrings; DBArchive: string): boolean;
114   var Service: TIBRestoreService;
115 +    Ext: string;
116   begin
117 +  Result := true;
118    CreateDir(ExtractFileDir(DBName));
119 <  Service := TIBRestoreService.Create(self);
120 <  with Service do
119 >  Ext := AnsiUpperCase(ExtractFileExt(DBArchive));
120 >  if Ext = '.GBK' then
121 >  begin
122 >    Service := TIBRestoreService.Create(self);
123 >    with Service do
124 >    try
125 >     SetDBParams(DBParams);
126 >     LoginPrompt := false;
127 >     BackupFile.Clear;
128 >     DatabaseName.Clear;
129 >     Options := [CreateNewDB];
130 >     BackupFile.Add(DBArchive);
131 >     DatabaseName.Add(DBName);
132 >     Active := true;
133 >     WriteLog(sCreatingDatabase);
134 >     ServiceStart;
135 >     try
136 >       while not Eof do
137 >         WriteLog(Trim(GetNextLine));
138 >     finally
139 >       Active := false
140 >     end;
141 >    finally
142 >      Free
143 >    end;
144 >  end
145 >  else
146 >  if Ext = '.SQL' then
147 >  with TIBXScript.Create(self) do
148    try
149 <   SetDBParams(Service,DBParams);
150 <   LoginPrompt := false;
151 <   BackupFile.Clear;
152 <   DatabaseName.Clear;
153 <   Options := [CreateNewDB];
117 <   BackupFile.Add(DBArchive);
118 <   DatabaseName.Add(DBName);
119 <   Active := true;
120 <   WriteLog(sCreatingDatabase);
121 <   ServiceStart;
122 <   try
123 <     while not Eof do
124 <       WriteLog(Trim(GetNextLine));
125 <   finally
126 <     Active := false
127 <   end;
149 >    Database := self.Database;
150 >    FDatabasePath := DBName;
151 >    OnCreateDatabase := @HandleCreateDatabase;
152 >    WriteLog(sCreatingDatabase);
153 >    Result := RunScript(DBArchive);
154    finally
155      Free
156 <  end;
157 <
156 >  end
157 >  else
158 >    raise Exception.CreateFmt('Archive file (%s) has an unknown extension',[DBArchive]);
159   end;
160  
161   function TIBCMLocalDBSupport.RestoreDatabaseFromArchive(DBName: string;
162    DBParams: TStrings; aFilename: string): boolean;
163   var Service: TIBRestoreService;
164   begin
165 +  Result := true;
166    Service := TIBRestoreService.Create(self);
167    with Service do
168    try
169 <    SetDBParams(Service,DBParams);
169 >    SetDBParams(DBParams);
170      LoginPrompt := false;
171      BackupFile.Clear;
172      DatabaseName.Clear;
# Line 163 | Line 191 | function TIBCMLocalDBSupport.RunUpgradeD
191   var IBXScript: TIBXScript;
192      IBTransaction: TIBTransaction;
193   begin
194 +  Result := true;
195    IBXScript := TIBXScript.Create(self);
196    IBTransaction := TIBTransaction.Create(self);
197    try
# Line 174 | Line 203 | begin
203      IBTransaction.Params.Clear;
204      IBTransaction.Params.Add('concurrency');
205      IBTransaction.Params.Add('wait');
206 <    IBXScript.GetParamValue := @HandleGetParamValue;
206 >    if assigned(UpgradeConf) then
207 >      IBXScript.GetParamValue := @UpgradeConf.GetParamValue;
208      DoUpgrade(IBXScript, TargetVersionNo);
209    finally
210      IBXScript.Free;
# Line 187 | Line 217 | function TIBCMLocalDBSupport.SaveDatabas
217    DBParams: TStrings; aFilename: string): boolean;
218   var Service: TIBBackupService;
219   begin
220 +  Result := true;
221    Service := TIBBackupService.Create(self);
222    with Service do
223    try
224 <   SetDBParams(Service,DBParams);
224 >   SetDBParams(DBParams);
225     LoginPrompt := false;
226     BackupFile.Clear;
227     DatabaseName := DBName;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines