static void Main(string[] args) { "Testing Scheduler Package".title('='); Console.WriteLine(); DBEngine <int, DBElement <int, ListOfStrings> > dbEngineType1 = new DBEngine <int, DBElement <int, ListOfStrings> >(); DBElement <int, ListOfStrings> elem = new DBElement <int, ListOfStrings>(); "Testing function makeDataForDB() by creating metadata for Type1 = <string,ListOfStrings> and Type2 = <int,string>".title('-'); elem.name = "X"; elem.descr = "description"; elem.timeStamp = DateTime.Now; elem.payload = new ListOfStrings(); elem.payload.theWrappedData = new List <string> { "payload1", "payload2" }; dbEngineType1.insert(1, elem); "Scheduler is persisting data every one second. Press any key to exit".title('-'); Scheduler schd = new Scheduler(1000, dbEngineType1); schd.schedular.Enabled = true; Console.ReadKey(); Console.Write("\n\n"); }
void TestR5() { "Demonstrating Requirement #5".title(); DBElement <int, string> elem2 = new DBElement <int, string>(); elem2.name = "element#2";//add a new key/value pairs elem2.descr = "test element#2"; elem2.timeStamp = DateTime.Now; elem2.children.AddRange(new List <int> { 16, 48 }); elem2.payload = "elem#2's payload"; //elem2.showElement(); db.insert(7, elem2); PersistToXML toxml = new PersistToXML(db); toxml.writeXML(); Write("\n --- Test read XML file Start---"); LoadXML fromxml = new LoadXML(db, @"C:\Users\lxinghe\Downloads\Project2Starter\ReadFile.xml"); fromxml.WriteToDBEngine(); Write("\n\n Show key/value pairs in data base:\n"); db.showDB(); Write("\n --- Test read XML file End---"); WriteLine(); }
void TestR6() { int interval = 100; "Demonstrating Requirement #6".title(); WriteLine("\n Enabled Scheduler for {0} miliseconds", interval); Scheduler schedular = new Scheduler(interval, db1); schedular.schedular.Enabled = true; WriteLine(); for (int i = 10; i < 20; i++) { DBElement <int, ListOfStrings> newelement = new DBElement <int, ListOfStrings>(); newelement.name = "newelement int-ListOfString : " + i.ToString(); newelement.descr = "Scheduler requirement demonstration : " + i.ToString(); newelement.timeStamp = DateTime.Now; newelement.children.AddRange(new List <int> { 1 + i, 2 + i, 3 + i, 4 + i, 5 + i }); newelement.payload = new ListOfStrings(); newelement.payload.theWrappedData = new List <string> { "CSE6814" + i.ToString(), "SMA4" + i.ToString(), "C#.net4" + i.ToString(), "AI4" + i.ToString() }; if (db1.insert(i, newelement)) { WriteLine(" Added in in-memory database."); } else { WriteLine(" Insert failed into in-memory database."); } } WriteLine(); WriteLine(" Adding new elements in in-memory database and it will be persist to xml file automatically."); }
//----< write metadata to string >-------------------------------- public static string showMetaData <Key, Data>(this DBElement <Key, Data> elem) { StringBuilder accum = new StringBuilder(); accum.Append(String.Format("\n name: {0}", elem.name)); accum.Append(String.Format("\n desc: {0}", elem.descr)); accum.Append(String.Format("\n desc: {0}", elem.timeStamp)); if (elem.children.Count() > 0) { accum.Append(String.Format("\n Children: ")); bool first = true; foreach (Key key in elem.children) { if (first) { accum.Append(String.Format("{0}", key.ToString())); first = false; } else { accum.Append(String.Format(", {0}", key.ToString())); } } } return(accum.ToString()); }
void TestR3()//addition and deletion of key/value pairs { "Demonstrating Requirement #3".title(); WriteLine(); Write("\n --- Test addition of key/value pairs Start---"); WriteLine(); DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.name = "element#1";//add a new key/value pairs elem1.descr = "test element#1"; elem1.timeStamp = DateTime.Now; elem1.children.AddRange(new List <int> { 6, 8 }); elem1.payload = "elem#1's payload"; elem1.showElement(); db.insert(2, elem1); Write("\n\n Show key/value pairs in data base:\n"); db.showDB(); WriteLine(); Write("\n --- Test addition of key/value pairs End---"); WriteLine(); Write("\n --- Test deletion of key/value pairs Start---"); WriteLine(); db.delete(1);//delete an existing key/value pairs Write("\n\n Show key/value pairs in data base:\n"); db.showDB(); WriteLine(); db.delete(100);//try to delete a key/value pairs that doesn't exist Write("\n --- Test deletion of key/value pairs End---"); WriteLine(); }
static void Main(string[] args) { "Testing ItemEditor Package".title('='); Console.WriteLine(); DBEngine <int, DBElement <int, ListOfStrings> > db1 = new DBEngine <int, DBElement <int, ListOfStrings> >(); ItemEditor <int, string> itemEditor = new ItemEditor <int, string>(); "For key = 1, metadata before editing is: ".title('-'); DBElement <int, ListOfStrings> elem1 = new DBElement <int, ListOfStrings>(); elem1.name = "1st Key/Value = Int/ListOfStrings"; elem1.descr = "This is first element of Int/ListOfStrings key value pair."; elem1.timeStamp = DateTime.Now; elem1.children.AddRange(new List <int> { 100, 101, 102, 103, 104, 105 }); elem1.payload = new ListOfStrings(); elem1.payload.theWrappedData = new List <string> { "CSE681", "SMA", "C#.net", "AI" }; db1.insert(1, elem1); db1.showDB(); Console.WriteLine("\n\n"); "For key = 1, metadata after editing is: ".title('-'); itemEditor.editByName(ref db1, 1, "NewX"); itemEditor.editByDescr(ref db1, 1, "NewDescription"); db1.showDB(); Console.WriteLine("\n\n"); }
public Func <Key, bool> defineTimeStampQuery(DateTime startTime, DateTime?endTime = null) { Func <Key, bool> queryPredicate = (Key key) => { if (!db.Keys().Contains(key)) { return(false); } else { if (endTime == null) { endTime = DateTime.Now; } DBElement <Key, Value> value; db.getValue(key, out value); DBElement <Key, Value> elem = value as DBElement <Key, Value>; int cond1 = DateTime.Compare(elem.timeStamp, startTime); int cond2 = DateTime.Compare(elem.timeStamp, (DateTime)endTime); if (cond1 >= 0 && cond2 <= 0) { return(true); } } return(false); }; return(queryPredicate); }
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"; Write(elem1.showElementWithTestType1 <int>()); 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.showElementWithTestType2 <string>()); WriteLine(); Write("\n\n"); }
public void dateTimeSearch(DateTime fromDate, DateTime toDate, DBEngine <string, DBElement <string, List <string> > > db) { if (toDate == default(DateTime)) { toDate = DateTime.Now; } Console.WriteLine("\nSearching key within timeStamp between '{0}' and '{1}'", fromDate, toDate); List <string> foundKeys = new List <string>(); IEnumerable <string> keys = db.Keys(); foreach (string key in keys) { DBElement <string, List <string> > elem = new DBElement <string, List <string> >(); db.getValue(key, out elem); if (elem.timeStamp <= toDate && elem.timeStamp > fromDate) { foundKeys.Add(key); } } foreach (string key1 in foundKeys) { Console.WriteLine("dateTime Key={0}", key1); } }
//----< write details of an Enumerable element to string >-------- public static string showEnumerableElement <Key, Data, T>(this DBElement <Key, Data> elem) where Data : IEnumerable <T> // constraint clause { StringBuilder accum = new StringBuilder(); accum.Append(elem.showMetaData()); if (elem.payload != null) { bool first = true; accum.Append(String.Format("\n payload:\n ")); foreach (var item in elem.payload) // won't compile without constraint clause { if (first) { accum.Append(String.Format("{0}", item)); first = false; } else { accum.Append(String.Format(", {0}", item)); } } } return(accum.ToString()); }
public void metaDataPattern(string pattern, DBEngine <string, DBElement <string, List <string> > > db) { Console.WriteLine("\nSearching key with a pattern='{0}' in the metadata", pattern); List <string> foundKeys = new List <string>(); IEnumerable <string> keys = db.Keys(); foreach (string key in keys) { DBElement <string, List <string> > elem = new DBElement <string, List <string> >(); db.getValue(key, out elem); if (elem.name.Contains(pattern)) { foundKeys.Add(key); } else if (elem.descr.Contains(pattern)) { foundKeys.Add(key); } else if (elem.timeStamp.ToString().Contains(pattern)) { foundKeys.Add(key); } } foreach (string key1 in foundKeys) { Console.WriteLine("Found Key={0}", key1); } }
static void Main(string[] args) { "Testing persist engine package".title(); DBEngine<string, DBElement<string, List<string>>> dbString = new DBEngine<string, DBElement<string, List<string>>>(); DBElement<string, List<String>> elemString = new DBElement<string, List<String>>(); elemString.name = "Element2"; elemString.descr = "testelement2"; elemString.timeStamp = DateTime.Now; elemString.children.AddRange(new List<string> { "SMA1", "Syracuse2", "NY3" }); elemString.payload = new List<string>(); elemString.payload.AddRange(new List<string> { "we", "rock", "the ", "world" }); //elem.showElement(); dbString.insert("Prohject2", elemString); DBElement<string, List<String>> elemString2 = new DBElement<string, List<String>>(); elemString2.name = "Element3"; elemString2.descr = "test element3"; elemString2.timeStamp = DateTime.Now; elemString2.children.AddRange(new List<string> { "SMA2", "Syracuse22", "NY33" }); elemString2.payload = new List<string>(); elemString2.payload.AddRange(new List<string> { "Thug", "Life" }); //elem.showElement(); dbString.insert("Thug3", elemString2); PersistEngine<string> test = new PersistEngine<string>(); test.createXML(dbString); }
static void Main(string[] args) { DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >(); DBElement <int, string> elem = new DBElement <int, string>(); //Populating DBEngine elem.name = "Element2"; //object db elem.descr = "test element2"; //for testing data int and string type. elem.timeStamp = DateTime.Now; elem.children.AddRange(new List <int> { }); elem.payload = "Varun"; db.insert(1, elem); DBElement <int, string> elem1 = new DBElement <int, string>(); //Populating DBEngine elem1.name = "Key/Value pair to be edited"; //object db elem1.descr = "test element3"; //for testing data int and string type. elem1.timeStamp = DateTime.Now; elem1.children.AddRange(new List <int> { 4, 5, 6 }); elem1.payload = "EDIT !"; db.insert(2, elem1); DBFactory <int, DBElement <int, string> > dff = new DBFactory <int, DBElement <int, string> >(db); dff.getValue(1, out elem1); Console.WriteLine(elem1.name); }
void TestR8() { "Demonstrating Requirement #8".title(); DBFactory <string, DBElement <string, List <string> > > dbFac; // immutable db object DBEngine <string, DBElement <string, List <string> > > dbImmut = new DBEngine <string, DBElement <string, List <string> > >(); List <string> fetchedKeys = new List <string>(); fetchedKeys = QE1.keyPattern(".*hu.*", dbString); foreach (string key in fetchedKeys) { DBElement <string, List <String> > elem = new DBElement <string, List <String> >(); dbString.getValue(key, out elem); dbImmut.insert(key, elem); } //dbImmut.showEnumerableDB(); dbFac = new DBFactory <string, DBElement <string, List <string> > >(dbImmut); // populating immutable db WriteLine("\nDisplaying the contents of the immutable database"); dbFac.showEnumerableDB(); WriteLine(); }
void TestR4() { WriteLine(); "Demonstrating Requirement #4".title(); DBElement <int, string> elem = new DBElement <int, string>(); //Populating DBEngine elem.name = "Element2"; //object db elem.descr = "test element2"; //for testing data int and string type. elem.timeStamp = DateTime.Now; elem.children.AddRange(new List <int> { }); elem.payload = "Varun"; db.insert(1, elem); DBElement <int, List <string> > elemPayload2 = new DBElement <int, List <string> >(); //Populating DBEngine elemPayload2.name = "Element5"; //object dbPay elemPayload2.descr = "test element5"; //for testing data int and list of string type. elemPayload2.timeStamp = DateTime.Now; elemPayload2.children.AddRange(new List <int> { 98, 22, 35 }); elemPayload2.payload = new List <string>(); elemPayload2.payload.AddRange(new List <string> { "we", "rock", "the", "world" }); dbPay.insert(2, elemPayload2); WriteLine(); WriteLine("\nUpdating Name of Key 1"); itemEdit.edit(1, "name", "updated", db); // editing name db.showDB(); WriteLine(); WriteLine("\nUpdating description of Key 1"); itemEdit.edit(1, "descr", "updated", dbPay); // editing description dbPay.showEnumerableDB(); WriteLine(); WriteLine("\nUpdating childern of Key 1"); List <int> child = new List <int> { 3, 2, 1 }; itemEdit.editChildern(1, "childern", child, db); // editing children db.showDB(); WriteLine(); WriteLine(); WriteLine("\nUpdating Payload of Key 'Thug3'"); List <string> payEdit = new List <string> { "Updated", "the", "payload !" }; itemEdit2.editPayload("Thug3", "payload", payEdit, dbString); // editing payload dbString.showEnumerableDB(); WriteLine(); }
public void processValueQuery(Key key, out DBElement <Key, Value> value) { value = default(DBElement <Key, Value>); if (db != null && db.Dictionary.Keys.Contains(key)) { db.getValue(key, out value); } }
public static void Main(string[] args) { "Testing Item Editor Package".title('='); Console.WriteLine(); DBEngine <int, DBElement <int, List <string> > > dbPay = new DBEngine <int, DBElement <int, List <string> > >(); DBElement <int, List <string> > elemPayload = new DBElement <int, List <string> >(); elemPayload.name = "Element4"; elemPayload.descr = "test element4"; elemPayload.timeStamp = DateTime.Now; elemPayload.children.AddRange(new List <int> { 1, 2, 3 }); elemPayload.payload = new List <string>(); elemPayload.payload.AddRange(new List <string> { "Project 2", " ", "demo", " ", "starts" }); //elem.showElement(); dbPay.insert(4, elemPayload); DBElement <int, List <string> > elemPayload2 = new DBElement <int, List <string> >(); elemPayload2.name = "Element5"; elemPayload2.descr = "test element5"; elemPayload2.timeStamp = DateTime.Now; elemPayload2.children.AddRange(new List <int> { 98, 22, 35 }); elemPayload2.payload = new List <string>(); elemPayload2.payload.AddRange(new List <string> { "we", "rock", "the", "world" }); //elem.showElement(); dbPay.insert(5, elemPayload2); dbPay.showEnumerableDB(); Console.WriteLine(); ItemEditor <int, string> itemEdit = new ItemEditor <int, string>(); itemEdit.edit(4, "name", "updated", dbPay); itemEdit.edit(4, "descr", "updated", dbPay); List <int> child = new List <int> { 3, 2, 1 }; itemEdit.editChildern(4, "childern", child, dbPay); List <string> payLoad = new List <string> { "Update", " ", "demo", " ", "starts" }; itemEdit.editPayload(4, "pay-load", payLoad, dbPay); dbPay.showEnumerableDB(); }
static void Main(string[] args) { "Testing DBElement Package".title('='); WriteLine(); Write("\n --- Test DBElement<int,string> ---"); WriteLine(); DBElement <int, string> elem1 = new DBElement <int, string>(); 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 = new List <int> { 1, 2, 7 }; elem3.payload = "X-Wing fighter in swamp - Oh oh!"; Write(elem3.showElement <int, string>()); WriteLine(); Write("\n --- Test DBElement<string,List<string>> ---"); 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" }; Write(newelem1.showElement <string, List <string>, string>()); WriteLine(); DBElement <string, List <string> > newerelem1 = new DBElement <string, List <string> >(); newerelem1.name = "newerelem1"; newerelem1.descr = "same stuff"; newerelem1.children.Add("first_key"); newerelem1.children.Add("second_key"); newerelem1.payload = new List <string> { "alpha", "beta", "gamma" }; newerelem1.payload.AddRange(new[] { "delta", "epsilon" }); Write(newerelem1.showElement <string, List <string>, string>()); WriteLine(); Write("\n\n"); }
// clone function will create clone of element before do any changes. public void clone() { dbElementCloned = new DBElement <Key, ListOfStrings>(); dbElementCloned.name = String.Copy(dbElement.name); dbElementCloned.descr = String.Copy(dbElement.descr); dbElementCloned.timeStamp = DateTime.Now; dbElementCloned.children = new List <Key>(); dbElementCloned.children.AddRange(dbElement.children); dbElementCloned.payload = dbElement.payload.clone() as ListOfStrings; }
/* * show DB factory data. */ public void showDBFactory() { foreach (Key key in dbStore.Keys) { Value value = dbStore[key]; DBElement<int, ListOfStrings> elem = value as DBElement<int, ListOfStrings>; Write("\n\n -- key = {0} --", key); elem.showElement(); } }
void TestR4() { "\n1) Editing metadata".title(); "\nBefore editing metadata for key 1".title(); db.showDB(); WriteLine(); "\nAfter editing metadata for key 1".title(); iEditor = new ItemEditor <int, DBElement <int, string> >(db); iEditor.editMetaData(1, "Sachin Tendulkar", "Cricket player"); //send the values to be edited to the editMetaData() function db.showDB(); WriteLine(); "\n2) Adding children".title(); "\nBefore adding relationship(children) for key 2".title(); db.showDB(); WriteLine(); "\nAfter adding relationship(children) for Key 2".title(); iEditor.addrelationships(2, new List <int> { 4, 5 }); //send a new list with children to be added to a key db.showDB(); WriteLine(); WriteLine(); "\n3) Deleting children".title(); "\nBefore deleting relationship(children) for key 2".title(); db.showDB(); WriteLine(); "\nAfter deleting relationship(children) to Key 2".title(); //send a new list with children to be deleted from a key iEditor.deleteRelationships(2, new List <int> { 4, 5 }); db.showDB(); WriteLine(); WriteLine(); "\n4) Replacing value instance".title(); DBElement <int, string> elem = new DBElement <int, string>(); //create a new element for replacing value elem.name = "Messi"; elem.payload = "Plays for Argentina"; elem.descr = "Football player"; elem.children.AddRange(new List <int> { 2 }); elem.timeStamp = DateTime.Now; "\nBefore replacing the value instance for key 3".title(); db.showDB(); WriteLine(); "\nAfter replacing the value instance for key 3".title(); iEditor.replaceValueInstance(3, elem); //send value to be replaced for a key db.showDB(); WriteLine(); }
//----< write simple db elements out to Console >------------------ public static void show <Key, Value, Data>(this DBEngine <Key, Value> db) { foreach (Key key in db.Keys()) { Value value; db.getValue(key, out value); DBElement <Key, Data> elem = value as DBElement <Key, Data>; Write("\n\n -- key = {0} --", key); Write(elem.showElement()); } }
//----< write details of element with simple Data to string >----- public static string showElement <Key, Data>(this DBElement <Key, Data> elem) { StringBuilder accum = new StringBuilder(); accum.Append(elem.showMetaData()); if (elem.payload != null) { accum.Append(String.Format("\n payload: {0}", elem.payload.ToString())); } return(accum.ToString()); }
//----< write simple db elements out to Console >------------------ public static void showDictionaryData <Key, Value, Data>(this Dictionary <Key, Value> db) { foreach (Key key in db.Keys) { Value value; value = db[key]; DBElement <int, List <string> > elem = value as DBElement <int, List <string> >; Write("\n\n -- key = {0} --", key); Write(elem.showElement()); } }
//----< write enumerable db elements out to Console >-------------- public static void showEnumerable <Key, Value, Data, T>(this DBEngine <Key, Value> db) where Data : IEnumerable <T> { foreach (Key key in db.Keys()) { Value value; db.getValue(key, out value); DBElement <Key, Data> elem = value as DBElement <Key, Data>; Write("\n\n -- key = {0} --", key); Write(elem.showEnumerableElement <Key, Data, T>()); } }
/* * Add record in xml file. * needs to provide input as key and value. */ public bool addRecord(Key key, DBElement <Key, Value> data) { if (!keyPresent(key)) { addRecordInXml(key, data); return(true); } else { return(false); } }
/* * Add record in xml file. * Input will be key and value pair. */ private void addRecordInXml(Key key, DBElement <Key, Value> record) { bool present = document.Descendants("elements").Any(); if (!present) { XElement element = new XElement("elements"); document.Root.Add(element); } // Add key-value pair under elements TAG. XElement keyElement = new XElement("key", new XAttribute("id", key.ToString())); XElement valueElement = new XElement("value"); XElement nameElement = new XElement("name", record.name); XElement timeElement = new XElement("time", record.timeStamp.ToString()); XElement descrElement = new XElement("desc", record.descr); XElement payLoadElement = new XElement("payload"); String payloadType = record.payload.GetType().ToString(); ListOfStrings payload = record.payload as ListOfStrings; if (payload != null) { foreach (var item in payload.theWrappedData) { XElement payLoadChildElement = new XElement("item", item.ToString()); payLoadElement.Add(payLoadChildElement); } } valueElement.Add(nameElement); valueElement.Add(timeElement); valueElement.Add(descrElement); valueElement.Add(payLoadElement); // add children in xml file. List <Key> listChildren = record.children; if (listChildren.Count > 0) { XElement children = new XElement("children"); foreach (var item in listChildren) { XElement xChildren = new XElement("item", item); children.Add(xChildren); } valueElement.Add(children); } keyElement.Add(valueElement); document.Element("noSqlDb").Element("elements").Add(keyElement); document.Save(fileName); }
// This function will edit time in item's metadata. New time will be provide in function argument. public bool editByTime(ref DBEngine <Key, DBElement <Key, ListOfStrings> > dbEngine, Key key, DateTime newTime) { if (dbEngine.Dictionary.Keys.Contains(key)) { dbElement = dbEngine.Dictionary[key]; clone(); dbElementCloned.timeStamp = newTime; editDictionary(ref dbEngine, key); return(true); } else { return(false); } }
// This function will edit payload details in metadata of item. public bool editPayloadByListOfString(ref DBEngine <Key, DBElement <Key, ListOfStrings> > dbEngine, Key key, List <string> payload) { if (dbEngine.Dictionary.Keys.Contains(key)) { dbElement = dbEngine.Dictionary[key]; clone(); dbElementCloned.payload.theWrappedData = payload; editDictionary(ref dbEngine, key); return(true); } else { return(false); } }
void testR2() { "Demonstrating Requirement #2".title(); DBElement <int, String> elem = new DBElement <int, string>(); elem.name = "text element"; elem.descr = "descr"; elem.timeStamp = DateTime.Now; elem.payload = "elem's payload"; elem.children.AddRange(new [] { 1, 2, 3 }); elem.showElement(); db.insert(1, elem); db.showDB(); WriteLine(); }