mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-17 11:09:26 +02:00
* Support for TBufDataset XML format
git-svn-id: trunk@41661 -
This commit is contained in:
parent
9fc701c75e
commit
2c7f278615
@ -34,6 +34,7 @@ Type
|
|||||||
Public
|
Public
|
||||||
Destructor Destroy; override;
|
Destructor Destroy; override;
|
||||||
Class Function GetContentType: String; override;
|
Class Function GetContentType: String; override;
|
||||||
|
Class Function ForBufDataset: Boolean; virtual;
|
||||||
Function SelectObject(aIndex : Integer) : Boolean; override;
|
Function SelectObject(aIndex : Integer) : Boolean; override;
|
||||||
function GetContentField(aName: UTF8string): TJSONData; override;
|
function GetContentField(aName: UTF8string): TJSONData; override;
|
||||||
procedure InitStreaming; override;
|
procedure InitStreaming; override;
|
||||||
@ -53,6 +54,7 @@ Type
|
|||||||
FRow : TDOMElement;
|
FRow : TDOMElement;
|
||||||
FRowData: TDOMElement;
|
FRowData: TDOMElement;
|
||||||
Protected
|
Protected
|
||||||
|
Class Function ForBufDataset: Boolean; virtual;
|
||||||
Procedure SetOutputOptions(AValue: TRestOutputOptions); override;
|
Procedure SetOutputOptions(AValue: TRestOutputOptions); override;
|
||||||
Public
|
Public
|
||||||
procedure EndData; override;
|
procedure EndData; override;
|
||||||
@ -74,6 +76,20 @@ Type
|
|||||||
procedure InitStreaming; override;
|
procedure InitStreaming; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TBufDatasetOutputStreamer }
|
||||||
|
|
||||||
|
TBufDatasetOutputStreamer = Class(TCDSOutputStreamer)
|
||||||
|
Protected
|
||||||
|
Class Function ForBufDataset: Boolean; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TBufDatasetInputStreamer }
|
||||||
|
|
||||||
|
TBufDatasetInputStreamer = Class(TCDSInputStreamer)
|
||||||
|
Protected
|
||||||
|
Class Function ForBufDataset: Boolean; override;
|
||||||
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses sqldbrestconst;
|
uses sqldbrestconst;
|
||||||
@ -98,6 +114,20 @@ Const
|
|||||||
'bin.hex:Binary' {rftBlob}
|
'bin.hex:Binary' {rftBlob}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
{ TBufDatasetInputStreamer }
|
||||||
|
|
||||||
|
class function TBufDatasetInputStreamer.ForBufDataset: Boolean;
|
||||||
|
begin
|
||||||
|
Result:=True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TBufDatasetOutputStreamer }
|
||||||
|
|
||||||
|
class function TBufDatasetOutputStreamer.ForBufDataset: Boolean;
|
||||||
|
begin
|
||||||
|
Result:=True;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TCDSInputStreamer }
|
{ TCDSInputStreamer }
|
||||||
|
|
||||||
destructor TCDSInputStreamer.Destroy;
|
destructor TCDSInputStreamer.Destroy;
|
||||||
@ -111,6 +141,11 @@ begin
|
|||||||
Result:='text/xml';
|
Result:='text/xml';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
class function TCDSInputStreamer.ForBufDataset: Boolean;
|
||||||
|
begin
|
||||||
|
Result:=False;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCDSInputStreamer.SelectObject(aIndex: Integer): Boolean;
|
function TCDSInputStreamer.SelectObject(aIndex: Integer): Boolean;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
@ -182,6 +217,11 @@ end;
|
|||||||
|
|
||||||
{ TCDSOutputStreamer }
|
{ TCDSOutputStreamer }
|
||||||
|
|
||||||
|
class function TCDSOutputStreamer.ForBufDataset: Boolean;
|
||||||
|
begin
|
||||||
|
Result:=False;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCDSOutputStreamer.SetOutputOptions(AValue: TRestOutputOptions);
|
procedure TCDSOutputStreamer.SetOutputOptions(AValue: TRestOutputOptions);
|
||||||
begin
|
begin
|
||||||
Include(AValue,ooMetadata); // We always need metadata
|
Include(AValue,ooMetadata); // We always need metadata
|
||||||
@ -242,6 +282,7 @@ begin
|
|||||||
FRow[UTF8Decode(N)]:=UTF8Decode(S);
|
FRow[UTF8Decode(N)]:=UTF8Decode(S);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TCDSOutputStreamer.WriteMetadata(aFieldList: TRestFieldPairArray);
|
procedure TCDSOutputStreamer.WriteMetadata(aFieldList: TRestFieldPairArray);
|
||||||
|
|
||||||
Var
|
Var
|
||||||
@ -269,7 +310,11 @@ begin
|
|||||||
ML:=P.RestField.MaxLen;
|
ML:=P.RestField.MaxLen;
|
||||||
if ML=0 then
|
if ML=0 then
|
||||||
ML:=255;
|
ML:=255;
|
||||||
F['WIDTH']:=Utf8Decode(IntToStr(P.RestField.MaxLen));
|
if ForBufDataset then
|
||||||
|
F['width']:=Utf8Decode(IntToStr(P.RestField.MaxLen))
|
||||||
|
else
|
||||||
|
F['WIDTH']:=Utf8Decode(IntToStr(P.RestField.MaxLen));
|
||||||
|
|
||||||
end;
|
end;
|
||||||
if (ST<>'') then
|
if (ST<>'') then
|
||||||
F['subtype']:=ST;
|
F['subtype']:=ST;
|
||||||
@ -315,6 +360,8 @@ end;
|
|||||||
|
|
||||||
Initialization
|
Initialization
|
||||||
TCDSInputStreamer.RegisterStreamer('cds');
|
TCDSInputStreamer.RegisterStreamer('cds');
|
||||||
|
TBufDatasetInputStreamer.RegisterStreamer('buf');
|
||||||
TCDSOutputStreamer.RegisterStreamer('cds');
|
TCDSOutputStreamer.RegisterStreamer('cds');
|
||||||
|
TBufDatasetOutputStreamer.RegisterStreamer('buf');
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user