Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 4
0
        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).");
        }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 8
0
        /*------------------------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);
            }
        }
Ejemplo n.º 9
0
 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;
 }
Ejemplo n.º 10
0
 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();
        }
Ejemplo n.º 14
0
        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---------------
        }
Ejemplo n.º 15
0
        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"); }
        }
Ejemplo n.º 16
0
        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");
        }
Ejemplo n.º 17
0
        //----< 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);
        }
Ejemplo n.º 18
0
        //<------------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);
            }
        }
Ejemplo n.º 19
0
        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");
        }
Ejemplo n.º 20
0
 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:");
     }
 }
Ejemplo n.º 21
0
        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);
            }
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
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";
            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");
        }
Ejemplo n.º 24
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");
        }
Ejemplo n.º 25
0
        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---------------------
        }
Ejemplo n.º 26
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");
        }
        /// <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);
        }
Ejemplo n.º 28
0
 //-------< 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);
     }
 }
Ejemplo n.º 29
0
        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);
        }
Ejemplo n.º 30
0
        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();
        }