Bläddra i källkod

TAppConfig improved constructors

Unknown 6 år sedan
förälder
incheckning
dacd43b4bc
1 ändrade filer med 17 tillägg och 9 borttagningar
  1. 17 9
      Quick.Config.Base.pas

+ 17 - 9
Quick.Config.Base.pas

@@ -7,7 +7,7 @@
   Author      : Kike Pérez
   Version     : 1.5
   Created     : 26/01/2017
-  Modified    : 21/01/2019
+  Modified    : 25/01/2019
 
   This file is part of QuickLib: https://github.com/exilon/QuickLib
 
@@ -41,14 +41,13 @@ uses
   fpjson,
   jsonparser,
   fpjsonrtti,
-  Quick.Json.Serializer;
   {$ELSE}
-  Quick.Json.Serializer,
   DBXJSON,
   System.JSON,
   Rest.Json.Types,
-  Rest.Json;
+  Rest.Json,
   {$ENDIF}
+  Quick.Json.Serializer;
 
 type
 
@@ -104,6 +103,8 @@ type
     {$IFDEF DELPHIRX102_UP}[JsonIgnoreAttribute]{$ENDIF}
     property LastSaved : TDateTime read fLastSaved write fLastSaved;
     procedure Apply;
+    //override this method to provide your class initialization
+    procedure Init; virtual;
     procedure DefaultValues; virtual;
     procedure Load; virtual;
     procedure Save; virtual;
@@ -111,6 +112,8 @@ type
     procedure FromJSON(const json : string);
   end;
 
+  EAppConfig = class(Exception);
+
 implementation
 
 
@@ -129,6 +132,7 @@ begin
   fProvider := aConfigProvider;
   fJsonIndent := True;
   fLastSaved := 0;
+  Init;
 end;
 
 procedure TAppConfig.Apply;
@@ -156,7 +160,7 @@ begin
   try
     serializer := TJsonSerializer.Create(slPublishedProperty);
     try
-      Result := serializer.ObjectToJSON(Self,True);
+      Result := serializer.ObjectToJSON(Self,fJsonIndent);
     finally
       serializer.Free;
     end;
@@ -172,11 +176,7 @@ begin
   try
     serializer := TJsonSerializer.Create(slPublishedProperty);
     try
-      {$IF NOT DEFINED(FPC) AND DEFINED(NEXTGEN)}
       serializer.JsonToObject(Self,json);
-      {$ELSE}
-      Self := TAppConfig(serializer.JsonToObject(Self,json));
-      {$ENDIF}
     finally
       serializer.Free;
     end;
@@ -185,14 +185,22 @@ begin
   end;
 end;
 
+procedure TAppConfig.Init;
+begin
+  //override to create private classes
+end;
+
 procedure TAppConfig.Load;
 begin
+  if not Assigned(fProvider) then raise EAppConfig.Create('No provider assigned!');
   fProvider.Load(Self);
 end;
 
 procedure TAppConfig.Save;
 begin
+  if not Assigned(fProvider) then raise EAppConfig.Create('No provider assigned!');
   fProvider.Save(Self);
+  fLastSaved := Now();
 end;
 
 end.