//----< Augument xml file db contents to existing collection type db>------------------- public static void augument_db <Key, Value, Data, T>(this DBEngine <Key, Value> db, string fileName) where Data : List <T> { try { XDocument newDoc = null; newDoc = XDocument.Load(fileName); WriteLine("\n\nInput XML\n"); WriteLine(newDoc.ToString()); XElement keyElement = newDoc.Root.Element("keytype"); XElement payloadElement = newDoc.Root.Element("payloadtype"); String keyType = keyElement.Value; String payLoad = payloadElement.Value; // check the key-type if (typeof(Key).ToString() == keyType && typeof(Data).ToString() == payLoad) { IEnumerable <XElement> elements = newDoc.Root.Elements("record"); foreach (XElement item in elements) //Extract each record { string KeyStringval = item.Element("key").Value; Key key = (Key)Convert.ChangeType(KeyStringval, typeof(Key)); DBElement <Key, Data> dbElement = new DBElement <Key, Data>(); XElement myelement = item.Element("element"); dbElement.name = myelement.Element("name").Value; dbElement.descr = myelement.Element("descr").Value; dbElement.timeStamp = DateTime.Now; IEnumerable <XElement> childrensElements = myelement.Elements("children").Elements("key"); foreach (XElement child in childrensElements) { Key childKey = (Key)Convert.ChangeType(child.Value, typeof(Key)); dbElement.children.AddRange(new[] { childKey }); } IEnumerable <XElement> payloadElements = myelement.Elements("payload").Elements("item"); List <T> payloadlist = new List <T>(); foreach (XElement child in payloadElements) { T payLoadKey = (T)Convert.ChangeType(child.Value, typeof(T)); payloadlist.Add(payLoadKey); } dbElement.payload = payloadlist as Data; Value valueType = (Value)Convert.ChangeType(dbElement, typeof(Value)); db.insert(key, valueType); } } else { Console.WriteLine("Not matching db"); } } catch (Exception) { Console.WriteLine("File Not Found to Read"); } }
//----< add key value pair info for primitive type db >------------------------------------- public bool addKeyValyePair <Key, Data>(DBEngine <Key, DBElement <Key, Data> > dbType2, DBElement <Key, Data> dbElem, Key keyVal) { bool res = dbType2.insert(keyVal, dbElem); if (res) { dbType2.numberOfWrties++; if (dbType2.numberOfWrties >= dbType2.max_writes) { dbType2.numberOfWrties = 0; trigger_primitive_storage <Key, Data>(dbType2); } } return(res); }
//----< add key value pair info for collection type db >------------------------------------- public bool addKeyValyePair <Key, Data, T>(DBEngine <Key, DBElement <Key, Data> > dbType2, DBElement <Key, Data> dbElem, Key keyVal) where Data : IEnumerable <T> { bool res = dbType2.insert(keyVal, dbElem); if (res) { dbType2.numberOfWrties++; if (dbType2.numberOfWrties >= dbType2.max_writes) { dbType2.numberOfWrties = 0; trigger_collection_storage <Key, Data, T>(dbType2); } } return(res); }
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.showElement <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"); }
static void Main(string[] args) { "Demonstrating Persist Engine".title('='); DBEngine <int, DBElement <int, string> > dbType1 = new DBEngine <int, DBElement <int, string> >(); DBEngine <string, DBElement <string, List <string> > > dbType2 = new DBEngine <string, DBElement <string, List <string> > >(); //Demonstrating primitive type DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.name = "Jurassic World"; elem1.descr = "Story on escape from giant creatures"; elem1.timeStamp = DateTime.Now; elem1.payload = "A giant creature attacks the park and becomes a killing machine"; dbType1.insert(DBElementExtensions.generate_int_key(), elem1); DBElement <int, string> elem2 = new DBElement <int, string>(); elem2.name = "Cast Away"; elem2.descr = "Story of surviving a crash landing on a deserted island."; elem2.timeStamp = DateTime.Now; elem2.children.AddRange(new List <int> { 4, 5 }); elem2.payload = "Directed by Robert Zemeckis and written by Willian Broyles Jr."; dbType1.insert(DBElementExtensions.generate_int_key(), elem2); dbType1.showDB(); //Demostrating IEnumberable Type DBElement <string, List <string> > newerelem1 = new DBElement <string, List <string> >(); newerelem1.name = "Movie Name - The Good the Bad and the Ugly"; newerelem1.descr = "A bounty hunting scam joins two men in an uneasy alliance "; newerelem1.payload = new List <string> { "Clint Eastwood", " Eli Wallach", "Lee Van Cleef" }; String key = "The Good, the Bad and the Ugly"; dbType2.insert(key, newerelem1); DBElement <string, List <string> > newerelem2 = new DBElement <string, List <string> >(); newerelem2.name = "Movie Name - Django Unchained"; newerelem2.descr = "With the help of a German hunter, a freed slave sets to rescue"; newerelem2.children.AddRange(new[] { key, "Life Is Beautiful" }); newerelem2.payload = new List <string> { "Jamie Foxx", "Christoph Waltz", "Leonardo DiCaprio" }; newerelem2.payload.Add("Quentin Tarantino"); String key1 = "Django Unchained"; dbType2.insert(key1, newerelem2); dbType2.showEnumerableDB(); string xmlFile1 = "nosqdldb_primitive.xml"; dbType1.persist_db <int, DBElement <int, string>, string>(xmlFile1); WriteLine("\nSuccesfully persisted dbengine contents to xml file :" + xmlFile1); string xmlFile2 = "nosqdldb.xml"; dbType2.persist_db <string, DBElement <string, List <string> >, List <string>, string>(xmlFile2); WriteLine("\nSuccesfully persisted dbengine contents to xml file : " + xmlFile2); string xmlFile3 = "read_nosqldb_primitive.xml"; WriteLine("\n\n Before Augumenting DB from xml file : " + xmlFile3); dbType1.showDB(); dbType1.augument_db <int, DBElement <int, string>, string>(xmlFile3); WriteLine("\n\n After Augumenting DB from xml file : " + xmlFile3); dbType1.showDB(); string xmlFile4 = "read_nosqdldb.xml"; WriteLine("\n\n Before Augumenting DB from xml file : " + xmlFile4); dbType2.showEnumerableDB(); dbType2.augument_db <string, DBElement <string, List <string> >, List <string>, string>(xmlFile4); WriteLine("\n\n After Augumenting DB from xml file : " + xmlFile4); dbType2.showEnumerableDB(); DBEngine <int, DBElement <int, string> > dbType1New = new DBEngine <int, DBElement <int, string> >(); DBEngine <string, DBElement <string, List <string> > > dbType2New = new DBEngine <string, DBElement <string, List <string> > >(); string xmlFile5 = "read_nosqldb_primitive.xml"; WriteLine("\n\n Before Restoring DB from xml file : " + xmlFile5); dbType1New.showDB(); dbType1New.augument_db <int, DBElement <int, string>, string>(xmlFile5); WriteLine("\n\n After Restoring DB from xml file : " + xmlFile5); dbType1New.showDB(); string xmlFile6 = "read_nosqdldb.xml"; WriteLine("\n\n Before Restoring DB from xml file : " + xmlFile6); dbType2New.showEnumerableDB(); dbType2New.augument_db <string, DBElement <string, List <string> >, List <string>, string>(xmlFile6); WriteLine("\n\n After Restoring DB from xml file : " + xmlFile6); dbType2New.showEnumerableDB(); }
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"); }