fipa_acl  1.4
Static Public Member Functions | List of all members
fipa::acl::XMLFormat Class Reference

#include <xml_format.h>

Static Public Member Functions

static TiXmlElement * getReceivedObject (const ReceivedObject &receivedObject)
 
static TiXmlElement * getDate (const base::Time &date)
 
static const std::string dateToStr (const base::Time &date)
 
static TiXmlElement * getURL (const std::string &url, bool useHref)
 
static TiXmlElement * getName (const std::string &name, bool useId)
 
static TiXmlElement * getAgentID (const AgentID &aid, bool useNameId, bool useUrlHref)
 
static std::vector
< TiXmlElement * > 
getAgentIDSequence (const AgentIDList &aidl, bool useNameId, bool useUrlHref)
 
static std::vector
< TiXmlElement * > 
getUserdefinedParameters (const UserdefinedParameterList &params)
 

Detailed Description

Definition at line 14 of file xml_format.h.

Member Function Documentation

const std::string fipa::acl::XMLFormat::dateToStr ( const base::Time &  date)
static

Definition at line 15 of file xml_format.cpp.

16 {
17  std::string dateStr = date.toString(base::Time::Milliseconds, "%Y%m%dT%H%M%S");
18  boost::erase_all(dateStr, ":"); // Erase the colon
19  return dateStr;
20 }
TiXmlElement * fipa::acl::XMLFormat::getAgentID ( const AgentID aid,
bool  useNameId,
bool  useUrlHref 
)
static

Definition at line 61 of file xml_format.cpp.

62 {
63  TiXmlElement* aidElem = new TiXmlElement("agent-identifier");
64 
65  TiXmlElement* nameElem = getName(aid.getName(), useNameId);
66  aidElem->LinkEndChild(nameElem);
67 
68  std::vector<std::string> addresses = aid.getAddresses();
69  if(!addresses.empty())
70  {
71  TiXmlElement* addressesElem = new TiXmlElement("addresses");
72  BOOST_FOREACH(std::string address, addresses)
73  {
74  TiXmlElement* urlElem = getURL(address, useUrlHref);
75  addressesElem->LinkEndChild(urlElem);
76  }
77  aidElem->LinkEndChild(addressesElem);
78  }
79 
80  Resolvers resolvers = aid.getResolvers();
81  if(!resolvers.empty())
82  {
83  TiXmlElement* resolversElem = new TiXmlElement("resolvers");
84  BOOST_FOREACH(TiXmlElement* resolverElem, getAgentIDSequence(resolvers, useNameId, useUrlHref))
85  {
86  resolversElem->LinkEndChild(resolverElem);
87  }
88  aidElem->LinkEndChild(resolversElem);
89  }
90 
91  BOOST_FOREACH(TiXmlElement* elem, getUserdefinedParameters(aid.getUserdefParams()))
92  {
93  aidElem->LinkEndChild(elem);
94  }
95 
96  return aidElem;
97 }
static TiXmlElement * getURL(const std::string &url, bool useHref)
Definition: xml_format.cpp:22
AgentIDList Resolvers
Definition: agent_id.h:27
static TiXmlElement * getName(const std::string &name, bool useId)
Definition: xml_format.cpp:36
static std::vector< TiXmlElement * > getAgentIDSequence(const AgentIDList &aidl, bool useNameId, bool useUrlHref)
Definition: xml_format.cpp:51
static std::vector< TiXmlElement * > getUserdefinedParameters(const UserdefinedParameterList &params)
Definition: xml_format.cpp:145
std::vector< TiXmlElement * > fipa::acl::XMLFormat::getAgentIDSequence ( const AgentIDList aidl,
bool  useNameId,
bool  useUrlHref 
)
static

Definition at line 51 of file xml_format.cpp.

52 {
53  std::vector<TiXmlElement*> vec;
54  BOOST_FOREACH(AgentID aid, aidl)
55  {
56  vec.push_back(getAgentID(aid, useNameId, useUrlHref));
57  }
58  return vec;
59 }
static TiXmlElement * getAgentID(const AgentID &aid, bool useNameId, bool useUrlHref)
Definition: xml_format.cpp:61
TiXmlElement * fipa::acl::XMLFormat::getDate ( const base::Time &  date)
static

Definition at line 8 of file xml_format.cpp.

9 {
10  TiXmlElement* dateElem = new TiXmlElement("date");
11  dateElem->LinkEndChild(new TiXmlText(dateToStr(date)));
12  return dateElem;
13 }
static const std::string dateToStr(const base::Time &date)
Definition: xml_format.cpp:15
TiXmlElement * fipa::acl::XMLFormat::getName ( const std::string &  name,
bool  useId 
)
static

Definition at line 36 of file xml_format.cpp.

37 {
38  TiXmlElement* nameElem = new TiXmlElement("name");
39  if(useId)
40  {
41  // XXX What is the difference between id and refid
42  nameElem->SetAttribute("id", name);
43  }
44  else
45  {
46  nameElem->LinkEndChild(new TiXmlText(name));
47  }
48  return nameElem;
49 }
TiXmlElement * fipa::acl::XMLFormat::getReceivedObject ( const ReceivedObject receivedObject)
static

Definition at line 99 of file xml_format.cpp.

100 {
101  // by/from definition uses url, example uses attribute "value"
102  // Jade also uses example spec, not ACTUAL spec!
103 
104  TiXmlElement* recvElem = new TiXmlElement( "received" );
105 
106  // As received objects are only used by envelopes, which have URLs without
107  // href attribute, getURL must be called with useHref=false
108  TiXmlElement* recvByElem = new TiXmlElement("received-by");
109  recvByElem->SetAttribute("value", receivedObject.getBy());
110  recvElem->LinkEndChild(recvByElem);
111 
112  if(receivedObject.getFrom() != "")
113  {
114  TiXmlElement* recvFromElem = new TiXmlElement("received-from");
115  recvFromElem->SetAttribute("value", receivedObject.getFrom());
116  recvElem->LinkEndChild(recvFromElem);
117  }
118 
119  TiXmlElement* recvDateElem = new TiXmlElement("received-date");
120  recvDateElem->SetAttribute("value", dateToStr(receivedObject.getDate()));
121  recvElem->LinkEndChild(recvDateElem);
122 
123  if(receivedObject.getId() != "")
124  {
125  TiXmlElement* recvIdElem = new TiXmlElement("received-id");
126  recvIdElem->SetAttribute("value", receivedObject.getId());
127  recvElem->LinkEndChild(recvIdElem);
128  }
129 
130  if(receivedObject.getVia() != "")
131  {
132  TiXmlElement* recvViaElem = new TiXmlElement("received-via");
133  recvViaElem->SetAttribute("value", receivedObject.getVia());
134  recvElem->LinkEndChild(recvViaElem);
135  }
136 
137  BOOST_FOREACH(TiXmlElement* elem, getUserdefinedParameters(receivedObject.getUserdefinedParameters()))
138  {
139  recvElem->LinkEndChild(elem);
140  }
141 
142  return recvElem;
143 }
static const std::string dateToStr(const base::Time &date)
Definition: xml_format.cpp:15
static std::vector< TiXmlElement * > getUserdefinedParameters(const UserdefinedParameterList &params)
Definition: xml_format.cpp:145
TiXmlElement * fipa::acl::XMLFormat::getURL ( const std::string &  url,
bool  useHref 
)
static

Definition at line 22 of file xml_format.cpp.

23 {
24  TiXmlElement* urlElem = new TiXmlElement("url");
25  if(useHref)
26  {
27  urlElem->SetAttribute("href", url);
28  }
29  else
30  {
31  urlElem->LinkEndChild(new TiXmlText(url));
32  }
33  return urlElem;
34 }
std::vector< TiXmlElement * > fipa::acl::XMLFormat::getUserdefinedParameters ( const UserdefinedParameterList params)
static

Definition at line 145 of file xml_format.cpp.

146 {
147  std::vector<TiXmlElement*> vec;
148  BOOST_FOREACH(UserdefParam userdefParam, params)
149  {
150  TiXmlElement* userdefParamElem = new TiXmlElement("user-defined");
151  userdefParamElem->SetAttribute("href", "X-" + userdefParam.getName());
152  userdefParamElem->SetAttribute("type", "string");
153  userdefParamElem->LinkEndChild(new TiXmlText(userdefParam.getValue()));
154  vec.push_back(userdefParamElem);
155  }
156  return vec;
157 }

The documentation for this class was generated from the following files: