mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-15 11:49:27 +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
|
||||
Destructor Destroy; override;
|
||||
Class Function GetContentType: String; override;
|
||||
Class Function ForBufDataset: Boolean; virtual;
|
||||
Function SelectObject(aIndex : Integer) : Boolean; override;
|
||||
function GetContentField(aName: UTF8string): TJSONData; override;
|
||||
procedure InitStreaming; override;
|
||||
@ -53,6 +54,7 @@ Type
|
||||
FRow : TDOMElement;
|
||||
FRowData: TDOMElement;
|
||||
Protected
|
||||
Class Function ForBufDataset: Boolean; virtual;
|
||||
Procedure SetOutputOptions(AValue: TRestOutputOptions); override;
|
||||
Public
|
||||
procedure EndData; override;
|
||||
@ -74,6 +76,20 @@ Type
|
||||
procedure InitStreaming; override;
|
||||
end;
|
||||
|
||||
{ TBufDatasetOutputStreamer }
|
||||
|
||||
TBufDatasetOutputStreamer = Class(TCDSOutputStreamer)
|
||||
Protected
|
||||
Class Function ForBufDataset: Boolean; override;
|
||||
end;
|
||||
|
||||
{ TBufDatasetInputStreamer }
|
||||
|
||||
TBufDatasetInputStreamer = Class(TCDSInputStreamer)
|
||||
Protected
|
||||
Class Function ForBufDataset: Boolean; override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses sqldbrestconst;
|
||||
@ -98,6 +114,20 @@ Const
|
||||
'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 }
|
||||
|
||||
destructor TCDSInputStreamer.Destroy;
|
||||
@ -111,6 +141,11 @@ begin
|
||||
Result:='text/xml';
|
||||
end;
|
||||
|
||||
class function TCDSInputStreamer.ForBufDataset: Boolean;
|
||||
begin
|
||||
Result:=False;
|
||||
end;
|
||||
|
||||
function TCDSInputStreamer.SelectObject(aIndex: Integer): Boolean;
|
||||
|
||||
Var
|
||||
@ -182,6 +217,11 @@ end;
|
||||
|
||||
{ TCDSOutputStreamer }
|
||||
|
||||
class function TCDSOutputStreamer.ForBufDataset: Boolean;
|
||||
begin
|
||||
Result:=False;
|
||||
end;
|
||||
|
||||
procedure TCDSOutputStreamer.SetOutputOptions(AValue: TRestOutputOptions);
|
||||
begin
|
||||
Include(AValue,ooMetadata); // We always need metadata
|
||||
@ -242,6 +282,7 @@ begin
|
||||
FRow[UTF8Decode(N)]:=UTF8Decode(S);
|
||||
end;
|
||||
|
||||
|
||||
procedure TCDSOutputStreamer.WriteMetadata(aFieldList: TRestFieldPairArray);
|
||||
|
||||
Var
|
||||
@ -269,7 +310,11 @@ begin
|
||||
ML:=P.RestField.MaxLen;
|
||||
if ML=0 then
|
||||
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;
|
||||
if (ST<>'') then
|
||||
F['subtype']:=ST;
|
||||
@ -315,6 +360,8 @@ end;
|
||||
|
||||
Initialization
|
||||
TCDSInputStreamer.RegisterStreamer('cds');
|
||||
TBufDatasetInputStreamer.RegisterStreamer('buf');
|
||||
TCDSOutputStreamer.RegisterStreamer('cds');
|
||||
TBufDatasetOutputStreamer.RegisterStreamer('buf');
|
||||
end.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user