|
@@ -6,7 +6,7 @@ uses
|
|
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
|
|
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
|
|
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
|
|
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
|
|
Quick.AutoMapper, Quick.JSONRecord, FMX.Controls.Presentation,
|
|
Quick.AutoMapper, Quick.JSONRecord, FMX.Controls.Presentation,
|
|
- FMX.ScrollBox, FMX.Memo;
|
|
|
|
|
|
+ FMX.ScrollBox, FMX.Memo, System.Generics.Collections;
|
|
|
|
|
|
type
|
|
type
|
|
TForm1 = class(TForm)
|
|
TForm1 = class(TForm)
|
|
@@ -18,7 +18,7 @@ type
|
|
{ Public declarations }
|
|
{ Public declarations }
|
|
end;
|
|
end;
|
|
|
|
|
|
-TJob = record
|
|
|
|
|
|
+ TJob = record
|
|
Name : string;
|
|
Name : string;
|
|
DateFrom : TDateTime;
|
|
DateFrom : TDateTime;
|
|
DateTo : TDateTime;
|
|
DateTo : TDateTime;
|
|
@@ -26,6 +26,8 @@ TJob = record
|
|
|
|
|
|
TCarType = (ctOil, ctDiesel);
|
|
TCarType = (ctOil, ctDiesel);
|
|
|
|
|
|
|
|
+ TAgentStatus = (stActive, stIdle, stFail);
|
|
|
|
+
|
|
TCar = class
|
|
TCar = class
|
|
private
|
|
private
|
|
fModel : string;
|
|
fModel : string;
|
|
@@ -35,25 +37,41 @@ TJob = record
|
|
property CarType : TCarType read fCarType write fCarType;
|
|
property CarType : TCarType read fCarType write fCarType;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ TCarList = TObjectList<TCar>;
|
|
|
|
+
|
|
|
|
+ TAgent = record
|
|
|
|
+ Name : string;
|
|
|
|
+ Status : TAgentStatus;
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+ TAgentList = TList<TAgent>;
|
|
|
|
+
|
|
TUserBase = class(TJsonRecord)
|
|
TUserBase = class(TJsonRecord)
|
|
private
|
|
private
|
|
fName : string;
|
|
fName : string;
|
|
fAge : Integer;
|
|
fAge : Integer;
|
|
fCreationDate : TDateTime;
|
|
fCreationDate : TDateTime;
|
|
fNumbers : TArray<Integer>;
|
|
fNumbers : TArray<Integer>;
|
|
|
|
+ fAgent : TAgent;
|
|
published
|
|
published
|
|
property Name : string read fName write fName;
|
|
property Name : string read fName write fName;
|
|
property Age : Integer read fAge write fAge;
|
|
property Age : Integer read fAge write fAge;
|
|
property CreationDate : TDateTime read fCreationDate write fCreationDate;
|
|
property CreationDate : TDateTime read fCreationDate write fCreationDate;
|
|
property Numbers : TArray<Integer> read fNumbers write fNumbers;
|
|
property Numbers : TArray<Integer> read fNumbers write fNumbers;
|
|
|
|
+ property Agent : TAgent read fAgent write fAgent;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ TPointsList = TList<Integer>;
|
|
|
|
+
|
|
TUser = class(TUserBase)
|
|
TUser = class(TUserBase)
|
|
private
|
|
private
|
|
fId : Int64;
|
|
fId : Int64;
|
|
fCash : Integer;
|
|
fCash : Integer;
|
|
fJob : TJob;
|
|
fJob : TJob;
|
|
fCar : TCar;
|
|
fCar : TCar;
|
|
|
|
+ fCarList : TCarList;
|
|
|
|
+ fPoints : TPointsList;
|
|
|
|
+ fAgentList : TAgentList;
|
|
public
|
|
public
|
|
constructor Create;
|
|
constructor Create;
|
|
destructor Destroy; override;
|
|
destructor Destroy; override;
|
|
@@ -62,6 +80,9 @@ TJob = record
|
|
property Cash : Integer read fCash write fCash;
|
|
property Cash : Integer read fCash write fCash;
|
|
property Job : TJob read fJob write fJob;
|
|
property Job : TJob read fJob write fJob;
|
|
property Car : TCar read fCar write fCar;
|
|
property Car : TCar read fCar write fCar;
|
|
|
|
+ property CarList : TCarList read fCarList write fCarList;
|
|
|
|
+ property Points : TPointsList read fPoints write fPoints;
|
|
|
|
+ property AgentList : TAgentList read fAgentList write fAgentList;
|
|
end;
|
|
end;
|
|
|
|
|
|
TUser2 = class(TUserBase)
|
|
TUser2 = class(TUserBase)
|
|
@@ -70,6 +91,9 @@ TJob = record
|
|
fJob : TJob;
|
|
fJob : TJob;
|
|
fMoney : Integer;
|
|
fMoney : Integer;
|
|
fCar : TCar;
|
|
fCar : TCar;
|
|
|
|
+ fCarList : TCarList;
|
|
|
|
+ fPoints : TPointsList;
|
|
|
|
+ fAgentList : TAgentList;
|
|
public
|
|
public
|
|
constructor Create;
|
|
constructor Create;
|
|
destructor Destroy; override;
|
|
destructor Destroy; override;
|
|
@@ -78,6 +102,9 @@ TJob = record
|
|
property Money : Integer read fMoney write fMoney;
|
|
property Money : Integer read fMoney write fMoney;
|
|
property Job : TJob read fJob write fJob;
|
|
property Job : TJob read fJob write fJob;
|
|
property Car : TCar read fCar write fCar;
|
|
property Car : TCar read fCar write fCar;
|
|
|
|
+ property CarList : TCarList read fCarList write fCarList;
|
|
|
|
+ property Points : TPointsList read fPoints write fPoints;
|
|
|
|
+ property AgentList : TAgentList read fAgentList write fAgentList;
|
|
end;
|
|
end;
|
|
|
|
|
|
var
|
|
var
|
|
@@ -86,6 +113,8 @@ var
|
|
UserClone : TUser;
|
|
UserClone : TUser;
|
|
job : TJob;
|
|
job : TJob;
|
|
AutoMapper : TAutoMapper<TUser,TUser2>;
|
|
AutoMapper : TAutoMapper<TUser,TUser2>;
|
|
|
|
+ car : TCar;
|
|
|
|
+ agent : TAgent;
|
|
|
|
|
|
var
|
|
var
|
|
Form1: TForm1;
|
|
Form1: TForm1;
|
|
@@ -99,11 +128,17 @@ implementation
|
|
constructor TUser.Create;
|
|
constructor TUser.Create;
|
|
begin
|
|
begin
|
|
fCar := TCar.Create;
|
|
fCar := TCar.Create;
|
|
|
|
+ fCarList := TCarList.Create(True);
|
|
|
|
+ fPoints := TPointsList.Create;
|
|
|
|
+ fAgentList := TAgentList.Create;
|
|
end;
|
|
end;
|
|
|
|
|
|
destructor TUser.Destroy;
|
|
destructor TUser.Destroy;
|
|
begin
|
|
begin
|
|
fCar.Free;
|
|
fCar.Free;
|
|
|
|
+ fCarList.Free;
|
|
|
|
+ fPoints.Free;
|
|
|
|
+ fAgentList.Free;
|
|
inherited;
|
|
inherited;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -112,11 +147,17 @@ end;
|
|
constructor TUser2.Create;
|
|
constructor TUser2.Create;
|
|
begin
|
|
begin
|
|
fCar := TCar.Create;
|
|
fCar := TCar.Create;
|
|
|
|
+ fCarList := TCarList.Create(True);
|
|
|
|
+ fPoints := TPointsList.Create;
|
|
|
|
+ fAgentList := TAgentList.Create;
|
|
end;
|
|
end;
|
|
|
|
|
|
destructor TUser2.Destroy;
|
|
destructor TUser2.Destroy;
|
|
begin
|
|
begin
|
|
fCar.Free;
|
|
fCar.Free;
|
|
|
|
+ fCarList.Free;
|
|
|
|
+ fPoints.Free;
|
|
|
|
+ fAgentList.Free;
|
|
inherited;
|
|
inherited;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -125,7 +166,7 @@ begin
|
|
User := TUser.Create;
|
|
User := TUser.Create;
|
|
User.Id := 17;
|
|
User.Id := 17;
|
|
User.CreationDate := Now();
|
|
User.CreationDate := Now();
|
|
- User.Name := 'Jhon Miller';
|
|
|
|
|
|
+ User.Name := 'John Miller';
|
|
User.Age := 30;
|
|
User.Age := 30;
|
|
User.Numbers := [1,2,3,4,5];
|
|
User.Numbers := [1,2,3,4,5];
|
|
User.Cash := 3500;
|
|
User.Cash := 3500;
|
|
@@ -135,6 +176,24 @@ User := TUser.Create;
|
|
User.Job := job;
|
|
User.Job := job;
|
|
User.Car.Model := 'Ferrari';
|
|
User.Car.Model := 'Ferrari';
|
|
User.Car.CarType := ctOil;
|
|
User.Car.CarType := ctOil;
|
|
|
|
+ car := TCar.Create;
|
|
|
|
+ car.Model := 'Ford';
|
|
|
|
+ car.CarType := ctDiesel;
|
|
|
|
+ User.CarList.Add(car);
|
|
|
|
+ car := TCar.Create;
|
|
|
|
+ car.Model := 'Nissan';
|
|
|
|
+ car.CarType := ctDiesel;
|
|
|
|
+ User.CarList.Add(car);
|
|
|
|
+ User.Points.Add(77);
|
|
|
|
+ User.Points.Add(100);
|
|
|
|
+ User.Points.Add(30);
|
|
|
|
+ agent.Name := 'FirstAgent';
|
|
|
|
+ agent.Status := TAgentStatus.stIdle;
|
|
|
|
+ User.Agent := agent;
|
|
|
|
+ User.AgentList.Add(agent);
|
|
|
|
+ agent.Name := 'SecondAgent';
|
|
|
|
+ agent.Status := TAgentStatus.stFail;
|
|
|
|
+ User.AgentList.Add(agent);
|
|
//User2 := TMapper<TUser2>.Map(User);
|
|
//User2 := TMapper<TUser2>.Map(User);
|
|
AutoMapper := TAutoMapper<TUser,TUser2>.Create;
|
|
AutoMapper := TAutoMapper<TUser,TUser2>.Create;
|
|
try
|
|
try
|
|
@@ -162,10 +221,10 @@ User := TUser.Create;
|
|
|
|
|
|
Memo1.Lines.Add(' ');
|
|
Memo1.Lines.Add(' ');
|
|
Memo1.Lines.Add('USER AS JSON RESULT');
|
|
Memo1.Lines.Add('USER AS JSON RESULT');
|
|
- Memo1.Lines.Add(Format('%s',[User.ToJson]));
|
|
|
|
|
|
+ Memo1.Lines.Add(Format('%s',[User.ToJson(True)]));
|
|
Memo1.Lines.Add(' ');
|
|
Memo1.Lines.Add(' ');
|
|
Memo1.Lines.Add('USER2 AS JSON RESULT');
|
|
Memo1.Lines.Add('USER2 AS JSON RESULT');
|
|
- Memo1.Lines.Add(Format('%s',[User2.ToJson]));
|
|
|
|
|
|
+ Memo1.Lines.Add(Format('%s',[User2.ToJson(True)]));
|
|
|
|
|
|
finally
|
|
finally
|
|
AutoMapper.Free;
|
|
AutoMapper.Free;
|