Skip to content

Commit 8608de3

Browse files
committed
Created class TRunner to be responsible for "running" the plugin
1 parent 28a227d commit 8608de3

1 file changed

Lines changed: 92 additions & 6 deletions

File tree

NsJavaLocator.lpr

Lines changed: 92 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,22 @@ TParameters = class(TObject, TSettings)
6565
property IsDialogDebug : Boolean read GetDialogDebug;
6666
end;
6767

68+
{ TRunner }
69+
70+
TRunner = class(TObject, TLogger)
71+
private
72+
FParams : TParameters;
73+
FLogLevel : TLogLevel;
74+
public
75+
procedure Log(const Message : VString; const LogLevel : TLogLevel);
76+
function IsWarn() : Boolean;
77+
function IsInfo() : Boolean;
78+
function IsDebug() : Boolean;
79+
procedure Run();
80+
constructor Create();
81+
destructor Destroy(); override;
82+
end;
83+
6884
{ TParser }
6985

7086
TParser = class(TObject)
@@ -141,6 +157,75 @@ function GetJavawInfo(Path : VString) : TJavaInstallation;
141157
end;
142158
end;
143159

160+
{ TRunner }
161+
162+
procedure TRunner.Log(const Message : VString; const LogLevel : TLogLevel);
163+
164+
var
165+
Icon : TDialaogIcon;
166+
167+
begin
168+
if LogLevel > FLogLevel then Exit;
169+
if FParams.IsLogging then begin
170+
if LogLevel = TLogLevel.ERROR then LogMessage('Error: ' + Message)
171+
else if LogLevel = TLogLevel.WARN then LogMessage('Warning: ' + Message)
172+
else LogMessage(Message);
173+
end;
174+
if FParams.IsDialogDebug then begin
175+
case LogLevel of
176+
TLogLevel.ERROR: Icon := TDialaogIcon.Error;
177+
TLogLevel.WARN: Icon := TDialaogIcon.Warning;
178+
TLogLevel.INFO: Icon := TDialaogIcon.Info;
179+
TLogLevel.DEBUG: Icon := TDialaogIcon.Info;
180+
else Icon := TDialaogIcon.None;
181+
end;
182+
NSISDialog(Message, LogLevelToVStr(LogLevel), MB_OK, Icon);
183+
end;
184+
end;
185+
186+
function TRunner.IsWarn() : Boolean;
187+
begin
188+
Result := FLogLevel >= TLogLevel.WARN;
189+
end;
190+
191+
function TRunner.IsInfo() : Boolean;
192+
begin
193+
Result := FLogLevel >= TLogLevel.INFO;
194+
end;
195+
196+
function TRunner.IsDebug() : Boolean;
197+
begin
198+
Result := FLogLevel >= TLogLevel.DEBUG;
199+
end;
200+
201+
procedure TRunner.Run();
202+
203+
var
204+
Parser : TParser;
205+
206+
begin
207+
FParams.ParseParams();
208+
FLogLevel := FParams.LogLevel;
209+
Parser := TParser.Create(FParams, Self);
210+
try
211+
Parser.Process();
212+
finally
213+
Parser.Free();
214+
end;
215+
end;
216+
217+
constructor TRunner.Create();
218+
begin
219+
FParams := TParameters.Create();
220+
FLogLevel := TLogLevel.INFO;
221+
end;
222+
223+
destructor TRunner.Destroy();
224+
begin
225+
FParams.Free();
226+
inherited Destroy;
227+
end;
228+
144229
function TParser.GetInstallations : TFPGObjectList<TJavaInstallation>;
145230
begin
146231
Result := FInstallations;
@@ -816,15 +901,16 @@ destructor TParameters.Destroy();
816901
procedure Locate(const hwndParent: HWND; const string_size: integer; const variables: NSISPTChar; const stacktop: pointer); cdecl;
817902

818903
var
819-
parameters : TParameters;
820-
parser : TParser;
904+
runner : TRunner;
821905

822906
begin
823907
Init(hwndParent, string_size, variables, stacktop);
824-
parameters := TParameters.Create();
825-
parameters.ParseParams();
826-
parser := TParser.Create(parameters, Nil);
827-
parser.Process();
908+
runner := TRunner.Create();
909+
try
910+
runner.Run();
911+
finally
912+
runner.Free();
913+
end;
828914
end;
829915

830916
exports Locate;

0 commit comments

Comments
 (0)