static void Main(string[] args)
        {
            "Testing Scheduler Package".title('=');
            Console.WriteLine();

            DBEngine <int, DBElement <int, ListOfStrings> > dbEngineType1 = new DBEngine <int, DBElement <int, ListOfStrings> >();
            DBElement <int, ListOfStrings> elem = new DBElement <int, ListOfStrings>();

            "Testing function makeDataForDB() by creating metadata for Type1 = <string,ListOfStrings> and Type2 = <int,string>".title('-');
            elem.name      = "X";
            elem.descr     = "description";
            elem.timeStamp = DateTime.Now;
            elem.payload   = new ListOfStrings();
            elem.payload.theWrappedData = new List <string> {
                "payload1", "payload2"
            };
            dbEngineType1.insert(1, elem);

            "Scheduler is persisting data every one second. Press any key to exit".title('-');
            Scheduler schd = new Scheduler(1000, dbEngineType1);

            schd.schedular.Enabled = true;
            Console.ReadKey();
            Console.Write("\n\n");
        }
示例#2
0
        void TestR5()
        {
            "Demonstrating Requirement #5".title();
            DBElement <int, string> elem2 = new DBElement <int, string>();

            elem2.name      = "element#2";//add a new key/value pairs
            elem2.descr     = "test element#2";
            elem2.timeStamp = DateTime.Now;
            elem2.children.AddRange(new List <int> {
                16, 48
            });
            elem2.payload = "elem#2's payload";
            //elem2.showElement();
            db.insert(7, elem2);

            PersistToXML toxml = new PersistToXML(db);

            toxml.writeXML();

            Write("\n --- Test read XML file Start---");
            LoadXML fromxml = new LoadXML(db, @"C:\Users\lxinghe\Downloads\Project2Starter\ReadFile.xml");

            fromxml.WriteToDBEngine();

            Write("\n\n Show key/value pairs in data base:\n");
            db.showDB();

            Write("\n --- Test read XML file End---");
            WriteLine();
        }
        void TestR6()
        {
            int interval = 100;

            "Demonstrating Requirement #6".title();
            WriteLine("\n  Enabled Scheduler for {0} miliseconds", interval);
            Scheduler schedular = new Scheduler(interval, db1);

            schedular.schedular.Enabled = true;
            WriteLine();
            for (int i = 10; i < 20; i++)
            {
                DBElement <int, ListOfStrings> newelement = new DBElement <int, ListOfStrings>();
                newelement.name      = "newelement int-ListOfString : " + i.ToString();
                newelement.descr     = "Scheduler requirement demonstration : " + i.ToString();
                newelement.timeStamp = DateTime.Now;
                newelement.children.AddRange(new List <int> {
                    1 + i, 2 + i, 3 + i, 4 + i, 5 + i
                });
                newelement.payload = new ListOfStrings();
                newelement.payload.theWrappedData = new List <string> {
                    "CSE6814" + i.ToString(), "SMA4" + i.ToString(), "C#.net4" + i.ToString(), "AI4" + i.ToString()
                };
                if (db1.insert(i, newelement))
                {
                    WriteLine("  Added in in-memory database.");
                }
                else
                {
                    WriteLine("  Insert failed into in-memory database.");
                }
            }
            WriteLine();
            WriteLine("  Adding new elements in in-memory database and it will be persist to xml file automatically.");
        }
示例#4
0
        //----< write metadata to string >--------------------------------

        public static string showMetaData <Key, Data>(this DBElement <Key, Data> elem)
        {
            StringBuilder accum = new StringBuilder();

            accum.Append(String.Format("\n  name: {0}", elem.name));
            accum.Append(String.Format("\n  desc: {0}", elem.descr));
            accum.Append(String.Format("\n  desc: {0}", elem.timeStamp));
            if (elem.children.Count() > 0)
            {
                accum.Append(String.Format("\n  Children: "));
                bool first = true;
                foreach (Key key in elem.children)
                {
                    if (first)
                    {
                        accum.Append(String.Format("{0}", key.ToString()));
                        first = false;
                    }
                    else
                    {
                        accum.Append(String.Format(", {0}", key.ToString()));
                    }
                }
            }
            return(accum.ToString());
        }
示例#5
0
        void TestR3()//addition and deletion of key/value pairs
        {
            "Demonstrating Requirement #3".title();
            WriteLine();

            Write("\n --- Test addition of key/value pairs Start---");
            WriteLine();
            DBElement <int, string> elem1 = new DBElement <int, string>();

            elem1.name      = "element#1";//add a new key/value pairs
            elem1.descr     = "test element#1";
            elem1.timeStamp = DateTime.Now;
            elem1.children.AddRange(new List <int> {
                6, 8
            });
            elem1.payload = "elem#1's payload";
            elem1.showElement();
            db.insert(2, elem1);
            Write("\n\n Show key/value pairs in data base:\n");
            db.showDB();
            WriteLine();
            Write("\n --- Test addition of key/value pairs End---");
            WriteLine();

            Write("\n --- Test deletion of key/value pairs Start---");
            WriteLine();
            db.delete(1);//delete an existing key/value pairs
            Write("\n\n Show key/value pairs in data base:\n");
            db.showDB();
            WriteLine();
            db.delete(100);//try to delete a key/value pairs that doesn't exist
            Write("\n --- Test deletion of key/value pairs End---");
            WriteLine();
        }
        static void Main(string[] args)
        {
            "Testing ItemEditor Package".title('=');
            Console.WriteLine();
            DBEngine <int, DBElement <int, ListOfStrings> > db1 = new DBEngine <int, DBElement <int, ListOfStrings> >();
            ItemEditor <int, string> itemEditor = new ItemEditor <int, string>();

            "For key = 1, metadata before editing is: ".title('-');
            DBElement <int, ListOfStrings> elem1 = new DBElement <int, ListOfStrings>();

            elem1.name      = "1st Key/Value = Int/ListOfStrings";
            elem1.descr     = "This is first element of Int/ListOfStrings key value pair.";
            elem1.timeStamp = DateTime.Now;
            elem1.children.AddRange(new List <int> {
                100, 101, 102, 103, 104, 105
            });
            elem1.payload = new ListOfStrings();
            elem1.payload.theWrappedData = new List <string> {
                "CSE681", "SMA", "C#.net", "AI"
            };
            db1.insert(1, elem1);
            db1.showDB();

            Console.WriteLine("\n\n");
            "For key = 1, metadata after editing is: ".title('-');
            itemEditor.editByName(ref db1, 1, "NewX");
            itemEditor.editByDescr(ref db1, 1, "NewDescription");
            db1.showDB();
            Console.WriteLine("\n\n");
        }
        public Func <Key, bool> defineTimeStampQuery(DateTime startTime, DateTime?endTime = null)
        {
            Func <Key, bool> queryPredicate = (Key key) =>
            {
                if (!db.Keys().Contains(key))
                {
                    return(false);
                }
                else
                {
                    if (endTime == null)
                    {
                        endTime = DateTime.Now;
                    }
                    DBElement <Key, Value> value;
                    db.getValue(key, out value);
                    DBElement <Key, Value> elem = value as DBElement <Key, Value>;
                    int cond1 = DateTime.Compare(elem.timeStamp, startTime);
                    int cond2 = DateTime.Compare(elem.timeStamp, (DateTime)endTime);
                    if (cond1 >= 0 && cond2 <= 0)
                    {
                        return(true);
                    }
                }
                return(false);
            };

            return(queryPredicate);
        }
示例#8
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.showElementWithTestType1 <int>());
            WriteLine();

            Write("\n --- Test DBElement<string,List<string>> ---");
            DBElement <string, List <string> > newelem1 = new DBElement <string, List <string> >();

            newelem1.name     = "newelem1";
            newelem1.descr    = "test new type";
            newelem1.children = new List <string> {
                "Key1", "Key2"
            };
            newelem1.payload = new List <string> {
                "one", "two", "three"
            };
            Write(newelem1.showElementWithTestType2 <string>());
            WriteLine();

            Write("\n\n");
        }
示例#9
0
        public void dateTimeSearch(DateTime fromDate, DateTime toDate, DBEngine <string, DBElement <string, List <string> > > db)
        {
            if (toDate == default(DateTime))
            {
                toDate = DateTime.Now;
            }
            Console.WriteLine("\nSearching key within timeStamp between '{0}' and '{1}'", fromDate, toDate);
            List <string>        foundKeys = new List <string>();
            IEnumerable <string> keys      = db.Keys();

            foreach (string key in keys)
            {
                DBElement <string, List <string> > elem = new DBElement <string, List <string> >();

                db.getValue(key, out elem);

                if (elem.timeStamp <= toDate && elem.timeStamp > fromDate)
                {
                    foundKeys.Add(key);
                }
            }
            foreach (string key1 in foundKeys)
            {
                Console.WriteLine("dateTime Key={0}", key1);
            }
        }
示例#10
0
        //----< write details of an Enumerable element to string >--------

        public static string showEnumerableElement <Key, Data, T>(this DBElement <Key, Data> elem)
            where Data : IEnumerable <T> // constraint clause
        {
            StringBuilder accum = new StringBuilder();

            accum.Append(elem.showMetaData());
            if (elem.payload != null)
            {
                bool first = true;
                accum.Append(String.Format("\n  payload:\n  "));
                foreach (var item in elem.payload) // won't compile without constraint clause
                {
                    if (first)
                    {
                        accum.Append(String.Format("{0}", item));
                        first = false;
                    }
                    else
                    {
                        accum.Append(String.Format(", {0}", item));
                    }
                }
            }
            return(accum.ToString());
        }
示例#11
0
        public void metaDataPattern(string pattern, DBEngine <string, DBElement <string, List <string> > > db)
        {
            Console.WriteLine("\nSearching key with a pattern='{0}' in the metadata", pattern);
            List <string>        foundKeys = new List <string>();
            IEnumerable <string> keys      = db.Keys();

            foreach (string key in keys)
            {
                DBElement <string, List <string> > elem = new DBElement <string, List <string> >();
                db.getValue(key, out elem);
                if (elem.name.Contains(pattern))
                {
                    foundKeys.Add(key);
                }
                else if (elem.descr.Contains(pattern))
                {
                    foundKeys.Add(key);
                }
                else if (elem.timeStamp.ToString().Contains(pattern))
                {
                    foundKeys.Add(key);
                }
            }
            foreach (string key1 in foundKeys)
            {
                Console.WriteLine("Found Key={0}", key1);
            }
        }
示例#12
0
        static void Main(string[] args)
        {
            "Testing persist engine package".title();

            DBEngine<string, DBElement<string, List<string>>> dbString = new DBEngine<string, DBElement<string, List<string>>>();
            DBElement<string, List<String>> elemString = new DBElement<string, List<String>>();
            elemString.name = "Element2";
            elemString.descr = "testelement2";
            elemString.timeStamp = DateTime.Now;
            elemString.children.AddRange(new List<string> { "SMA1", "Syracuse2", "NY3" });
            elemString.payload = new List<string>();
            elemString.payload.AddRange(new List<string> { "we", "rock", "the ", "world" });

            //elem.showElement();
            dbString.insert("Prohject2", elemString);

            DBElement<string, List<String>> elemString2 = new DBElement<string, List<String>>();
            elemString2.name = "Element3";
            elemString2.descr = "test element3";
            elemString2.timeStamp = DateTime.Now;
            elemString2.children.AddRange(new List<string> { "SMA2", "Syracuse22", "NY33" });
            elemString2.payload = new List<string>();
            elemString2.payload.AddRange(new List<string> { "Thug", "Life" });

            //elem.showElement();
            dbString.insert("Thug3", elemString2);

            PersistEngine<string> test = new PersistEngine<string>();
            test.createXML(dbString);

        }
示例#13
0
        static void Main(string[] args)
        {
            DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >();
            DBElement <int, string> elem = new DBElement <int, string>();                            //Populating DBEngine

            elem.name      = "Element2";                                                             //object db
            elem.descr     = "test element2";                                                        //for testing data int and string type.
            elem.timeStamp = DateTime.Now;
            elem.children.AddRange(new List <int> {
            });
            elem.payload = "Varun";
            db.insert(1, elem);
            DBElement <int, string> elem1 = new DBElement <int, string>();                          //Populating DBEngine

            elem1.name      = "Key/Value pair to be edited";                                        //object db
            elem1.descr     = "test element3";                                                      //for testing data int and string type.
            elem1.timeStamp = DateTime.Now;
            elem1.children.AddRange(new List <int> {
                4, 5, 6
            });
            elem1.payload = "EDIT !";
            db.insert(2, elem1);
            DBFactory <int, DBElement <int, string> > dff = new DBFactory <int, DBElement <int, string> >(db);

            dff.getValue(1, out elem1);
            Console.WriteLine(elem1.name);
        }
示例#14
0
        void TestR8()
        {
            "Demonstrating Requirement #8".title();

            DBFactory <string, DBElement <string, List <string> > > dbFac;           // immutable db object
            DBEngine <string, DBElement <string, List <string> > >  dbImmut = new DBEngine <string, DBElement <string, List <string> > >();
            List <string> fetchedKeys = new List <string>();

            fetchedKeys = QE1.keyPattern(".*hu.*", dbString);


            foreach (string key in fetchedKeys)
            {
                DBElement <string, List <String> > elem = new DBElement <string, List <String> >();
                dbString.getValue(key, out elem);
                dbImmut.insert(key, elem);
            }
            //dbImmut.showEnumerableDB();
            dbFac = new DBFactory <string, DBElement <string, List <string> > >(dbImmut);    // populating immutable db

            WriteLine("\nDisplaying the contents of the immutable database");
            dbFac.showEnumerableDB();

            WriteLine();
        }
示例#15
0
        void TestR4()
        {
            WriteLine();
            "Demonstrating Requirement #4".title();

            DBElement <int, string> elem = new DBElement <int, string>();                            //Populating DBEngine

            elem.name      = "Element2";                                                             //object db
            elem.descr     = "test element2";                                                        //for testing data int and string type.
            elem.timeStamp = DateTime.Now;
            elem.children.AddRange(new List <int> {
            });
            elem.payload = "Varun";
            db.insert(1, elem);

            DBElement <int, List <string> > elemPayload2 = new DBElement <int, List <string> >();   //Populating DBEngine

            elemPayload2.name      = "Element5";                                                    //object dbPay
            elemPayload2.descr     = "test element5";                                               //for testing data int and list of string type.
            elemPayload2.timeStamp = DateTime.Now;
            elemPayload2.children.AddRange(new List <int> {
                98, 22, 35
            });
            elemPayload2.payload = new List <string>();
            elemPayload2.payload.AddRange(new List <string> {
                "we", "rock", "the", "world"
            });
            dbPay.insert(2, elemPayload2);

            WriteLine();
            WriteLine("\nUpdating Name of Key 1");
            itemEdit.edit(1, "name", "updated", db);           // editing name
            db.showDB();

            WriteLine();
            WriteLine("\nUpdating description of Key 1");
            itemEdit.edit(1, "descr", "updated", dbPay);        // editing description
            dbPay.showEnumerableDB();

            WriteLine();
            WriteLine("\nUpdating childern of Key 1");
            List <int> child = new List <int> {
                3, 2, 1
            };

            itemEdit.editChildern(1, "childern", child, db);    // editing children
            db.showDB();
            WriteLine();

            WriteLine();
            WriteLine("\nUpdating Payload of Key 'Thug3'");
            List <string> payEdit = new List <string> {
                "Updated", "the", "payload !"
            };

            itemEdit2.editPayload("Thug3", "payload", payEdit, dbString);               // editing payload
            dbString.showEnumerableDB();
            WriteLine();
        }
 public void processValueQuery(Key key, out DBElement <Key, Value> value)
 {
     value = default(DBElement <Key, Value>);
     if (db != null && db.Dictionary.Keys.Contains(key))
     {
         db.getValue(key, out value);
     }
 }
示例#17
0
        public static void Main(string[] args)
        {
            "Testing Item Editor Package".title('=');
            Console.WriteLine();
            DBEngine <int, DBElement <int, List <string> > > dbPay = new DBEngine <int, DBElement <int, List <string> > >();

            DBElement <int, List <string> > elemPayload = new DBElement <int, List <string> >();

            elemPayload.name      = "Element4";
            elemPayload.descr     = "test element4";
            elemPayload.timeStamp = DateTime.Now;
            elemPayload.children.AddRange(new List <int> {
                1, 2, 3
            });
            elemPayload.payload = new List <string>();
            elemPayload.payload.AddRange(new List <string> {
                "Project 2", " ", "demo", " ", "starts"
            });
            //elem.showElement();
            dbPay.insert(4, elemPayload);

            DBElement <int, List <string> > elemPayload2 = new DBElement <int, List <string> >();

            elemPayload2.name      = "Element5";
            elemPayload2.descr     = "test element5";
            elemPayload2.timeStamp = DateTime.Now;
            elemPayload2.children.AddRange(new List <int> {
                98, 22, 35
            });
            elemPayload2.payload = new List <string>();
            elemPayload2.payload.AddRange(new List <string> {
                "we", "rock", "the", "world"
            });
            //elem.showElement();
            dbPay.insert(5, elemPayload2);

            dbPay.showEnumerableDB();
            Console.WriteLine();

            ItemEditor <int, string> itemEdit = new ItemEditor <int, string>();

            itemEdit.edit(4, "name", "updated", dbPay);
            itemEdit.edit(4, "descr", "updated", dbPay);
            List <int> child = new List <int> {
                3, 2, 1
            };

            itemEdit.editChildern(4, "childern", child, dbPay);

            List <string> payLoad = new List <string> {
                "Update", " ", "demo", " ", "starts"
            };

            itemEdit.editPayload(4, "pay-load", payLoad, dbPay);

            dbPay.showEnumerableDB();
        }
示例#18
0
        static void Main(string[] args)
        {
            "Testing DBElement Package".title('=');
            WriteLine();

            Write("\n --- Test DBElement<int,string> ---");
            WriteLine();

            DBElement <int, string> elem1 = new DBElement <int, string>();

            Write(elem1.showElement <int, string>());
            WriteLine();

            DBElement <int, string> elem2 = new DBElement <int, string>("Darth Vader", "Evil Overlord");

            elem2.payload = "The Empire strikes back!";
            Write(elem2.showElement <int, string>());
            WriteLine();

            var elem3 = new DBElement <int, string>("Luke Skywalker", "Young HotShot");

            elem3.children = new List <int> {
                1, 2, 7
            };
            elem3.payload = "X-Wing fighter in swamp - Oh oh!";
            Write(elem3.showElement <int, string>());
            WriteLine();

            Write("\n --- Test DBElement<string,List<string>> ---");
            WriteLine();

            DBElement <string, List <string> > newelem1 = new DBElement <string, List <string> >();

            newelem1.name    = "newelem1";
            newelem1.descr   = "test new type";
            newelem1.payload = new List <string> {
                "one", "two", "three"
            };
            Write(newelem1.showElement <string, List <string>, string>());
            WriteLine();

            DBElement <string, List <string> > newerelem1 = new DBElement <string, List <string> >();

            newerelem1.name  = "newerelem1";
            newerelem1.descr = "same stuff";
            newerelem1.children.Add("first_key");
            newerelem1.children.Add("second_key");
            newerelem1.payload = new List <string> {
                "alpha", "beta", "gamma"
            };
            newerelem1.payload.AddRange(new[] { "delta", "epsilon" });
            Write(newerelem1.showElement <string, List <string>, string>());
            WriteLine();

            Write("\n\n");
        }
 // clone function will create clone of element before do any changes.
 public void clone()
 {
     dbElementCloned           = new DBElement <Key, ListOfStrings>();
     dbElementCloned.name      = String.Copy(dbElement.name);
     dbElementCloned.descr     = String.Copy(dbElement.descr);
     dbElementCloned.timeStamp = DateTime.Now;
     dbElementCloned.children  = new List <Key>();
     dbElementCloned.children.AddRange(dbElement.children);
     dbElementCloned.payload = dbElement.payload.clone() as ListOfStrings;
 }
示例#20
0
 /*
  * show DB factory data.
  */
 public void showDBFactory()
 {
     foreach (Key key in dbStore.Keys)
     {
         Value value = dbStore[key];
         DBElement<int, ListOfStrings> elem = value as DBElement<int, ListOfStrings>;
         Write("\n\n  -- key = {0} --", key);
         elem.showElement();
     }
 }
示例#21
0
        void TestR4()
        {
            "\n1) Editing metadata".title();
            "\nBefore editing metadata for key 1".title();
            db.showDB();
            WriteLine();
            "\nAfter editing metadata for key 1".title();
            iEditor = new ItemEditor <int, DBElement <int, string> >(db);
            iEditor.editMetaData(1, "Sachin Tendulkar", "Cricket player");                     //send the values to be edited to the editMetaData() function
            db.showDB();
            WriteLine();

            "\n2) Adding children".title();
            "\nBefore adding relationship(children) for key 2".title();
            db.showDB();
            WriteLine();
            "\nAfter adding relationship(children) for Key 2".title();
            iEditor.addrelationships(2, new List <int> {
                4, 5
            });                                                                                 //send a new list with children to be added to a key
            db.showDB();
            WriteLine();
            WriteLine();

            "\n3) Deleting children".title();
            "\nBefore deleting relationship(children) for key 2".title();
            db.showDB();
            WriteLine();
            "\nAfter deleting relationship(children) to Key 2".title();                           //send a new list with children to be deleted from a key
            iEditor.deleteRelationships(2, new List <int> {
                4, 5
            });
            db.showDB();
            WriteLine();
            WriteLine();

            "\n4) Replacing value instance".title();
            DBElement <int, string> elem = new DBElement <int, string>();                         //create a new element for replacing value

            elem.name    = "Messi";
            elem.payload = "Plays for Argentina";
            elem.descr   = "Football player";
            elem.children.AddRange(new List <int> {
                2
            });
            elem.timeStamp = DateTime.Now;

            "\nBefore replacing the value instance for key 3".title();
            db.showDB();
            WriteLine();
            "\nAfter replacing the value instance for key 3".title();
            iEditor.replaceValueInstance(3, elem);                                              //send value to be replaced for a key
            db.showDB();
            WriteLine();
        }
示例#22
0
        //----< write simple db elements out to Console >------------------

        public static void show <Key, Value, Data>(this DBEngine <Key, Value> db)
        {
            foreach (Key key in db.Keys())
            {
                Value value;
                db.getValue(key, out value);
                DBElement <Key, Data> elem = value as DBElement <Key, Data>;
                Write("\n\n  -- key = {0} --", key);
                Write(elem.showElement());
            }
        }
示例#23
0
        //----< write details of element with simple Data to string >-----

        public static string showElement <Key, Data>(this DBElement <Key, Data> elem)
        {
            StringBuilder accum = new StringBuilder();

            accum.Append(elem.showMetaData());
            if (elem.payload != null)
            {
                accum.Append(String.Format("\n  payload: {0}", elem.payload.ToString()));
            }
            return(accum.ToString());
        }
        //----< write simple db elements out to Console >------------------

        public static void showDictionaryData <Key, Value, Data>(this Dictionary <Key, Value> db)
        {
            foreach (Key key in db.Keys)
            {
                Value value;
                value = db[key];
                DBElement <int, List <string> > elem = value as DBElement <int, List <string> >;
                Write("\n\n  -- key = {0} --", key);
                Write(elem.showElement());
            }
        }
示例#25
0
 //----< write enumerable db elements out to Console >--------------
 public static void showEnumerable <Key, Value, Data, T>(this DBEngine <Key, Value> db)
     where Data : IEnumerable <T>
 {
     foreach (Key key in db.Keys())
     {
         Value value;
         db.getValue(key, out value);
         DBElement <Key, Data> elem = value as DBElement <Key, Data>;
         Write("\n\n  -- key = {0} --", key);
         Write(elem.showEnumerableElement <Key, Data, T>());
     }
 }
 /*
  * Add record in xml file.
  * needs to provide input as key and value.
  */
 public bool addRecord(Key key, DBElement <Key, Value> data)
 {
     if (!keyPresent(key))
     {
         addRecordInXml(key, data);
         return(true);
     }
     else
     {
         return(false);
     }
 }
        /*
         * Add record in xml file.
         * Input will be key and value pair.
         */
        private void addRecordInXml(Key key, DBElement <Key, Value> record)
        {
            bool present = document.Descendants("elements").Any();

            if (!present)
            {
                XElement element = new XElement("elements");
                document.Root.Add(element);
            }
            // Add key-value pair under elements TAG.
            XElement      keyElement     = new XElement("key", new XAttribute("id", key.ToString()));
            XElement      valueElement   = new XElement("value");
            XElement      nameElement    = new XElement("name", record.name);
            XElement      timeElement    = new XElement("time", record.timeStamp.ToString());
            XElement      descrElement   = new XElement("desc", record.descr);
            XElement      payLoadElement = new XElement("payload");
            String        payloadType    = record.payload.GetType().ToString();
            ListOfStrings payload        = record.payload as ListOfStrings;

            if (payload != null)
            {
                foreach (var item in payload.theWrappedData)
                {
                    XElement payLoadChildElement = new XElement("item", item.ToString());
                    payLoadElement.Add(payLoadChildElement);
                }
            }
            valueElement.Add(nameElement);
            valueElement.Add(timeElement);
            valueElement.Add(descrElement);
            valueElement.Add(payLoadElement);


            // add children in xml file.
            List <Key> listChildren = record.children;

            if (listChildren.Count > 0)
            {
                XElement children = new XElement("children");
                foreach (var item in listChildren)
                {
                    XElement xChildren = new XElement("item", item);
                    children.Add(xChildren);
                }
                valueElement.Add(children);
            }

            keyElement.Add(valueElement);

            document.Element("noSqlDb").Element("elements").Add(keyElement);
            document.Save(fileName);
        }
 // This function will edit time in item's metadata. New time will be provide in function argument.
 public bool editByTime(ref DBEngine <Key, DBElement <Key, ListOfStrings> > dbEngine, Key key, DateTime newTime)
 {
     if (dbEngine.Dictionary.Keys.Contains(key))
     {
         dbElement = dbEngine.Dictionary[key];
         clone();
         dbElementCloned.timeStamp = newTime;
         editDictionary(ref dbEngine, key);
         return(true);
     }
     else
     {
         return(false);
     }
 }
 // This function will edit payload details in metadata of item.
 public bool editPayloadByListOfString(ref DBEngine <Key, DBElement <Key, ListOfStrings> > dbEngine, Key key, List <string> payload)
 {
     if (dbEngine.Dictionary.Keys.Contains(key))
     {
         dbElement = dbEngine.Dictionary[key];
         clone();
         dbElementCloned.payload.theWrappedData = payload;
         editDictionary(ref dbEngine, key);
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#30
0
        void testR2()
        {
            "Demonstrating Requirement #2".title();
            DBElement <int, String> elem = new DBElement <int, string>();

            elem.name      = "text element";
            elem.descr     = "descr";
            elem.timeStamp = DateTime.Now;
            elem.payload   = "elem's payload";
            elem.children.AddRange(new [] { 1, 2, 3 });
            elem.showElement();
            db.insert(1, elem);
            db.showDB();
            WriteLine();
        }