-
Notifications
You must be signed in to change notification settings - Fork 34
/
uSerializerJDO.pas
81 lines (76 loc) · 2.6 KB
/
uSerializerJDO.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
unit uSerializerJDO;
interface
uses
System.SysUtils, System.Classes, System.Rtti, Data.DBXJSON, Data.DBXJSONReflect,
FMX.TreeView, SvCollections.Tries, System.JSON, System.IOUtils,
uUnit, JsonDataObjects, uUnit.Helper, uSerializer;
type
TSerializerJDO = class(TSerializer)
public
const
SJDO : string = 'JDO';
public
constructor Create;
destructor Destroy; override;
class function Marshal(const Value : TUnit) : string; override;
class function MarshalToFile(const Value : TUnit; const AFileName : string) : string; override;
class function UnMarshalFromFile(const AFileName : string) : TUnit; override;
class function UnMarshal(const Value : string) : TUnit; override;
class function SEARCH_PATTERN : string; override;
end;
implementation
{------------------------------------------------------------------------------}
{ TSerializerJDO }
{------------------------------------------------------------------------------}
constructor TSerializerJDO.Create;
begin
end;
{------------------------------------------------------------------------------}
destructor TSerializerJDO.Destroy;
begin
inherited;
end;
{------------------------------------------------------------------------------}
class function TSerializerJDO.SEARCH_PATTERN: string;
begin
Result := '*.' + SJDO;
end;
{------------------------------------------------------------------------------}
class function TSerializerJDO.Marshal(const Value: TUnit): string;
var
Obj: TJsonObject;
begin
Obj := Value.SaveToJson;
Result := Obj.ToJSON();
FreeAndNil(Obj);
end;
{------------------------------------------------------------------------------}
class function TSerializerJDO.MarshalToFile(const Value: TUnit;
const AFileName: string): string;
var
LValue : string;
begin
LValue := TSerializerJDO.Marshal(Value);
TSerializerUtils.SaveString(LValue, AFileName + '.' + SJDO);
Result := LValue;
end;
{------------------------------------------------------------------------------}
class function TSerializerJDO.UnMarshal(const Value: string): TUnit;
begin
Result := TUnit.LoadFromJson(Value);
end;
{------------------------------------------------------------------------------}
class function TSerializerJDO.UnMarshalFromFile(const AFileName: string): TUnit;
var
LValue : string;
LUnit : TUnit;
begin
LUnit := nil;
if TSerializerUtils.LoadString(AFileName, LValue) then
begin
LUnit := TSerializerJDO.UnMarshal(LValue);
end;
Result := LUnit;
end;
{------------------------------------------------------------------------------}
end.