+ changed Svn status xml parsing. TSvnStatusList is no longer parses XML file, TSVNStatus should be used instead.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@749 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
8be550999c
commit
d131f23d62
@ -263,22 +263,38 @@ type
|
|||||||
|
|
||||||
{ TSvnStatusList }
|
{ TSvnStatusList }
|
||||||
|
|
||||||
TSvnStatusList = class(TSvnBase)
|
TSvnStatusList = class
|
||||||
private
|
private
|
||||||
FTargetPath : String;
|
FTargetPath : String;
|
||||||
|
FChangeListName : String;
|
||||||
FAgainstRevision : Integer;
|
FAgainstRevision : Integer;
|
||||||
FStatusEntries : TFPObjectList;
|
FStatusEntries : TFPObjectList;
|
||||||
function GetStatusEntry(index: integer): TStatusEntry;
|
function GetStatusEntry(index: integer): TStatusEntry;
|
||||||
function GetStatusEntryCount: integer;
|
function GetStatusEntryCount: integer;
|
||||||
procedure LoadFromXml(ADoc: TXMLDocument); override;
|
procedure LoadFromNode(ANode: TDOMElement);
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
property StatusEntry[index: integer] :TStatusEntry read GetStatusEntry;
|
property StatusEntry[index: integer] :TStatusEntry read GetStatusEntry; default;
|
||||||
property StatusEntryCount: integer read GetStatusEntryCount;
|
property StatusEntryCount: integer read GetStatusEntryCount;
|
||||||
property TargetPath: String read FTargetPath;
|
property TargetPath: String read FTargetPath;
|
||||||
property AgainstRevision: Integer read FAgainstRevision;
|
property AgainstRevision: Integer read FAgainstRevision;
|
||||||
|
property ChangeListName: String read FChangeListName;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TSvnStatus = class(TSVNBase)
|
||||||
|
private
|
||||||
|
FLists : TFPObjectList;
|
||||||
|
protected
|
||||||
|
function GetStatusList(index: Integer): TSVNStatusList;
|
||||||
|
function GetListsCount: Integer;
|
||||||
|
procedure LoadFromXml(ADoc: TXMLDocument); override;
|
||||||
|
public
|
||||||
|
constructor Create;
|
||||||
|
destructor Destroy; override;
|
||||||
|
property Lists[index: Integer]: TSVNStatusList read GetStatusList;
|
||||||
|
property ListsCount: Integer read GetListsCount;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -780,7 +796,7 @@ begin
|
|||||||
Result := FStatusEntries.Count;
|
Result := FStatusEntries.Count;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSvnStatusList.LoadFromXml(ADoc: TXMLDocument);
|
procedure TSvnStatusList.LoadFromNode(ANode: TDOMElement);
|
||||||
var
|
var
|
||||||
EntryNode : TDOMNode;
|
EntryNode : TDOMNode;
|
||||||
StatEntry : TStatusEntry;
|
StatEntry : TStatusEntry;
|
||||||
@ -788,33 +804,30 @@ begin
|
|||||||
Clear;
|
Clear;
|
||||||
FAgainstRevision := 0;
|
FAgainstRevision := 0;
|
||||||
FTargetPath := '';
|
FTargetPath := '';
|
||||||
|
if not Assigned(ANode) then Exit;
|
||||||
|
|
||||||
EntryNode := ADoc.FindNode('status').FirstChild;
|
EntryNode := ANode as TDOMNode;
|
||||||
while Assigned(EntryNode) do begin
|
|
||||||
|
if EntryNode.NodeName = 'target' then
|
||||||
|
FTargetPath := (EntryNode as TDOMElement).GetAttribute('path')
|
||||||
|
else if EntryNode.NodeName = 'changelist' then
|
||||||
|
FChangeListName := (EntryNode as TDOMElement).GetAttribute('name');
|
||||||
|
|
||||||
|
EntryNode := ANode.FirstChild;
|
||||||
|
while assigned(EntryNode) do begin
|
||||||
if (EntryNode.NodeType=ELEMENT_NODE)
|
if (EntryNode.NodeType=ELEMENT_NODE)
|
||||||
and (EntryNode.NodeName='target') then begin
|
and (EntryNode.NodeName='entry') then
|
||||||
FTargetPath := (EntryNode as TDOMElement).GetAttribute('path');
|
begin
|
||||||
Break; // only single target path is processed?
|
StatEntry := TStatusEntry.Create;
|
||||||
|
StatEntry.LoadFromNode(TDomElement(EntryNode));
|
||||||
|
FStatusEntries.Add(StatEntry);
|
||||||
|
end else if (EntryNode.NodeName='against') then
|
||||||
|
begin
|
||||||
|
FAgainstRevision := StrToIntDef(TDOMElement(EntryNode).GetAttribute('revision'), 0);
|
||||||
end;
|
end;
|
||||||
EntryNode := EntryNode.NextSibling;
|
EntryNode := EntryNode.NextSibling;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if Assigned(EntryNode) then begin
|
|
||||||
EntryNode := EntryNode.FirstChild;
|
|
||||||
while assigned(EntryNode) do begin
|
|
||||||
if (EntryNode.NodeType=ELEMENT_NODE)
|
|
||||||
and (EntryNode.NodeName='entry') then
|
|
||||||
begin
|
|
||||||
StatEntry := TStatusEntry.Create;
|
|
||||||
StatEntry.LoadFromNode(TDomElement(EntryNode));
|
|
||||||
FStatusEntries.Add(StatEntry);
|
|
||||||
end else if (EntryNode.NodeName='against') then
|
|
||||||
begin
|
|
||||||
FAgainstRevision := StrToIntDef(TDOMElement(EntryNode).GetAttribute('revision'), 0);
|
|
||||||
end;
|
|
||||||
EntryNode := EntryNode.NextSibling;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TSvnStatusList.Create;
|
constructor TSvnStatusList.Create;
|
||||||
@ -903,5 +916,48 @@ begin
|
|||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TSvnStatus }
|
||||||
|
|
||||||
|
function TSvnStatus.GetStatusList(index: Integer): TSVNStatusList;
|
||||||
|
begin
|
||||||
|
Result := FLists[Index] as TSVNStatusList;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TSvnStatus.GetListsCount: Integer;
|
||||||
|
begin
|
||||||
|
Result := FLists.Count;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSvnStatus.LoadFromXml(ADoc: TXMLDocument);
|
||||||
|
var
|
||||||
|
ListNode : TDOMNode;
|
||||||
|
NodeName : String;
|
||||||
|
StatList : TSvnStatusList;
|
||||||
|
begin
|
||||||
|
ListNode := ADoc.FindNode('status').FirstChild;
|
||||||
|
while Assigned(ListNode) do begin
|
||||||
|
NodeName := ListNode.NodeName;
|
||||||
|
if (ListNode.NodeType=ELEMENT_NODE) and
|
||||||
|
((NodeName='target') or (NodeName='changelist')) then begin
|
||||||
|
StatList := TSvnStatusList.Create;
|
||||||
|
FLists.Add(StatList);
|
||||||
|
StatList.LoadFromNode(ListNode as TDomElement);
|
||||||
|
end;
|
||||||
|
ListNode := ListNode.NextSibling;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TSvnStatus.Create;
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
FLists := TFPObjectList.Create(true);
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TSvnStatus.Destroy;
|
||||||
|
begin
|
||||||
|
FLists.Free;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user