public Action<Message> timeQuery(DBEngine<int, DBElement<int, string>> db) { Action<Message> TimeQuery = (msg) => { QueryEngine<int, string> qe = new QueryEngine<int, string>(db); XDocument doc = XDocument.Parse(msg.content); string FirstTime = doc.Descendants("Msg").Descendants("Data").Descendants("firstTime").ElementAt(0).Value; string SecondTime = doc.Descendants("Msg").Descendants("Data").Descendants("secondTime").ElementAt(0).Value; DateTime firstTime = Convert.ToDateTime(FirstTime); DateTime secondTime = Convert.ToDateTime(SecondTime); string name = doc.Descendants("Msg").Descendants("DBName").ElementAt(0).Value; Func<int, bool> timequery = qe.defineTimeQuery(firstTime, secondTime); List<int> keys; StringBuilder result = new StringBuilder(string.Format("<Msg><Reply>timeQuery</Reply><DBName>{0}</DBName><Data>",name)); if (qe.processQuery(timequery, out keys)) { foreach (var key in keys) result.Append(string.Format("<key>{0}</key>", key.ToString())); } else result.Append("There is no element written in a specified time-date interval"); result.Append("</Data></Msg>"); msg.content = result.ToString(); Utilities.swapUrls(ref msg); }; return TimeQuery; }
public Action<Message> specPatternQuery(DBEngine<int, DBElement<int, string>> db) { Action<Message> SpecPatternQuery = (msg) => { QueryEngine<int, string> qe = new QueryEngine<int, string>(db); XDocument doc = XDocument.Parse(msg.content); Func<int, bool> f = qe.defineSpecPatternQuery(); string name=doc.Descendants("Msg").Descendants("DBName").ElementAt(0).Value; List<int> keys; StringBuilder result = new StringBuilder(string.Format("<Msg><Reply>specPatternQuery</Reply><DBName>{0}</DBName><Data>",name)); if (qe.processQuery(f, out keys)) { foreach (var key in keys) result.Append(string.Format("<key>{0}</key>", key.ToString())); } else result.Append("There is no key that matching a specified pattern"); result.Append("</Data></Msg>"); msg.content = result.ToString(); Utilities.swapUrls(ref msg); }; return SpecPatternQuery; }