public void insertData(DBEngine <int, DBElement <int, string> > db) { DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.name = "Usain Bolt"; elem1.descr = "Athelte"; elem1.timeStamp = DateTime.Now; elem1.children.AddRange(new List <int> { 2 }); elem1.payload = "Fastest in the world"; db.insert(1, elem1); DBElement <int, string> elem2 = new DBElement <int, string>(); elem2.name = "Saina Nehwal"; elem2.descr = "Badminton Player"; elem2.timeStamp = DateTime.Now; elem2.children.AddRange(new List <int> { 1 }); elem2.payload = "Famous badminton player"; db.insert(2, elem2); db.showDB(); WriteLine(); }
static void Main(string[] args) { DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); DBEngine <string, DBElement <string, List <string> > > dbString = new DBEngine <string, DBElement <string, List <string> > >(); ItemFactory <int, string> itemFactory = new ItemFactory <int, string>(); DBElement <int, string> elem = itemFactory.Create(); elem.name = "element"; elem.descr = "test element"; elem.timeStamp = DateTime.Now.AddDays(-4); elem.children.AddRange(new List <int> { 1, 2, 3 }); elem.payload = "elem's payload"; WriteLine("\n Item to be inserted.. \n"); elem.showElement(); db.insert(1, elem); db.showDB(); WriteLine(); WriteLine("\n Inserting second element into DB :"); DBElement <int, string> elem2 = new DBElement <int, string>(); elem2.name = "element2"; elem2.descr = "test element2"; elem2.timeStamp = DateTime.Now; elem2.children.AddRange(new List <int> { 1, 2, 3, 4 }); elem2.payload = "elem2's payload"; WriteLine("\nItem to be inserted.. \n"); elem2.showElement(); db.insert(2, elem2); WriteLine("\n\n DB after insertion:"); db.showDB(); //Inserting element 3 WriteLine("\n Inserting third element into DB :"); DBElement <int, string> elem3 = new DBElement <int, string>(); elem3.name = "element3"; elem3.descr = "test element3"; elem3.timeStamp = DateTime.Now.AddDays(-5); elem3.children.AddRange(new List <int> { 5, 8, 10 }); elem3.payload = "elem3's payload"; WriteLine("\nItem to be inserted.. \n"); elem3.showElement(); db.insert(3, elem3); WriteLine("\n\n DB after insertion:"); db.showDB(); QueryEngineTest engineTest = new QueryEngineTest(); engineTest.test1(); engineTest.test2(); engineTest.test3(); }
static void Main(string[] args) { DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); ItemFactory <int, string> itemFactory = new ItemFactory <int, string>(); "Demonstrating Requirement #2".title(); DBElement <int, string> elem = itemFactory.Create(); elem.name = "element"; elem.descr = "test element"; elem.timeStamp = DateTime.Now.AddDays(-4); elem.children.AddRange(new List <int> { 1, 2, 3 }); elem.payload = "elem's payload"; WriteLine("\n Item to be inserted.. \n"); elem.showElement(); db.insert(1, elem); db.showDB(); WriteLine(); WriteLine("\n Inserting second element into DB :"); DBElement <int, string> elem2 = new DBElement <int, string>(); elem2.name = "element2"; elem2.descr = "test element2"; elem2.timeStamp = DateTime.Now; elem2.children.AddRange(new List <int> { 1, 2, 3, 4 }); elem2.payload = "elem2's payload"; WriteLine("\nItem to be inserted.. \n"); elem2.showElement(); db.insert(2, elem2); WriteLine("\n\n DB after insertion:"); db.showDB(); "Adding relationship :".title('.'); WriteLine("\n Elements in DB :"); db.showDB(); int key = 2; var children = new List <int> { 5, 6 }; WriteLine("\n Add children for key {0} : ", key); foreach (var child in children) { Write("{0}, ", child); } WriteLine(); db.addRelationship(key, children); WriteLine("\n\n DB after the change :"); db.showDB(); WriteLine(); "".demarcation(); ItemEditorTest editorTest = new ItemEditorTest(); editorTest.test(); }
static void Main(string[] args) { //test stub for Query Processing // "Testing QueryProcessing Package".title('='); WriteLine(); QueryProcessing <int, string> query = new QueryProcessing <int, string>(); DBElement <int, string> elem = new DBElement <int, string>(); DBElement <int, string> elemResults; List <int> childrens; DBEngine <int, DBElement <int, string> > dbEngine = new DBEngine <int, DBElement <int, string> >(); // "Metadata with data dictionary is ".subTitle('-'); elem.name = "X"; elem.descr = "description"; elem.timeStamp = DateTime.Parse("09/20/2015 11:36:58 PM"); elem.children = new List <int> { 2, 3, 4 }; elem.payload = "payload"; dbEngine.insert(1, elem); elem = new DBElement <int, string>(); elem.name = "XX"; elem.descr = "description"; elem.timeStamp = DateTime.Now; elem.children = new List <int> { 5, 6, 7 }; elem.payload = "payload"; dbEngine.insert(12, elem); dbEngine.showDB(); /*query.DBEngine = dbEngine; * Write("\n\n"); * //testing different kinds of function by querying different kinds of data * "Testing func: valueQuery() by getting following metdata from key = 1".subTitle(); * query.valueQuery(1, out elemResults); * elemResults.showElement(); * Write("\n\n"); * "Testing func: childrenQuery() by getting following childrens from key = 1".subTitle(); * query.childrensQuery(1, out childrens); * childrens.showList(); * Write("\n\n"); * "Testing func: processKeyMatchQuery() and defineQueryKeySearch() by getting keys with pattern 1".subTitle(); * List<int> keys1 = query.processMatchQuery(query.defineQueryKeySearch("1")); * keys1.showList(); * Write("\n\n"); * "Testing func: processKeyMatchQuery() and defineQueryValueSearch() by getting keys with values having 'X' in their pattern".subTitle(); * List<int> keys2 = query.processMatchQuery(query.defineQueryValueSearch("X")); * keys2.showList(); * Write("\n\n"); * "Testing func: processKeyMatchQuery() and defineQueryTimestampSearch() by getting keys with timestamp between 09/20/2015 11:36:58 PM to 09/22/2015 11:36:58 PM".subTitle(); * List<int> keys3 = query.processMatchQuery(query.defineQueryTimestamp(DateTime.Parse("09/20/2015 11:36:58 PM"), DateTime.Parse("09/22/2015 11:36:58 PM"))); * keys3.showList(); * Write("\n\n");*/ }
static void Main(string[] args) { DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); ItemFactory <int, string> itemFactory = new ItemFactory <int, string>(); "Demonstrating Requirement #2".title(); DBElement <int, string> elem = itemFactory.Create(); elem.name = "element"; elem.descr = "test element"; elem.timeStamp = DateTime.Now.AddDays(-4); elem.children.AddRange(new List <int> { 1, 2, 3 }); elem.payload = "elem's payload"; WriteLine("\n Item to be inserted.. \n"); elem.showElement(); db.insert(1, elem); db.showDB(); WriteLine("\n Inserting second element into DB :"); DBElement <int, string> elem2 = new DBElement <int, string>(); elem2.name = "element2"; elem2.descr = "test element2"; elem2.timeStamp = DateTime.Now; elem2.children.AddRange(new List <int> { 1, 2, 3, 4 }); elem2.payload = "elem2's payload"; WriteLine("\nItem to be inserted.. \n"); elem2.showElement(); db.insert(2, elem2); WriteLine("\n\n DB after insertion:"); db.showDB(); WriteLine("\n\n DB after insertion:"); db.showDB(); var dict = new Dictionary <int, DBElement <int, string> >(); var keys = db.searchForTimeStamp(DateTime.Now.AddDays(-6), DateTime.Now.AddDays(-3)); Console.WriteLine("\nRunning a query on database..\n"); Console.WriteLine("\n\nThe result are the following keys:\n\n"); foreach (var item in keys) { dynamic result = db.searchValue(item); Console.Write("{0}, ", item); dict.Add(item, result); } DBFactory <int, DBElement <int, string> > dbFactory = new DBFactory <int, DBElement <int, string> >(dict); "Immutable database:".title('.'); Console.WriteLine("\n\nImmutable database is of type DBFactory, which is immutable (Found in DBFactory.cs)."); }
public void insertData(DBEngine <int, DBElement <int, string> > db) { DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.name = "India"; elem1.descr = "Country"; elem1.timeStamp = DateTime.Now; elem1.children.AddRange(new List <int> { 2, 3 }); elem1.payload = "Famous cricket player"; db.insert(1, elem1); DBElement <int, string> elem2 = new DBElement <int, string>(); elem2.name = "Roger federer"; elem2.descr = "Tennis player"; elem2.timeStamp = DateTime.Now.AddDays(-15); elem2.children.AddRange(new List <int> { 3 }); elem2.payload = "Famous tennis player"; db.insert(2, elem2); DBElement <int, string> elem3 = new DBElement <int, string>(); elem3.name = "Usain Bolt"; elem3.descr = "Athelte"; elem3.timeStamp = DateTime.Now; elem3.children.AddRange(new List <int> { 1 }); elem3.payload = "Fastest in the world"; db.insert(3, elem3); DBElement <int, string> elem4 = new DBElement <int, string>(); elem4.name = "Saina Nehwal"; elem4.descr = "Badminton Player"; elem4.timeStamp = DateTime.Now; elem4.children.AddRange(new List <int> { 2 }); elem4.payload = "Famous badminton player"; db.insert(4, elem4); db.showDB(); WriteLine(); }
private void test2() { Write("\n --- Test DBElement<string,List<string>> ---"); DBElement <string, List <string> > newerelem1 = new DBElement <string, List <string> >(); newerelem1.name = "newerelem1"; newerelem1.descr = "better formatting"; newerelem1.payload = new List <string> { "alpha", "beta", "gamma" }; newerelem1.payload.Add("delta"); newerelem1.payload.Add("epsilon"); Write(newerelem1.showElement <string, List <string>, string>()); WriteLine(); DBElement <string, List <string> > newerelem2 = new DBElement <string, List <string> >(); newerelem2.name = "newerelem2"; newerelem2.descr = "better formatting"; newerelem1.children.AddRange(new[] { "first", "second" }); newerelem2.payload = new List <string> { "a", "b", "c" }; newerelem2.payload.Add("d"); newerelem2.payload.Add("e"); Write(newerelem2.showElement <string, List <string>, string>()); WriteLine(); Write("\n --- Test DBEngine<string,DBElement<string,List<string>>> ---"); int seed = 0; string skey = seed.ToString(); Func <string> skeyGen = () => { ++seed; skey = "string" + seed.ToString(); skey = skey.GetHashCode().ToString(); return(skey); }; int key = 0; Func <int> keyGen = () => { ++key; return(key); }; DBEngine <string, DBElement <string, List <string> > > newdb = new DBEngine <string, DBElement <string, List <string> > >(); newdb.insert(skeyGen(), newerelem1); newdb.insert(skeyGen(), newerelem2); newdb.show <string, DBElement <string, List <string> >, List <string>, string>(); WriteLine(); }
/*------------------------Function to get the project dependancy from the Xml file----------------*/ public void displayDependancy() { try { XDocument xmlDoc = XDocument.Load(".\\projectDependancy.xml"); var dependancy = from y in xmlDoc.Descendants("Project") //fetch values from the xml select new DBElement <string, List <string> >() { key = y.Descendants("Package").FirstOrDefault().Value, name = y.Descendants("Package").FirstOrDefault().Value, descr = y.Descendants("Package").FirstOrDefault().Value + " dependancy packages", children = y.Descendants("Relationship").Descendants("package").Select(package => { return(package.Value); }).ToList(), payload = y.Descendants("Relationship").Descendants("package").Select(package => { return(package.Value); }).ToList(), }; foreach (dynamic value in dependancy) { db.insert(value.key, value); } } catch (Exception e) { Console.WriteLine("\nThe error is {0}.\n", e.Message); } }
public Action<Message>insert(DBEngine<int,DBElement<int,string>>db) { Action<Message> Insert = (msg) => { XDocument doc = XDocument.Parse(msg.content); int key = int.Parse(doc.Descendants("Msg").Descendants("Data").Descendants("key").ElementAt(0).Value); DBElement<int, string> elem = new DBElement<int, string>(); elem.name = doc.Descendants("Msg").Descendants("Data").Descendants("value").Descendants("name").ElementAt(0).Value; elem.descr = doc.Descendants("Msg").Descendants("Data").Descendants("value").Descendants("descr").ElementAt(0).Value; elem.timeStamp = (DateTime)doc.Descendants("Msg").Descendants("Data").Descendants("value").Descendants("timestamp").ElementAt(0); IEnumerable<XElement> children = doc.Descendants("Msg").Descendants("Data").Descendants("value").Descendants("children").Descendants("key"); foreach (var child in children) elem.children.Add(int.Parse(child.Value)); IEnumerable<XElement> items = doc.Descendants("Msg").Descendants("Data").Descendants("value").Descendants("payload"); if (items.Count() == 1) elem.payload = items.ElementAt(0).Value; if (!db.insert(key, elem)) msg.content = "Insert fail"; else { msg.content = "Insert success"; Console.Write("\n\n --- insert a DBElement<int,string>---"); elem.showElement(); } Utilities.swapUrls(ref msg); }; return Insert; }
public Action<Message> insert(DBEngine<string, DBElement<string, List<string>>> db) { Action<Message> Insert =(msg)=> { XDocument xml = XDocument.Parse(msg.content); XElement element = xml.Descendants("Msg").ElementAt(0).Descendants("Data").ElementAt(0); string key = element.Descendants("key").ElementAt(0).Value; DBElement<string, List<string>> elem = new DBElement<string, List<string>>(); elem.name = element.Descendants("value").Descendants("name").ElementAt(0).Value; elem.descr= element.Descendants("value").Descendants("descr").ElementAt(0).Value; elem.timeStamp = (DateTime)element.Descendants("value").Descendants("timestamp").ElementAt(0); IEnumerable<XElement> children = element.Descendants("value").Descendants("children").Descendants("key"); foreach(var child in children) elem.children.Add(child.Value); IEnumerable<XElement> items = element.Descendants("value").Descendants("payload").Descendants("item"); elem.payload = new List<string>(); foreach (var item in items) elem.payload.Add(item.Value); if (!db.insert(key, elem)) msg.content = "Insert fail"; else { msg.content = "Insert success"; Console.Write("\n\n --- insert a DBElement<string,List<string>>---"); elem.showEnumerableElement(); } Utilities.swapUrls(ref msg); }; return Insert; }
public static void restoreDatabase(this DBEngine <string, DBElement <string, List <string> > > dbEngine) { XDocument xmlDoc = XDocument.Load(xmlLocation + restoreXmlName + ".xml"); "XML to be augumented".title('_'); Console.WriteLine("{0}", xmlDoc.ToString()); var results = xmlDoc.Descendants("element").Select(p => new DBElement <string, List <string> > { name = p.Descendants("name").FirstOrDefault().Value, descr = p.Descendants("description").FirstOrDefault().Value, payload = p.Descendants("payload").Select(q => { return(q.Value); }).ToList(), children = p.Descendants("children").Descendants("child").Select(q => { return(q.Value); }).ToList(), key = p.Descendants("key").FirstOrDefault().Value, dbOperation = p.Descendants("dbOperation").FirstOrDefault().Value }); var keys = dbEngine.Keys(); foreach (var result in results) { //ToDo: Check if already present in DB dbEngine.insert(result.key, result); //toDo: Update the persisted file with new DB contents } //Update Xml with new DB toXml(dbEngine); }
static void Main(string[] args) { DBEngine <string, DBElement <string, List <string> > > db = new DBEngine <string, DBElement <string, List <string> > >(); ItemFactory <int, string> itemFactory = new ItemFactory <int, string>(); "Demonstrating Requirement #2".title(); DBElement <string, List <string> > elem = new DBElement <string, List <string> >(); elem.name = "element"; elem.descr = "test element"; elem.timeStamp = DateTime.Now.AddDays(-4); elem.children.AddRange(new List <string> { "1", "2", "3 " }); elem.payload = new List <string> { "elem's payload" }; WriteLine("\n Item to be inserted.. \n"); elem.showEnumerableElement(); db.insert("1", elem); db.showEnumerableDB(); WriteLine(); WriteLine("\n Inserting second element into DB :"); DBElement <string, List <string> > elem2 = new DBElement <string, List <string> >(); elem2.name = "element2"; elem2.descr = "test element2"; elem2.timeStamp = DateTime.Now; elem2.children.AddRange(new List <string> { "1", "2", "3", "4" }); elem2.payload = new List <string> { "elem's payload" }; WriteLine("\nItem to be inserted.. \n"); elem2.showElement(); db.insert("2", elem2); WriteLine("\n\n DB after insertion:"); db.showEnumerableDB(); "Persisting the database to XML:".title('_'); db.toXml(); "Augumenting database from XML".title('_'); db.restoreDatabase(); db.showEnumerableDB(); }
private void test1() { Write("\n --- Test DBElement<int,string> ---"); DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.payload = "a payload"; Write(elem1.showElement <int, string>()); WriteLine(); DBElement <int, string> elem2 = new DBElement <int, string>("Darth Vader", "Evil Overlord"); elem2.payload = "The Empire strikes back!"; Write(elem2.showElement <int, string>()); WriteLine(); var elem3 = new DBElement <int, string>("Luke Skywalker", "Young HotShot"); elem3.children.AddRange(new List <int> { 1, 5, 23 }); elem3.payload = "X-Wing fighter in swamp - Oh oh!"; Write(elem3.showElement <int, string>()); WriteLine(); Write("\n --- Test DBEngine<int,DBElement<int,string>> ---"); int key = 0; Func <int> keyGen = () => { ++key; return(key); }; // anonymous function to generate keys DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); bool p1 = db.insert(keyGen(), elem1); bool p2 = db.insert(keyGen(), elem2); bool p3 = db.insert(keyGen(), elem3); if (p1 && p2 && p3) { Write("\n all inserts succeeded"); } else { Write("\n at least one insert failed"); } db.show <int, DBElement <int, string>, string>(); WriteLine(); }
private void test3() { DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); DBEngine <string, DBElement <string, List <string> > > dbString = new DBEngine <string, DBElement <string, List <string> > >(); ItemFactory <int, string> itemFactory = new ItemFactory <int, string>(); //---------------Search for data with specified time interval--------------- "Search for data with specified time interval:".title('.'); WriteLine("\n\n Elements in DB :"); var elem = new DBElement <int, string>(); elem.name = "old element"; elem.descr = "old test element"; elem.timeStamp = DateTime.Now.AddDays(-3); elem.children.AddRange(new List <int> { 85, 27, 65 }); elem.payload = "old elem's payload"; DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.name = "old2 element"; elem1.descr = "old2 test element"; elem1.timeStamp = DateTime.Now.AddDays(-2); elem1.children.AddRange(new List <int> { 11, 12, 13 }); elem1.payload = "old2 elem's payload"; WriteLine("\n\n Search for Key which is created between {0} and {1}:\n\n", DateTime.Now.AddDays(-5).Date, DateTime.Now.AddDays(-1).Date); db.insert(99, elem); db.insert(50, elem1); db.showDB(); WriteLine(); var resultkeys = db.searchForTimeStamp(DateTime.Now.AddDays(-5), DateTime.Now.AddDays(-1)); WriteLine("\n\nThe result is:\n\n"); foreach (var item in resultkeys) { Write("{0}, ", item); } //---------------Search for data with specified time interval--------------- }
public void getDatafromXML(DBEngine <string, DBElement <string, List <string> > > dbEngine, String inputFile) { XDocument document = new XDocument(); String fileName = ""; fileName = inputFile; try { document = XDocument.Load(fileName); } catch (Exception e) { Console.WriteLine("Please check the XML file used for augmentation"); } IEnumerable <XElement> elem = document.Descendants("elements"); try { for (int i = 0; i < elem.Elements().Count(); i++) { DBElement <string, List <string> > dbElement = new DBElement <string, List <string> >(); string key = elem.Elements().Attributes().ElementAt(i).Value; for (int count = 0; count < elem.Elements().Attributes().ElementAt(i).Parent.Descendants().Count(); count++) { XElement elementRecord = elem.Elements().Attributes().ElementAt(i).Parent.Descendants().ElementAt(count); if (elementRecord.Name.ToString().Equals("name")) { dbElement.name = elementRecord.Value; } else if (elementRecord.Name.ToString().Equals("desc")) { dbElement.descr = elementRecord.Value; } else if (elementRecord.Name.ToString().Equals("time")) { dbElement.timeStamp = DateTime.Parse(elementRecord.Value); } else if (elementRecord.Name.ToString().Equals("children")) { List <string> children = new List <string>(); for (int j = 0; j < elementRecord.Descendants().Count(); j++) { children.Add(elementRecord.Descendants().ElementAt(j).Value); } dbElement.children = children; } else if (elementRecord.Name.ToString().Equals("payload")) { List <string> payload = new List <string>(); for (int j = 0; j < elementRecord.Descendants().Count(); j++) { payload.Add(elementRecord.Descendants().ElementAt(j).Value); } dbElement.payload = payload; } } dbEngine.insert(key, dbElement); } } catch (Exception e) { Console.WriteLine("Please check the xml file"); } }
static void Main(string[] args) { //test stun for persist engine "Testing PersistEngine Package".title(); WriteLine(); PersistEngine <int, string> persistEngine = new PersistEngine <int, string>(); "Testing Persist Engine Package".title('='); DBElement <int, string> elem = new DBElement <int, string>(); DBEngine <int, DBElement <int, string> > dbEngine = new DBEngine <int, DBElement <int, string> >(); //creating metdata "Metadata with data dictionary is ".title(); elem.name = "X"; elem.descr = "description"; elem.timeStamp = DateTime.Parse("09/20/2015 11:36:58 PM"); elem.children = new List <int> { 2, 3, 4 }; elem.payload = "payload"; dbEngine.insert(1, elem); elem = new DBElement <int, string>(); elem.name = "XX"; elem.descr = "description"; elem.timeStamp = DateTime.Now; elem.children = new List <int> { 5, 6, 7 }; elem.payload = "payload"; dbEngine.insert(12, elem); dbEngine.showDB(); //persisting metadata into XML "Write in-memory database in XML file, please check DataPersistTest.xml file in Path:./PersistEngine/bin/debug.".title('-'); persistEngine.persistXML(dbEngine); "Deleting in-memory database".title('-'); dbEngine.Dictionary.Clear(); "Database restored or augmented from an existing XML (DataPersistTest.xml) file".title('-'); persistEngine.retrieveDataFromXMLTypeTwo(dbEngine, "DataPersistTest.xml", 10); dbEngine.showDB(); WriteLine(); Write("\n\n"); }
//----< process add message request >----- public string processAddMessage(XDocument xdoc) { string content = ""; int type = getKeyValueType(xdoc); if (type == 1) { DBElement <string, List <string> > element = new DBElement <string, List <string> >(); string key = createAddDBElement(xdoc, out element); if (db.insert(key, element)) { content = key + " record is inserted Successfully."; } else { content = key + " record is not inserted."; } } return(content); }
//<------------performs insert operation on database and generates response msg accordingly XElement insert_elem <Key, Data>(XElement request_msg, DBEngine <Key, DBElement <Key, Data> > db) { Console.Write("\n Request to Insert DB Element"); XElement response_msg = new XElement("Query_Response"); XElement type = new XElement("Query_Type", "Insert"); XElement result = new XElement("Result", "Could not insert element"); try { string name = request_msg.Element("Name").Value; string descr = request_msg.Element("Description").Value; string payload = request_msg.Element("Payload").Value; Key k = (Key)Convert.ChangeType(request_msg.Element("Key").Value, typeof(Key)); Console.WriteLine(" with key - {0}", k); DBElement <Key, Data> elem = new DBElement <Key, Data>(); elem.name = name; elem.descr = descr; bool children_present = false; List <Key> child_list = new List <Key>(); if (request_msg.Element("Children") != null) { children_present = true; foreach (var child_key in request_msg.Element("Children").Elements("Key")) { child_list.Add((Key)Convert.ChangeType(child_key.Value, typeof(Key))); } } if (children_present) { elem.children = child_list; } elem.payload = (Data)Convert.ChangeType(payload, typeof(Data)); bool operation_result = db.insert(k, elem); if (operation_result) { result = new XElement("Result", "DB Element inserted successfully into database."); } else { result = new XElement("Result", "Could not insert element into database"); } response_msg.Add(type); response_msg.Add(result); return(response_msg); } catch (Exception ex) { Console.WriteLine("\n XML file for request message is not in the expected format. A particular tag could not be found.\n Exception = {0}", ex); result = new XElement("Result", "Could not insert element into database"); response_msg.Add(type); response_msg.Add(result); return(response_msg); } }
static void Main(string[] args) { "Testing DBEngine Package".title('='); WriteLine(); Program p1 = new Program(); p1.testDBlement(); p1.testDBElementenurmableData(); Write("\n --- Test DBEngine<string,DBElement<string,List<string>>> ---"); int seed = 0; string skey = seed.ToString(); Func <string> skeyGen = () => { ++seed; skey = "string" + seed.ToString(); skey = skey.GetHashCode().ToString(); return(skey); }; DBEngine <string, DBElement <string, List <string> > > newdb = new DBEngine <string, DBElement <string, List <string> > >(); newdb.insert(skeyGen(), newerelem1); newdb.insert(skeyGen(), newerelem2); newdb.show <string, DBElement <string, List <string> >, List <string>, string>(); WriteLine(); "testing edits".title(); db.show <int, DBElement <int, string>, string>(); DBElement <int, string> editElement = new DBElement <int, string>(); db.getValue(1, out editElement); editElement.showElement <int, string>(); editElement.name = "editedName"; editElement.descr = "editedDescription"; db.show <int, DBElement <int, string>, string>(); Write("\n\n"); }
public void performOperations(DBEngine <string, DBElement <string, List <string> > > testDict, DBElement <string, List <string> > value) { /*----------Perform operations as per the input given in the XML document--------------*/ if (value.operation == "addition") { testDict.insert(value.key, value); //insert the key/value pairs to the main database string s = "Database after inserting key " + value.key + " is"; printDatabase(testDict, s); } if (value.operation == "edit") { testDict.saveValue(value.key, value); //edit the value for the given key string s = "Database after editing key " + value.key + " is"; printDatabase(testDict, s); } if (value.operation == "delete") { testDict.delete(value.key); //delete the key/value pair string s = "Database after deleting key " + value.key + " is"; printDatabase(testDict, s); } if (value.operation == "persist database") { PersistEngine <string, DBElement <string, List <string> > > persist = new PersistEngine <string, DBElement <string, List <string> > >(testDict); var keys = testDict.Keys(); persist.persistToXMLListPayload(keys); printDatabase(testDict, "Persisted database is:"); } if (value.operation == "Query value") { DBElement <string, List <string> > valueOfKey = testDict.getValueOfKey(value.key); printQuery("Querying the database for value of key " + value.key + " is"); Console.WriteLine("\n\nThe value of the Key {0} is:\n", value.key); valueOfKey.showEnumerableElement(); } if (value.operation == "Query children") { QueryEngine <string, DBElement <string, List <string> > > qEngine = new QueryEngine <string, DBElement <string, List <string> > >(testDict); printQuery("Querying the database for value of key " + value.key + " is"); List <string> children = qEngine.getChildrenOfKey(value.key); Console.WriteLine("\nThe children of the Key {0} are:\n", value.key); displayChildren(children); } if (value.operation == "Augment database") { PersistEngine <string, DBElement <string, List <string> > > persist = new PersistEngine <string, DBElement <string, List <string> > >(testDict); string fileName = "C:\\Users\\rakeshh91\\Documents\\Rakesh Documents\\Class Materials\\SMA\\Assignments\\Assignment 4 - Implementation\\CommPrototype\\augmentDatabase.xml"; persist.augmentDatabaseFromXMLStringList(testDict, fileName); printDatabase(testDict, "Database after augmenting is:"); } }
public void restoreData(DBEngine <string, DBElement <string, List <string> > > dbEngine, String inputFile) { XDocument document = new XDocument(); String fileName = inputFile; document = XDocument.Load(fileName); IEnumerable <XElement> elem = document.Descendants("elements"); for (int i = 0; i < elem.Elements().Count(); i++) { DBElement <string, List <string> > dbElement = new DBElement <string, List <string> >(); string key = elem.Elements().Attributes().ElementAt(i).Value; for (int count = 0; count < elem.Elements().Attributes().ElementAt(i).Parent.Descendants().Count(); count++) { XElement elementRecord = elem.Elements().Attributes().ElementAt(i).Parent.Descendants().ElementAt(count); if (elementRecord.Name.ToString().Equals("name")) { dbElement.name = elementRecord.Value; } else if (elementRecord.Name.ToString().Equals("desc")) { dbElement.descr = elementRecord.Value; } else if (elementRecord.Name.ToString().Equals("time")) { dbElement.timeStamp = DateTime.Parse(elementRecord.Value); } else if (elementRecord.Name.ToString().Equals("children")) { List <string> children = new List <string>(); for (int j = 0; j < elementRecord.Descendants().Count(); j++) { children.Add(elementRecord.Descendants().ElementAt(j).Value); } dbElement.children = children; } else if (elementRecord.Name.ToString().Equals("payload")) { List <string> payload = new List <string>(); for (int j = 0; j < elementRecord.Descendants().Count(); j++) { payload.Add(elementRecord.Descendants().ElementAt(j).Value); } dbElement.payload = payload; } } dbEngine.insert(key, dbElement); } }
public void processAddMsg(XDocument xdoc, Sender sndr, Message msg) { DBElement <string, List <string> > element = new DBElement <string, List <string> >(); string key = createAddDBElement(xdoc, out element); Message testMsg = new Message(); testMsg.toUrl = msg.toUrl; testMsg.fromUrl = msg.fromUrl; if (db.insert(key, element)) { msg.content = "\n\n*****************************\nKey = " + key + " is inserted Successfully.\n\n"; } else { msg.content = "\n******************************\n" + key + " record is not inserted.\n\n"; } Util.swapUrls(ref msg); sndr.sendMessage(msg); }
static void Main(string[] args) { "Testing DBExtensions Package".title('='); WriteLine(); Write("\n --- Test DBElement<int,string> ---"); DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.payload = "a payload"; elem1.children = new List <int> { 1, 2, 3, 4 }; Write(elem1.showMetaData <int, string>()); DBEngine <int, DBElement <int, string> > dbs = new DBEngine <int, DBElement <int, string> >(); dbs.insert(1, elem1); dbs.show <int, DBElement <int, string>, string>(); WriteLine(); Write("\n --- Test DBElement<string,List<string>> ---"); DBElement <string, List <string> > newelem1 = new DBElement <string, List <string> >(); newelem1.name = "newelem1"; newelem1.descr = "test new type"; newelem1.children = new List <string> { "Key1", "Key2" }; newelem1.payload = new List <string> { "one", "two", "three" }; Write(newelem1.showElement <string, List <string>, string>()); DBEngine <string, DBElement <string, List <string> > > dbe = new DBEngine <string, DBElement <string, List <string> > >(); dbe.insert("key1", newelem1); dbe.show <string, DBElement <string, List <string> >, List <string>, string>(); Write("\n\n"); }
static void Main(string[] args) { "Testing DBEngine Package".title('=');; WriteLine(); "Test db of scalar elements".title(); WriteLine(); DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.payload = "a payload"; DBElement <int, string> elem2 = new DBElement <int, string>("Darth Vader", "Evil Overlord"); elem2.payload = "The Empire strikes back!"; var elem3 = new DBElement <int, string>("Luke Skywalker", "Young HotShot"); elem3.payload = "X-Wing fighter in swamp - Oh oh!"; if (verbose) { Write("\n --- Test DBElement<int,string> ---"); WriteLine(); elem1.showElement(); WriteLine(); elem2.showElement(); WriteLine(); elem3.showElement(); WriteLine(); /* ElementFormatter is not ready for prime time yet */ //Write(ElementFormatter.formatElement(elem1.showElement<int, string>(), false)); } Write("\n --- Test DBEngine<int,DBElement<int,string>> ---"); WriteLine(); int key = 0; Func <int> keyGen = () => { ++key; return(key); }; DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); bool p1 = db.insert(keyGen(), elem1); bool p2 = db.insert(keyGen(), elem2); bool p3 = db.insert(keyGen(), elem3); if (p1 && p2 && p3) { Write("\n all inserts succeeded"); } else { Write("\n at least one insert failed"); } db.showDB(); WriteLine(); "Test db of enumerable elements".title(); WriteLine(); DBElement <string, List <string> > newelem1 = new DBElement <string, List <string> >(); newelem1.name = "newelem1"; newelem1.descr = "test new type"; newelem1.payload = new List <string> { "one", "two", "three" }; DBElement <string, List <string> > newerelem1 = new DBElement <string, List <string> >(); newerelem1.name = "newerelem1"; newerelem1.descr = "better formatting"; newerelem1.payload = new List <string> { "alpha", "beta", "gamma" }; newerelem1.payload.Add("delta"); newerelem1.payload.Add("epsilon"); DBElement <string, List <string> > newerelem2 = new DBElement <string, List <string> >(); newerelem2.name = "newerelem2"; newerelem2.descr = "better formatting"; newerelem2.children.AddRange(new List <string> { "first", "second" }); newerelem2.payload = new List <string> { "a", "b", "c" }; newerelem2.payload.Add("d"); newerelem2.payload.Add("e"); if (verbose) { Write("\n --- Test DBElement<string,List<string>> ---"); WriteLine(); newelem1.showEnumerableElement(); WriteLine(); newerelem1.showEnumerableElement(); WriteLine(); newerelem2.showEnumerableElement(); WriteLine(); } Write("\n --- Test DBEngine<string,DBElement<string,List<string>>> ---"); int seed = 0; string skey = seed.ToString(); Func <string> skeyGen = () => { ++seed; skey = "string" + seed.ToString(); skey = skey.GetHashCode().ToString(); return(skey); }; DBEngine <string, DBElement <string, List <string> > > newdb = new DBEngine <string, DBElement <string, List <string> > >(); newdb.insert(skeyGen(), newelem1); newdb.insert(skeyGen(), newerelem1); newdb.insert(skeyGen(), newerelem2); newdb.showEnumerableDB(); Write("\n\n"); }
private void test2() { DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); DBEngine <string, DBElement <string, List <string> > > dbString = new DBEngine <string, DBElement <string, List <string> > >(); ItemFactory <int, string> itemFactory = new ItemFactory <int, string>(); //------------Search for Keys with pattern--------------------- "Search for keys with a pattern:".title('.'); WriteLine("\n\n Elements in DB :"); DBElement <string, List <string> > elemString = new DBElement <string, List <string> >(); elemString.name = "element"; elemString.descr = "test element"; elemString.timeStamp = DateTime.Now; elemString.children.AddRange(new List <string> { "Martin", "Nitish", "Michelle" }); elemString.payload = new List <string> { "elem's payload", "sample payload" }; dbString.insert("Name", elemString); DBElement <string, List <string> > elemString1 = new DBElement <string, List <string> >(); elemString1.name = "element"; elemString1.descr = "test element"; elemString1.timeStamp = DateTime.Now; elemString1.children.AddRange(new List <string> { "Syracuse", "Boston", "Mysore" }); elemString1.payload = new List <string> { "elem's payload", "sample payload" }; dbString.insert("Cities", elemString1); dbString.showEnumerableDB(); string keyPattern = "^C"; WriteLine("\n\nSearching for Keys with pattern: {0}\n", keyPattern); dynamic keys = dbString.searchForKeyPattern(keyPattern); WriteLine("\n\nMatched keys : \n"); foreach (var item in keys) { Write("{0}, ", item); } //------------Search for Keys with pattern--------------------- //------------Search for specified string in metadata--------------------- "Search for specified string in metadata:".title('.'); WriteLine("\n\n Elements in DB :"); db.showDB(); string searchString = "element3"; WriteLine("\n\n\nSearch string : {0}", searchString); WriteLine("\n\nSearching for specified string in metadata: \n\n", searchString); var matchedKeys = db.searchMetadata(searchString); foreach (var matchedKey in matchedKeys) { Write("{0}, ", matchedKey); } //------------Search for specified string in metadata--------------------- }
static void Main(string[] args) { "Testing DBEngine Package".title('='); WriteLine(); Write("\n --- Test DBElement<int,string> ---"); DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.payload = "a payload"; Write(elem1.showElement <int, string>()); WriteLine(); DBElement <int, string> elem2 = new DBElement <int, string>("Darth Vader", "Evil Overlord"); elem2.payload = "The Empire strikes back!"; Write(elem2.showElement <int, string>()); WriteLine(); var elem3 = new DBElement <int, string>("Luke Skywalker", "Young HotShot"); elem3.children.AddRange(new List <int> { 1, 5, 23 }); elem3.payload = "X-Wing fighter in swamp - Oh oh!"; Write(elem3.showElement <int, string>()); WriteLine(); Write("\n --- Test DBEngine<int,DBElement<int,string>> ---"); int key = 0; Func <int> keyGen = () => { ++key; return(key); }; // anonymous function to generate keys DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); bool p1 = db.insert(keyGen(), elem1); bool p2 = db.insert(keyGen(), elem2); bool p3 = db.insert(keyGen(), elem3); if (p1 && p2 && p3) { Write("\n all inserts succeeded"); } else { Write("\n at least one insert failed"); } db.show <int, DBElement <int, string>, string>(); WriteLine(); Write("\n --- Test DBElement<string,List<string>> ---"); DBElement <string, List <string> > newelem1 = new DBElement <string, List <string> >(); newelem1.name = "newelem1"; newelem1.descr = "test new type"; newelem1.payload = new List <string> { "one", "two", "three" }; Write(newelem1.showElement <string, List <string> >()); WriteLine(); Write("\n --- Test DBElement<string,List<string>> ---"); DBElement <string, List <string> > newerelem1 = new DBElement <string, List <string> >(); newerelem1.name = "newerelem1"; newerelem1.descr = "better formatting"; newerelem1.payload = new List <string> { "alpha", "beta", "gamma" }; newerelem1.payload.Add("delta"); newerelem1.payload.Add("epsilon"); Write(newerelem1.showElement <string, List <string>, string>()); WriteLine(); DBElement <string, List <string> > newerelem2 = new DBElement <string, List <string> >(); newerelem2.name = "newerelem2"; newerelem2.descr = "better formatting"; newerelem1.children.AddRange(new[] { "first", "second" }); newerelem2.payload = new List <string> { "a", "b", "c" }; newerelem2.payload.Add("d"); newerelem2.payload.Add("e"); Write(newerelem2.showElement <string, List <string>, string>()); WriteLine(); Write("\n --- Test DBEngine<string,DBElement<string,List<string>>> ---"); int seed = 0; string skey = seed.ToString(); Func <string> skeyGen = () => { ++seed; skey = "string" + seed.ToString(); skey = skey.GetHashCode().ToString(); return(skey); }; DBEngine <string, DBElement <string, List <string> > > newdb = new DBEngine <string, DBElement <string, List <string> > >(); newdb.insert(skeyGen(), newerelem1); newdb.insert(skeyGen(), newerelem2); newdb.show <string, DBElement <string, List <string> >, List <string>, string>(); WriteLine(); "testing edits".title(); db.show <int, DBElement <int, string>, string>(); DBElement <int, string> editElement = new DBElement <int, string>(); db.getValue(1, out editElement); editElement.showElement <int, string>(); editElement.name = "editedName"; editElement.descr = "editedDescription"; db.show <int, DBElement <int, string>, string>(); Write("\n\n"); }
/// <summary> /// Queries the database. /// </summary> /// <param name="input">The input.</param> /// <returns></returns> public String QueryDatabase(String input) { String result = String.Empty; var dbElement = ParseXml(input); switch (dbElement.dbOperation) { case "Add": db.insert(dbElement.key, dbElement); result = "Key " + dbElement.key + " inserted successfully!"; break; case "Edit": db.replaceKeyInstance(dbElement.key, dbElement); result = "Key " + dbElement.key + "'s value modified successfully!"; break; case "Delete": if (db.delete(dbElement.key)) { result = "Key " + dbElement.key + " deleted successfully!"; } else { result = "Key " + dbElement.key + " not found!!"; } break; case "SearchChild": var children = db.searchChildren(dbElement.key); result = "Children are " + string.Join(", ", children.ToArray()); break; case "Search": var value = db.searchValue(dbElement.key); if (value != null) { result = "Key " + dbElement.key + " found!!!!!\n\n"; result += value.showEnumerableElement(); } else { result = "Key " + dbElement.key + " not found!!"; } break; case "Persist": db.toXml(); result = "Database persisted successfully"; break; case "Restore": db.restoreDatabase(); result = "Database successfully restored!!"; break; default: break; } string dbView = db.showEnumerableDB(); "\nDB Contents:\n".title(); result += dbView; return(result); }
//-------< Read the XML File from the path provided and load it to the database. >-------- public void loadDB <Key, Value, Data>(DBEngine <Key, Value> db, string file_name) { try { XDocument xml = XDocument.Load(file_name); XElement root = xml.Element("NoSqlDb"); if (String.Compare(root.Element("KeyType").Value, typeof(Key).ToString()) == 0) { if (String.Compare(root.Element("PayloadType").Value, typeof(Data).ToString()) == 0) { foreach (var kv_pair in root.Elements("Key-Value-Pair")) { try { XElement xml_dbElement = kv_pair.Element("Element"); Key k = (Key)Convert.ChangeType(kv_pair.Element("Key").Value, typeof(Key)); DBElement <Key, Data> elem = new DBElement <Key, Data>(); elem.name = xml_dbElement.Element("Name").Value; elem.descr = xml_dbElement.Element("Descr").Value; elem.timeStamp = DateTime.Parse(xml_dbElement.Element("timestamp").Value); if (xml_dbElement.Element("payload") != null) { elem.payload = (Data)Convert.ChangeType(xml_dbElement.Element("payload").Value, typeof(Data)); } bool children_present = false; List <Key> child_list = new List <Key>(); if (xml_dbElement.Element("Children") != null) { children_present = true; foreach (var child_key in xml_dbElement.Element("Children").Elements("Key")) { child_list.Add((Key)Convert.ChangeType(child_key.Value, typeof(Key))); } } if (children_present) { elem.children = child_list; } Value val = (Value)Convert.ChangeType(elem, typeof(Value)); db.insert(k, val); } catch (Exception) { WriteLine("\n XML elements of a particular DBElement is not in the expected format. A particular tag could not be found."); WriteLine(" Cannot add this DBElement to database. Skipping to parsing of the next DBElement."); } } } else { WriteLine("The payload type of database is not same as the payload type of elements in XML file."); } } else { WriteLine("The Key-type of database is different from the Key-type present in XML file. Cannot Load database."); } } catch (Exception ex) { WriteLine("\n XML file is not in the expected format. A particular tag could not be found."); WriteLine(" Cannot load the XML file to database. ex = {0}", ex); } }
static void Main(string[] args) { "Testing DBExtensions Package".title('='); WriteLine(); DBElement <int, string> elem1 = new DBElement <int, string>("Element-7", "Description of Element-7"); elem1.payload = "Payload of element-7."; elem1.children.AddRange(new List <int> { 8, 9 }); DBElement <int, string> elem2 = new DBElement <int, string>("Element-8", "Description of Element-8"); //elem2.payload = "Payload of element-8."; DBElement <int, string> elem3 = new DBElement <int, string>("Element-9", "Description of Element-9"); elem3.payload = "Payload of element-3."; DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); db.insert(7, elem1); db.insert(8, elem2); db.insert(9, elem3); Write(" Created a new dataBase with following contents:"); db.showDB(); WriteLine("\n\n Now going to persist the database contents to an XML file."); PersistEngine pe = new PersistEngine(); string file_name = pe.persistDB <int, DBElement <int, string>, string>(db); WriteLine(" Database contents are saved as - {0}", file_name); WriteLine("\n Going to remove all DB elements and load the xml file saved above."); db.remove(7); db.remove(8); db.remove(9); WriteLine(" DB contents before calling load-DB"); db.showDB(); WriteLine(" Now send command to load database from the XML file."); pe.loadDB <int, DBElement <int, string>, string>(db, file_name); Write(" DB contents after calling load-DB "); db.showDB(); DBEngine <string, DBElement <string, List <string> > > db2 = new DBEngine <string, DBElement <string, List <string> > >(); Write("\n\n --- DBElement<string,List<string>> ---"); DBElement <string, List <string> > elem_str = new DBElement <string, List <string> >(); elem_str.name = "Element-One"; elem_str.descr = "DB Element whose key type is string and payload type is List of strings."; elem_str.timeStamp = DateTime.Now; elem_str.children = new List <string> { "Two", "Three", "Four" }; elem_str.payload = new List <string> { "Element payload is of type List of strings.", "This is string two.", "And third" }; elem_str.showEnumerableElement(); db2.insert("One", elem_str); Write("\n\n --- DBEngine<string,List<string>> ---"); db2.showEnumerableDB(); XElement noSqlDb = new XElement("NoSqlDb"); XElement keyType = new XElement("KeyType", typeof(int)); XElement payloadType = new XElement("PayloadType", typeof(string)); XElement request_msg = new XElement("Request_Message"); XElement req_type = new XElement("Request_Type", "Insert"); XElement key = new XElement("Key", 45); XElement name = new XElement("Name", "element_one"); XElement descr = new XElement("Description", "Descr of element_one"); XElement payload = new XElement("Payload", "This the payload of element one."); request_msg.Add(req_type); request_msg.Add(key); request_msg.Add(name); request_msg.Add(descr); request_msg.Add(payload); Console.WriteLine("Message = \n{0}", request_msg.ToString()); XElement Rmsg = XElement.Parse(request_msg.ToString()); string Rtype = Rmsg.Element("Request_Type").Value; Console.WriteLine("Request type = {0}", Rtype); XElement abc = new XElement("dummy"); XElement result = new XElement("Result", "Success"); //Console.WriteLine("abc= {0}\nresult = {1}\n", abc.ToString(), result.ToString()); //abc = result; Console.WriteLine("abc= {0}\nresult = {1}", abc.ToString(), result.ToString()); int k = 5; string ts = "Could not find element with key " + k.ToString() + " in database"; //XElement tst = new XElement("Result", "Could not find element with key {0} in database", k); XElement tst = new XElement("Result", ts); Console.WriteLine("tst = {0}", tst.ToString()); XElement qry = new XElement("Query_Response"); XElement par = new XElement("Partial", "This is \njust payload"); qry.Add(tst); qry.Add(par); Console.WriteLine("qry = \n{0}", qry.ToString()); Console.WriteLine("value of qry response =\n{0}", qry.Value.ToString()); //noSqlDb.Add(keyType); //noSqlDb.Add(payloadType); //Console.WriteLine("\nString mesage = \n{0}", noSqlDb.ToString()); //string xml_string = noSqlDb.ToString(); //XElement abc = XElement.Parse(xml_string); //XElement root = abc.Element("KeyType"); //Console.WriteLine("abc= {0}", abc.ToString()); //Console.WriteLine("root= {0}", root.ToString()); //elem.name = xml_dbElement.Element("Name").Value; //string par = root.Value; //Console.WriteLine("par = {0}", par); }
static void Main(string[] args) { "Testing ItemEditor Package".title('='); WriteLine(); Write("\n --- Test DBElement<int,string> ---"); DBElement <int, string> elem1 = new DBElement <int, string>("Element-1", "Description of Element-1"); elem1.payload = "Payload of element-1."; elem1.children.AddRange(new List <int> { 9, 10, 11 }); DBElement <int, string> elem2 = new DBElement <int, string>("Element-2", "Description of Element-2"); elem2.payload = "Payload of element-2."; DBElement <int, string> elem3 = new DBElement <int, string>("Element-3", "Description of Element-3"); elem3.payload = "Payload of element-3."; DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); db.insert(1, elem1); db.insert(2, elem2); db.insert(3, elem3); db.showDB(); Write("\n\n Going to test adding of relationship to DB-elements: Element-1 and Element-2"); bool add1 = db.addRelation <int, DBElement <int, string>, string>(1, 2); bool add2 = db.addRelation <int, DBElement <int, string>, string>(2, 3); bool add3 = db.addRelation <int, DBElement <int, string>, string>(2, 17); //add3 will be equal to false because we cannot add a child key(17) if it is not present in the database. db.showDB(); if (add1 && add2 && add3) { Write("\n Adding relationship to all items successded."); } else { Write("\n Adding relationship failed in one of the cases."); } Write("\n\n Now going to test removing of relationship in DB-element: Element-1."); bool rem1 = db.removeRelation <int, DBElement <int, string>, string>(1, 10); bool rem2 = db.removeRelation <int, DBElement <int, string>, string>(1, 15); //The above case will fail because key-15 is not present in children list of Element-1. db.showDB(); if (rem1 && rem2) { Write("\n Deleting of relationship to both items successded."); } else { Write("\n Deleting of relationship failed in one of the cases."); } Write("\n\n Now going to test edition of name, description and replacing instance of payload with new instance in element1."); bool ed_name1 = db.editName <int, DBElement <int, string>, string>(1, "Elemen1_Renamed."); bool ed_descr = db.editDescr <int, DBElement <int, string>, string>(1, "New description for element 1."); bool ed_inst = db.editInstance <int, DBElement <int, string>, string>(1, "New instance of payload for element-1."); db.showDB(); Write("\n\n --- Test DBElement<string,List<string>> ---"); DBElement <string, List <string> > new_elem1 = new DBElement <string, List <string> >("Element-One", "Description of Element-One"); new_elem1.payload = new List <string> { "First string in payload of Element-One", "Second string in payload of Element-One", "Third string" }; new_elem1.children.AddRange(new List <string> { "Nine", "Ten", "Eleven" }); DBElement <string, List <string> > new_elem2 = new DBElement <string, List <string> >("Element-Two", "Description of Element-Two"); new_elem2.payload = new List <string> { "First string in payload of Element-Two", "Mars", "Venus" }; DBElement <string, List <string> > new_elem3 = new DBElement <string, List <string> >("Element-Three", "Description of Element-Three"); new_elem3.payload = new List <string> { "First string in payload of element-3", "Beta", "Gamma" }; DBEngine <string, DBElement <string, List <string> > > new_db = new DBEngine <string, DBElement <string, List <string> > >(); new_db.insert("One", new_elem1); new_db.insert("Two", new_elem2); new_db.insert("Three", new_elem3); new_db.showEnumerableDB(); Write("\n\n Going to test adding of relationship to DB-elements: Element-One and Element-Two"); bool a1 = new_db.addRelation <string, DBElement <string, List <string> >, List <string> >("One", "Two"); bool a2 = new_db.addRelation <string, DBElement <string, List <string> >, List <string> >("Two", "Three"); bool a3 = new_db.addRelation <string, DBElement <string, List <string> >, List <string> >("Three", "Not_presnet"); //a3 will be false because we are trying to add a key that is not present in the database. new_db.showEnumerableDB(); if (a1 && a2 && a3) { Write("\n Adding relationship to all items successded."); } else { Write("\n Adding relationship failed in one of the cases."); } Write("\n\n Now going to test removing of relationships in DB-element: Element-One"); bool r1 = new_db.removeRelation <string, DBElement <string, List <string> >, List <string> >("One", "Nine"); bool r2 = new_db.removeRelation <string, DBElement <string, List <string> >, List <string> >("One", "Not_present"); //r2 will be false because we are trying to remove a relationship in element one which is not even presnet. new_db.showEnumerableDB(); if (r1 && r2) { Write("\n Deleting of relationships successded in both cases."); } else { Write("\n Deleting of relationship failed in one of the cases."); } Write("\n\n Now going to test edition of name, description and replacing instance of payload with new instance in Element-One."); new_db.editName <string, DBElement <string, List <string> >, List <string> >("One", "Edited name for Element-One"); new_db.editDescr <string, DBElement <string, List <string> >, List <string> >("One", "New description for Element-One"); new_db.editInstance <string, DBElement <string, List <string> >, List <string> >("One", new List <string> { "New payload - String One", "New payload - String Two", "New payload - String Three" }); new_db.showEnumerableDB(); WriteLine(); }