예제 #1
0
        public void persistdb <Key, Value, Data>(DBEngine <Key, Value> db)
        {
            XDocument xml = new XDocument();

            xml.Declaration = new XDeclaration("1.0", "utf-8", "yes");
            XComment comment = new XComment("NoSQL Database");    //title for XML

            xml.Add(comment);
            XElement NoSQLelem = new XElement("NoSQLDB_ELEMENTS");
            XElement type      = new XElement("numbers", typeof(Key));
            XElement payload   = new XElement("name", typeof(Data));

            xml.Add(NoSQLelem);
            NoSQLelem.Add(type);
            NoSQLelem.Add(payload);
            foreach (Key k1 in db.Keys())
            {
                XElement tags = new XElement("open_close");
                XElement key  = new XElement("new_Key", k1);  //tag for new keys generated
                tags.Add(key);
                Value value1;
                db.getValue(k1, out value1);
                DBElement <Key, Data> element = value1 as DBElement <Key, Data>;
                WriteLine(element.showElement());
                XElement dbelement = persistdbelement <Key, Data>(element);
                tags.Add(dbelement);
                NoSQLelem.Add(tags);
                xml.Save("XML_FILE_PROJECT4.xml");                               //XML file name
            }
        }
    {                  // Function to perform addition of relationships
        public static bool addRelations <Key, Value, Data>(this DBEngine <Key, Value> dbedit, Key key1, Key key2)
        {
            Value val1, val2;
            bool  key1_present = dbedit.getValue(key1, out val1);

            // check if key1 is present
            if (key1_present)
            {
                bool key2_present = dbedit.getValue(key2, out val2);
                // check if key2 is present
                if (key2_present)
                {
                    DBElement <Key, Data> element = val1 as DBElement <Key, Data>;
                    element.children.Add(key1);
                }
            }
            return(true);
        }
예제 #3
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());
            }
        }
        // function to perform removal of relationships
        public static bool removeRelation <Key, Value, Data>(this DBEngine <Key, Value> dbedit, Key key1, Key key2)
        {
            Value value;

            if (dbedit.getValue(key1, out value))
            {
                DBElement <Key, Data> elem = value as DBElement <Key, Data>;
                if (elem.children.Contains(key2))
                {
                    elem.children.Remove(key2);
                }
            }
            return(true);
        }
        // Function to perform editing of name in metedata
        public static bool editName <Key, Value, Data>(this DBEngine <Key, Value> dbedit, Key key1, string new_name)
        {
            Value value;

            if (dbedit.getValue(key1, out value))
            {
                DBElement <Key, Data> elem = value as DBElement <Key, Data>;
                elem.name = new_name;
                return(true);
            }
            else
            {
                return(false);
            }
        }
        // function to edit instances
        public static bool editInstance <Key, Value, Data>(this DBEngine <Key, Value> dbedit, Key key1, Data new_instance)
        {
            Value value;

            if (dbedit.getValue(key1, out value))
            {
                DBElement <Key, Data> elem = value as DBElement <Key, Data>;
                elem.payload = new_instance;
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public Value queryvalue <Key, Value, Data>(DBEngine <Key, Value> db, Key key)
        {
            Value getqueryvalue;
            bool  key_present = db.getValue(key, out getqueryvalue);

            if (key_present)                                 // check if key is present
            {
                return(getqueryvalue);                       //if present return value
            }
            else
            {
                Console.WriteLine("key not present");        // else error message
            }
            return(default(Value));
        }
        public List <key> querychildren <key, value, Data>(DBEngine <key, value> db, key Key)
        {
            value getqueryvalue;
            bool  key_present          = db.getValue(Key, out getqueryvalue);    // check if key present
            DBElement <key, Data> temp = getqueryvalue as DBElement <key, Data>; // create new element to store value

            if (key_present)
            {
                return(temp.children);
            }
            else
            {
                Console.WriteLine("invalid key");                               // if key not present error message
            }
            return(null);
        }