Esempio n. 1
0
 //----< 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");
     }
 }
Esempio n. 2
0
        //----< 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);
        }
Esempio n. 3
0
        //----< 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);
        }
Esempio n. 4
0
        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");
        }
Esempio n. 5
0
        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");
        }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
        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");
        }