예제 #1
0
        public IEnumerable <XElement> Format(QueryEventResponse eventResponse)
        {
            foreach (var @event in eventResponse.Events)
            {
                @event.Epcs                 = eventResponse.Epcs.Where(epc => epc.Event == @event).ToList();
                @event.CustomFields         = eventResponse.CustomFields.Where(field => field.Event == @event).ToList();
                @event.BusinessTransactions = eventResponse.BusinessTransactions.Where(tx => tx.Event == @event).ToList();
                @event.SourcesDestinations  = eventResponse.SourcesDestinations.Where(tx => tx.Event == @event).ToList();

                yield return(Format(@event));
            }
        }
예제 #2
0
        public XDocument FormatPollResponse(string queryName, QueryEventResponse events)
        {
            var epcisQueryNamespace = XNamespace.Get("urn:epcglobal:epcis-query:xsd:1");
            var formatted           = _eventFormatter.Format(events);

            return(new XDocument(new XDeclaration("1.0", "UTF-8", "yes"),
                                 new XElement(epcisQueryNamespace + "QueryResult",
                                              new XAttribute(XNamespace.Xmlns + "a", epcisQueryNamespace),
                                              new XElement("queryName", queryName),
                                              new XElement("resultBody", new XElement("EventList", formatted.ToArray <object>()))
                                              )
                                 ));
        }
예제 #3
0
        public string FormatSubscriptionResponse(Subscription subscription, QueryEventResponse response)
        {
            var root = new XElement(XName.Get("EPCISQueryDocument", EpcisQueryNamespace));

            root.Add(new XAttribute("creationDate", SystemContext.Clock.Now));
            root.Add(new XAttribute("schemaVersion", "1.0"));

            var body         = new XElement("EPCISBody");
            var queryResults = new XElement(XName.Get("QueryResults", EpcisQueryNamespace));

            queryResults.Add(new XElement("queryName", subscription.QueryName));
            queryResults.Add(new XElement("subscriptionID", subscription.Id));

            var eventList = new XElement("resultsBody", new XElement("EventList", _eventFormatter.Format(response)));

            queryResults.Add(eventList);
            body.Add(queryResults);
            root.Add(body);

            return(root.ToString(SaveOptions.DisableFormatting));
        }