示例#1
0
        private void UpdateNode(NpgsqlConnection serverConnection, ScienceBaseNode data)
        {
            var ServerCommand = serverConnection.CreateCommand();

            using (ServerCommand)
            {
                var CommandText = string.Empty;

                if (data.RdbRowId < 0)
                {
                    CommandText = "insert into sciencebase (srcid, groupid, title, relation, haschildren, url, summary) values (@srcid, @groupid, @title, @relation, @haschildren, @url, @summary)";
                }
                else
                {
                    CommandText = "update sciencebase set @srcid, @groupid, @title, @relation, @haschildren, @url, @summary where id = @id";

                    var CurrentParameter = new NpgsqlParameter();
                    CurrentParameter.ParameterName = "@id";
                    CurrentParameter.Value         = data.RdbRowId;
                    CurrentParameter.NpgsqlDbType  = NpgsqlDbType.Bigint;
                    CurrentParameter.IsNullable    = false;

                    ServerCommand.Parameters.Add(CurrentParameter);
                }

                ServerCommand.CommandText = CommandText;

                AddParameters(ServerCommand, data);

                ServerCommand.ExecuteNonQuery();
            }

            return;
        }
示例#2
0
        public List <ScienceBaseNode> GetNodes()
        {
            var DataNodes = new List <ScienceBaseNode>();

            using (var ServerConnection = CreateConnection())
            {
                ServerConnection.Open();

                var ServerCommand = ServerConnection.CreateCommand();

                using (ServerCommand)
                {
                    ServerCommand.CommandText = "select * from sciencebase order by groupid, title, url";

                    var RowReader = ServerCommand.ExecuteReader();

                    using (RowReader)
                    {
                        while (RowReader.Read())
                        {
                            var CurrentNode = new ScienceBaseNode(0);

                            CurrentNode.Read(RowReader);

                            DataNodes.Add(CurrentNode);
                        }
                    }
                }
            }

            return(DataNodes);
        }
示例#3
0
        private static ScienceBaseNode CreateDataNode(List <ScienceBaseNode> dataNodes, int grpId)
        {
            var DataNode = new ScienceBaseNode(grpId);

            dataNodes.Add(DataNode);

            return(DataNode);
        }
示例#4
0
        private void AddParameters(NpgsqlCommand serverCommand, ScienceBaseNode data)
        {
            var CurrentParameter = new NpgsqlParameter();

            CurrentParameter.ParameterName = "@srcid";
            CurrentParameter.Value         = data.Id;
            CurrentParameter.NpgsqlDbType  = NpgsqlDbType.Varchar;
            CurrentParameter.Size          = 32;
            CurrentParameter.IsNullable    = true;

            serverCommand.Parameters.Add(CurrentParameter);

            CurrentParameter = new NpgsqlParameter();
            CurrentParameter.ParameterName = "@groupid";
            CurrentParameter.Value         = data.GroupId;
            CurrentParameter.NpgsqlDbType  = NpgsqlDbType.Integer;
            CurrentParameter.IsNullable    = false;

            serverCommand.Parameters.Add(CurrentParameter);

            CurrentParameter = new NpgsqlParameter();
            CurrentParameter.ParameterName = "@title";
            CurrentParameter.Value         = data.Title;
            CurrentParameter.NpgsqlDbType  = NpgsqlDbType.Varchar;
            CurrentParameter.Size          = 128;
            CurrentParameter.IsNullable    = true;

            serverCommand.Parameters.Add(CurrentParameter);

            CurrentParameter = new NpgsqlParameter();
            CurrentParameter.ParameterName = "@relation";
            CurrentParameter.Value         = data.Rel;
            CurrentParameter.NpgsqlDbType  = NpgsqlDbType.Varchar;
            CurrentParameter.Size          = 12;
            CurrentParameter.IsNullable    = true;

            serverCommand.Parameters.Add(CurrentParameter);

            CurrentParameter = new NpgsqlParameter();
            CurrentParameter.ParameterName = "@haschildren";
            CurrentParameter.Value         = data.HasChildren;
            CurrentParameter.NpgsqlDbType  = NpgsqlDbType.Boolean;
            CurrentParameter.IsNullable    = false;

            serverCommand.Parameters.Add(CurrentParameter);

            CurrentParameter = new NpgsqlParameter();
            CurrentParameter.ParameterName = "@url";
            CurrentParameter.Value         = data.Url;
            CurrentParameter.NpgsqlDbType  = NpgsqlDbType.Text;
            CurrentParameter.IsNullable    = true;

            serverCommand.Parameters.Add(CurrentParameter);

            CurrentParameter = new NpgsqlParameter();
            CurrentParameter.ParameterName = "@summary";
            CurrentParameter.Value         = data.Summary;
            CurrentParameter.NpgsqlDbType  = NpgsqlDbType.Text;
            CurrentParameter.IsNullable    = true;

            serverCommand.Parameters.Add(CurrentParameter);

            return;
        }
示例#5
0
        private void ExtractJSONStreamValues(List <ScienceBaseNode> dataNodes, Dictionary <string, object> values, ScienceBaseNode dataNode, int depth)
        {
            foreach (var Item in values)
            {
                if (Item.Value is Dictionary <string, object> )
                {
                    var NewDepth = (1 + depth);

                    ExtractJSONStreamValues(dataNodes, Item.Value as Dictionary <string, object>, CreateDataNode(dataNodes, NewDepth), NewDepth);
                }
                else if (Item.Value is object[])
                {
                    ExtractJSONStreamValues(dataNodes, Item.Value as object[], depth);
                }
                else
                {
                    dataNode.Read(depth, Item);
                }
            }

            return;
        }