Exemplo n.º 1
0
        /// <summary>
        ///     Returns a list of regions within the specified ranges
        /// </summary>
        /// <param name="xmin">minimum X coordinate</param>
        /// <param name="ymin">minimum Y coordinate</param>
        /// <param name="xmax">maximum X coordinate</param>
        /// <param name="ymax">maximum Y coordinate</param>
        /// <returns>null</returns>
        /// <remarks>always return null</remarks>
        override public RegionProfileData[] GetProfilesInRange(uint xmin, uint ymin, uint xmax, uint ymax)
        {
            using (AutoClosingSqlCommand command = database.Query("SELECT * FROM regions WHERE locX >= @xmin AND locX <= @xmax AND locY >= @ymin AND locY <= @ymax"))
            {
                command.Parameters.Add(database.CreateParameter("xmin", xmin));
                command.Parameters.Add(database.CreateParameter("ymin", ymin));
                command.Parameters.Add(database.CreateParameter("xmax", xmax));
                command.Parameters.Add(database.CreateParameter("ymax", ymax));

                List <RegionProfileData> rows = new List <RegionProfileData>();

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        rows.Add(ReadSimRow(reader));
                    }
                }

                if (rows.Count > 0)
                {
                    return(rows.ToArray());
                }
            }

            m_log.Info("[GRID DB] : Found no regions within range.");
            return(null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Update asset in m_database
        /// </summary>
        /// <param name="asset">the asset</param>
        override public void UpdateAsset(AssetBase asset)
        {
            string sql = @"UPDATE assets set id = @id, name = @name, description = @description, assetType = @assetType,
                            local = @local, temporary = @temporary, data = @data
                           WHERE id = @keyId;";

            using (AutoClosingSqlCommand command = m_database.Query(sql))
            {
                command.Parameters.Add(m_database.CreateParameter("id", asset.FullID));
                command.Parameters.Add(m_database.CreateParameter("name", asset.Name));
                command.Parameters.Add(m_database.CreateParameter("description", asset.Description));
                command.Parameters.Add(m_database.CreateParameter("assetType", asset.Type));
                command.Parameters.Add(m_database.CreateParameter("local", asset.Local));
                command.Parameters.Add(m_database.CreateParameter("temporary", asset.Temporary));
                command.Parameters.Add(m_database.CreateParameter("data", asset.Data));
                command.Parameters.Add(m_database.CreateParameter("@keyId", asset.FullID));

                try
                {
                    command.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    m_log.Error(e.ToString());
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Saves a log item to the database
        /// </summary>
        /// <param name="serverDaemon">The daemon triggering the event</param>
        /// <param name="target">The target of the action (region / agent UUID, etc)</param>
        /// <param name="methodCall">The method call where the problem occured</param>
        /// <param name="arguments">The arguments passed to the method</param>
        /// <param name="priority">How critical is this?</param>
        /// <param name="logMessage">The message to log</param>
        public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage)
        {
            string sql = "INSERT INTO logs ([target], [server], [method], [arguments], [priority], [message]) VALUES ";

            sql += "(@target, @server, @method, @arguments, @priority, @message);";

            using (AutoClosingSqlCommand command = database.Query(sql))
            {
                command.Parameters.Add(database.CreateParameter("server", serverDaemon));
                command.Parameters.Add(database.CreateParameter("target", target));
                command.Parameters.Add(database.CreateParameter("method", methodCall));
                command.Parameters.Add(database.CreateParameter("arguments", arguments));
                command.Parameters.Add(database.CreateParameter("priority", priority.ToString()));
                command.Parameters.Add(database.CreateParameter("message", logMessage));

                try
                {
                    command.ExecuteNonQuery();
                }

                catch (Exception e)
                {
                    //Are we not in a loop here
                    m_log.Error("[LOG DB] Error logging : " + e.Message);
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Stores the estate settings.
        /// </summary>
        /// <param name="es">estate settings</param>
        public void StoreEstateSettings(EstateSettings es)
        {
            List <string> names = new List <string>(FieldList);

            names.Remove("EstateID");

            string sql = string.Format("UPDATE estate_settings SET ");

            foreach (string name in names)
            {
                sql += name + " = @" + name + ", ";
            }
            sql  = sql.Remove(sql.LastIndexOf(","));
            sql += " WHERE EstateID = @EstateID";

            using (AutoClosingSqlCommand cmd = _Database.Query(sql))
            {
                foreach (string name in names)
                {
                    cmd.Parameters.Add(_Database.CreateParameter("@" + name, _FieldMap[name].GetValue(es)));
                }

                cmd.Parameters.Add(_Database.CreateParameter("@EstateID", es.EstateID));
                cmd.ExecuteNonQuery();
            }

            SaveBanList(es);
            SaveUUIDList(es.EstateID, "estate_managers", es.EstateManagers);
            SaveUUIDList(es.EstateID, "estate_users", es.EstateAccess);
            SaveUUIDList(es.EstateID, "estate_groups", es.EstateGroups);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Create asset in m_database
        /// </summary>
        /// <param name="asset">the asset</param>
        override public void CreateAsset(AssetBase asset)
        {
            if (ExistsAsset(asset.FullID))
            {
                return;
            }
            string sql = @"INSERT INTO assets
                            ([id], [name], [description], [assetType], [local], 
                             [temporary], [create_time], [access_time], [data])
                           VALUES
                            (@id, @name, @description, @assetType, @local, 
                             @temporary, @create_time, @access_time, @data)";

            using (AutoClosingSqlCommand command = m_database.Query(sql))
            {
                int now = (int)((System.DateTime.Now.Ticks - m_ticksToEpoch) / 10000000);
                command.Parameters.Add(m_database.CreateParameter("id", asset.FullID));
                command.Parameters.Add(m_database.CreateParameter("name", asset.Name));
                command.Parameters.Add(m_database.CreateParameter("description", asset.Description));
                command.Parameters.Add(m_database.CreateParameter("assetType", asset.Type));
                command.Parameters.Add(m_database.CreateParameter("local", asset.Local));
                command.Parameters.Add(m_database.CreateParameter("temporary", asset.Temporary));
                command.Parameters.Add(m_database.CreateParameter("access_time", now));
                command.Parameters.Add(m_database.CreateParameter("create_time", now));
                command.Parameters.Add(m_database.CreateParameter("data", asset.Data));

                command.ExecuteNonQuery();
            }
        }
Exemplo n.º 6
0
        private void SaveUUIDList(uint estateID, string table, UUID[] data)
        {
            //Delete first
            string sql = string.Format("delete from {0} where EstateID = @EstateID", table);

            using (AutoClosingSqlCommand cmd = _Database.Query(sql))
            {
                cmd.Parameters.Add(_Database.CreateParameter("@EstateID", estateID));
                cmd.ExecuteNonQuery();
            }

            sql = string.Format("insert into {0} (EstateID, uuid) values ( @EstateID, @uuid )", table);
            using (AutoClosingSqlCommand cmd = _Database.Query(sql))
            {
                cmd.Parameters.Add(_Database.CreateParameter("@EstateID", estateID));

                bool createParamOnce = true;

                foreach (UUID uuid in data)
                {
                    if (createParamOnce)
                    {
                        cmd.Parameters.Add(_Database.CreateParameter("@uuid", uuid));
                        createParamOnce = false;
                    }
                    else
                    {
                        cmd.Parameters["@uuid"].Value = uuid.Guid; //.ToString(); //TODO check if this works
                    }
                    cmd.ExecuteNonQuery();
                }
            }
        }
Exemplo n.º 7
0
        private void LoadBanList(EstateSettings es)
        {
            es.ClearBans();

            string sql = "select bannedUUID from estateban where EstateID = @EstateID";

            using (AutoClosingSqlCommand cmd = _Database.Query(sql))
            {
                SqlParameter idParameter = new SqlParameter("@EstateID", SqlDbType.Int);
                idParameter.Value = es.EstateID;
                cmd.Parameters.Add(idParameter);

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        EstateBan eb = new EstateBan();

                        eb.BannedUserID      = new UUID((Guid)reader["bannedUUID"]); //uuid;
                        eb.BannedHostAddress = "0.0.0.0";
                        eb.BannedHostIPMask  = "0.0.0.0";
                        es.AddBan(eb);
                    }
                }
            }
        }
        /// <summary>
        /// Delete an inventory folder
        /// </summary>
        /// <param name="folderID">Id of folder to delete</param>
        public void deleteInventoryFolder(UUID folderID)
        {
            using (SqlConnection connection = database.DatabaseConnection())
            {
                List <InventoryFolderBase> subFolders;
                using (SqlCommand command = new SqlCommand("SELECT * FROM inventoryfolders WHERE parentFolderID = @parentID", connection))
                {
                    command.Parameters.Add(database.CreateParameter("@parentID", UUID.Zero));

                    AutoClosingSqlCommand autoCommand = new AutoClosingSqlCommand(command);

                    subFolders = getFolderHierarchy(folderID, autoCommand);
                }

                //Delete all sub-folders
                foreach (InventoryFolderBase f in subFolders)
                {
                    DeleteOneFolder(f.ID, connection);
                    DeleteItemsInFolder(f.ID, connection);
                }

                //Delete the actual row
                DeleteOneFolder(folderID, connection);
                DeleteItemsInFolder(folderID, connection);

                connection.Close();
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Returns a list of AssetMetadata objects. The list is a subset of
        /// the entire data set offset by <paramref name="start" /> containing
        /// <paramref name="count" /> elements.
        /// </summary>
        /// <param name="start">The number of results to discard from the total data set.</param>
        /// <param name="count">The number of rows the returned list should contain.</param>
        /// <returns>A list of AssetMetadata objects.</returns>
        public override List <AssetMetadata> FetchAssetMetadataSet(int start, int count)
        {
            List <AssetMetadata> retList = new List <AssetMetadata>(count);
            string sql = @"SELECT (name,description,assetType,temporary,id), Row = ROW_NUMBER() 
                            OVER (ORDER BY (some column to order by)) 
                            WHERE Row >= @Start AND Row < @Start + @Count";

            using (AutoClosingSqlCommand command = m_database.Query(sql))
            {
                command.Parameters.Add(m_database.CreateParameter("start", start));
                command.Parameters.Add(m_database.CreateParameter("count", count));

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        AssetMetadata metadata = new AssetMetadata();
                        metadata.FullID      = new UUID((Guid)reader["id"]);
                        metadata.Name        = (string)reader["name"];
                        metadata.Description = (string)reader["description"];
                        metadata.Type        = Convert.ToSByte(reader["assetType"]);
                        metadata.Temporary   = Convert.ToBoolean(reader["temporary"]);
                    }
                }
            }

            return(retList);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Updates an inventory folder
        /// </summary>
        /// <param name="folder">Folder to update</param>
        public void updateInventoryFolder(InventoryFolderBase folder)
        {
            string sql = @"UPDATE inventoryfolders SET folderID = @folderID, 
                                                       agentID = @agentID, 
                                                       parentFolderID = @parentFolderID,
                                                       folderName = @folderName,
                                                       type = @type,
                                                       version = @version 
                           WHERE folderID = @keyFolderID";

            using (AutoClosingSqlCommand command = database.Query(sql))
            {
                command.Parameters.Add(database.CreateParameter("folderID", folder.ID));
                command.Parameters.Add(database.CreateParameter("agentID", folder.Owner));
                command.Parameters.Add(database.CreateParameter("parentFolderID", folder.ParentID));
                command.Parameters.Add(database.CreateParameter("folderName", folder.Name));
                command.Parameters.Add(database.CreateParameter("type", folder.Type));
                command.Parameters.Add(database.CreateParameter("version", folder.Version));
                command.Parameters.Add(database.CreateParameter("@keyFolderID", folder.ID));
                try
                {
                    command.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    m_log.ErrorFormat("[INVENTORY DB]: Error : {0}", e.Message);
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Creates a new inventory folder
        /// </summary>
        /// <param name="folder">Folder to create</param>
        public void addInventoryFolder(InventoryFolderBase folder)
        {
            string sql = @"INSERT INTO inventoryfolders ([folderID], [agentID], [parentFolderID], [folderName], [type], [version]) 
                            VALUES (@folderID, @agentID, @parentFolderID, @folderName, @type, @version);";


            using (AutoClosingSqlCommand command = database.Query(sql))
            {
                command.Parameters.Add(database.CreateParameter("folderID", folder.ID));
                command.Parameters.Add(database.CreateParameter("agentID", folder.Owner));
                command.Parameters.Add(database.CreateParameter("parentFolderID", folder.ParentID));
                command.Parameters.Add(database.CreateParameter("folderName", folder.Name));
                command.Parameters.Add(database.CreateParameter("type", folder.Type));
                command.Parameters.Add(database.CreateParameter("version", folder.Version));

                try
                {
                    //IDbCommand result = database.Query(sql, param);
                    command.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    m_log.ErrorFormat("[INVENTORY DB]: Error : {0}", e.Message);
                }
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Returns all child folders in the hierarchy from the parent folder and down.
        /// Does not return the parent folder itself.
        /// </summary>
        /// <param name="parentID">The folder to get subfolders for</param>
        /// <returns>A list of inventory folders</returns>
        public List <InventoryFolderBase> getFolderHierarchy(UUID parentID)
        {
            //Note maybe change this to use a Dataset that loading in all folders of a user and then go throw it that way.
            //Note this is changed so it opens only one connection to the database and not everytime it wants to get data.

            List <InventoryFolderBase> folders = new List <InventoryFolderBase>();

            using (AutoClosingSqlCommand command = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = @parentID"))
            {
                command.Parameters.Add(database.CreateParameter("@parentID", parentID));

                folders.AddRange(getInventoryFolders(command));

                List <InventoryFolderBase> tempFolders = new List <InventoryFolderBase>();

                foreach (InventoryFolderBase folderBase in folders)
                {
                    tempFolders.AddRange(getFolderHierarchy(folderBase.ID, command));
                }
                if (tempFolders.Count > 0)
                {
                    folders.AddRange(tempFolders);
                }
            }
            return(folders);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Fetch Asset from m_database
        /// </summary>
        /// <param name="assetID">the asset UUID</param>
        /// <returns></returns>
        override protected AssetBase FetchStoredAsset(UUID assetID)
        {
            string sql = "SELECT * FROM assets WHERE id = @id";

            using (AutoClosingSqlCommand command = m_database.Query(sql))
            {
                command.Parameters.Add(m_database.CreateParameter("id", assetID));
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        AssetBase asset = new AssetBase();
                        // Region Main
                        asset.FullID      = new UUID((Guid)reader["id"]);
                        asset.Name        = (string)reader["name"];
                        asset.Description = (string)reader["description"];
                        asset.Type        = Convert.ToSByte(reader["assetType"]);
                        asset.Local       = Convert.ToBoolean(reader["local"]);
                        asset.Temporary   = Convert.ToBoolean(reader["temporary"]);
                        asset.Data        = (byte[])reader["data"];
                        return(asset);
                    }
                    return(null); // throw new Exception("No rows to return");
                }
            }
        }
Exemplo n.º 14
0
        /// <summary>
        /// Updates the specified inventory item
        /// </summary>
        /// <param name="item">Inventory item to update</param>
        public void updateInventoryItem(InventoryItemBase item)
        {
            string sql = @"UPDATE inventoryitems SET inventoryID = @inventoryID, 
                                                assetID = @assetID, 
                                                assetType = @assetType,
                                                parentFolderID = @parentFolderID,
                                                avatarID = @avatarID,
                                                inventoryName = @inventoryName, 
                                                inventoryDescription = @inventoryDescription, 
                                                inventoryNextPermissions = @inventoryNextPermissions, 
                                                inventoryCurrentPermissions = @inventoryCurrentPermissions, 
                                                invType = @invType, 
                                                creatorID = @creatorID, 
                                                inventoryBasePermissions = @inventoryBasePermissions, 
                                                inventoryEveryOnePermissions = @inventoryEveryOnePermissions, 
                                                salePrice = @salePrice, 
                                                saleType = @saleType, 
                                                creationDate = @creationDate, 
                                                groupID = @groupID, 
                                                groupOwned = @groupOwned, 
                                                flags = @flags 
                                        WHERE inventoryID = @keyInventoryID";

            using (AutoClosingSqlCommand command = database.Query(sql))
            {
                command.Parameters.Add(database.CreateParameter("inventoryID", item.ID));
                command.Parameters.Add(database.CreateParameter("assetID", item.AssetID));
                command.Parameters.Add(database.CreateParameter("assetType", item.AssetType));
                command.Parameters.Add(database.CreateParameter("parentFolderID", item.Folder));
                command.Parameters.Add(database.CreateParameter("avatarID", item.Owner));
                command.Parameters.Add(database.CreateParameter("inventoryName", item.Name));
                command.Parameters.Add(database.CreateParameter("inventoryDescription", item.Description));
                command.Parameters.Add(database.CreateParameter("inventoryNextPermissions", item.NextPermissions));
                command.Parameters.Add(database.CreateParameter("inventoryCurrentPermissions", item.CurrentPermissions));
                command.Parameters.Add(database.CreateParameter("invType", item.InvType));
                command.Parameters.Add(database.CreateParameter("creatorID", item.CreatorIdAsUuid));
                command.Parameters.Add(database.CreateParameter("inventoryBasePermissions", item.BasePermissions));
                command.Parameters.Add(database.CreateParameter("inventoryEveryOnePermissions", item.EveryOnePermissions));
                command.Parameters.Add(database.CreateParameter("salePrice", item.SalePrice));
                command.Parameters.Add(database.CreateParameter("saleType", item.SaleType));
                command.Parameters.Add(database.CreateParameter("creationDate", item.CreationDate));
                command.Parameters.Add(database.CreateParameter("groupID", item.GroupID));
                command.Parameters.Add(database.CreateParameter("groupOwned", item.GroupOwned));
                command.Parameters.Add(database.CreateParameter("flags", item.Flags));
                command.Parameters.Add(database.CreateParameter("@keyInventoryID", item.ID));

                try
                {
                    command.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    m_log.Error("[INVENTORY DB]: Error updating item :" + e.Message);
                }
            }
        }
Exemplo n.º 15
0
 /// <summary>
 /// Gets the inventory folders.
 /// </summary>
 /// <param name="command">SQLcommand.</param>
 /// <returns></returns>
 private static List <InventoryFolderBase> getInventoryFolders(AutoClosingSqlCommand command)
 {
     using (IDataReader reader = command.ExecuteReader())
     {
         List <InventoryFolderBase> items = new List <InventoryFolderBase>();
         while (reader.Read())
         {
             items.Add(readInventoryFolder(reader));
         }
         return(items);
     }
 }
Exemplo n.º 16
0
        // See IInventoryDataPlugin

        /// <summary>
        /// Delete an item in inventory database
        /// </summary>
        /// <param name="itemID">the item UUID</param>
        public void deleteInventoryItem(UUID itemID)
        {
            using (AutoClosingSqlCommand command = database.Query("DELETE FROM inventoryitems WHERE inventoryID=@inventoryID"))
            {
                command.Parameters.Add(database.CreateParameter("inventoryID", itemID));
                try
                {
                    command.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    m_log.Error("[INVENTORY DB]: Error deleting item :" + e.Message);
                }
            }
        }
Exemplo n.º 17
0
 /// <summary>
 /// Deletes a sim profile from the database
 /// </summary>
 /// <param name="uuid">the sim UUID</param>
 /// <returns>Successful?</returns>
 //public DataResponse DeleteProfile(RegionProfileData profile)
 override public DataResponse DeleteProfile(string uuid)
 {
     using (AutoClosingSqlCommand command = database.Query("DELETE FROM regions WHERE uuid = @uuid;"))
     {
         command.Parameters.Add(database.CreateParameter("uuid", uuid));
         try
         {
             command.ExecuteNonQuery();
             return(DataResponse.RESPONSE_OK);
         }
         catch (Exception e)
         {
             m_log.DebugFormat("[GRID DB] : Error deleting region info, error is : {0}", e.Message);
             return(DataResponse.RESPONSE_ERROR);
         }
     }
 }
Exemplo n.º 18
0
        /// <summary>
        /// Returns a specified inventory folder
        /// </summary>
        /// <param name="folderID">The folder to return</param>
        /// <returns>A folder class</returns>
        public InventoryFolderBase getInventoryFolder(UUID folderID)
        {
            using (AutoClosingSqlCommand command = database.Query("SELECT * FROM inventoryfolders WHERE folderID = @folderID"))
            {
                command.Parameters.Add(database.CreateParameter("folderID", folderID));

                using (IDataReader reader = command.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        return(readInventoryFolder(reader));
                    }
                }
            }
            m_log.InfoFormat("[INVENTORY DB] : Found no inventory folder with ID : {0}", folderID);
            return(null);
        }
Exemplo n.º 19
0
        /// <summary>
        /// Returns a sim profile from its UUID
        /// </summary>
        /// <param name="uuid">The region UUID</param>
        /// <returns>The sim profile</returns>
        override public RegionProfileData GetProfileByUUID(UUID uuid)
        {
            using (AutoClosingSqlCommand command = database.Query("SELECT * FROM " + m_regionsTableName + " WHERE uuid = @uuid"))
            {
                command.Parameters.Add(database.CreateParameter("uuid", uuid));

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        return(ReadSimRow(reader));
                    }
                }
            }
            m_log.InfoFormat("[GRID DB] : No region found with UUID : {0}", uuid);
            return(null);
        }
Exemplo n.º 20
0
        /// <summary>
        /// Gets the inventory folders.
        /// </summary>
        /// <param name="parentID">parentID, use UUID.Zero to get root</param>
        /// <param name="user">user id, use UUID.Zero, if you want all folders from a parentID.</param>
        /// <returns></returns>
        private List <InventoryFolderBase> getInventoryFolders(UUID parentID, UUID user)
        {
            using (AutoClosingSqlCommand command = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = @parentID AND agentID LIKE @uuid"))
            {
                if (user == UUID.Zero)
                {
                    command.Parameters.Add(database.CreateParameter("uuid", "%"));
                }
                else
                {
                    command.Parameters.Add(database.CreateParameter("uuid", user));
                }
                command.Parameters.Add(database.CreateParameter("parentID", parentID));

                return(getInventoryFolders(command));
            }
        }
Exemplo n.º 21
0
        /// <summary>
        /// Returns a sim profile from its location
        /// </summary>
        /// <param name="handle">Region location handle</param>
        /// <returns>Sim profile</returns>
        override public RegionProfileData GetProfileByHandle(ulong handle)
        {
            using (AutoClosingSqlCommand command = database.Query("SELECT * FROM " + m_regionsTableName + " WHERE regionHandle = @handle"))
            {
                command.Parameters.Add(database.CreateParameter("handle", handle));

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        return(ReadSimRow(reader));
                    }
                }
            }
            m_log.InfoFormat("[GRID DB] : No region found with handle : {0}", handle);
            return(null);
        }
Exemplo n.º 22
0
        /// <summary>
        /// Returns a list of items in a specified folder
        /// </summary>
        /// <param name="folderID">The folder to search</param>
        /// <returns>A list containing inventory items</returns>
        public List <InventoryItemBase> getInventoryInFolder(UUID folderID)
        {
            using (AutoClosingSqlCommand command = database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = @parentFolderID"))
            {
                command.Parameters.Add(database.CreateParameter("parentFolderID", folderID));

                List <InventoryItemBase> items = new List <InventoryItemBase>();

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        items.Add(readInventoryItem(reader));
                    }
                }
                return(items);
            }
        }
Exemplo n.º 23
0
        /// <summary>
        /// Returns a specified inventory item
        /// </summary>
        /// <param name="itemID">The item ID</param>
        /// <returns>An inventory item</returns>
        public InventoryItemBase getInventoryItem(UUID itemID)
        {
            using (AutoClosingSqlCommand result = database.Query("SELECT * FROM inventoryitems WHERE inventoryID = @inventoryID"))
            {
                result.Parameters.Add(database.CreateParameter("inventoryID", itemID));

                using (IDataReader reader = result.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        return(readInventoryItem(reader));
                    }
                }
            }

            m_log.InfoFormat("[INVENTORY DB]: Found no inventory item with ID : {0}", itemID);
            return(null);
        }
Exemplo n.º 24
0
        /// <summary>
        /// Returns all activated gesture-items in the inventory of the specified avatar.
        /// </summary>
        /// <param name="avatarID">The <see cref="UUID"/> of the avatar</param>
        /// <returns>
        /// The list of gestures (<see cref="InventoryItemBase"/>s)
        /// </returns>
        public List <InventoryItemBase> fetchActiveGestures(UUID avatarID)
        {
            using (AutoClosingSqlCommand command = database.Query("SELECT * FROM inventoryitems WHERE avatarId = @uuid AND assetType = @assetType and flags = 1"))
            {
                command.Parameters.Add(database.CreateParameter("uuid", avatarID));
                command.Parameters.Add(database.CreateParameter("assetType", (int)AssetType.Gesture));

                using (IDataReader reader = command.ExecuteReader())
                {
                    List <InventoryItemBase> gestureList = new List <InventoryItemBase>();
                    while (reader.Read())
                    {
                        gestureList.Add(readInventoryItem(reader));
                    }
                    return(gestureList);
                }
            }
        }
Exemplo n.º 25
0
        /// <summary>
        ///     Returns up to maxNum profiles of regions that have a name starting with namePrefix
        /// </summary>
        /// <param name="namePrefix">The name to match against</param>
        /// <param name="maxNum">Maximum number of profiles to return</param>
        /// <returns>A list of sim profiles</returns>
        override public List <RegionProfileData> GetRegionsByName(string namePrefix, uint maxNum)
        {
            using (AutoClosingSqlCommand command = database.Query("SELECT * FROM regions WHERE regionName LIKE @name"))
            {
                command.Parameters.Add(database.CreateParameter("name", namePrefix + "%"));

                List <RegionProfileData> rows = new List <RegionProfileData>();

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (rows.Count < maxNum && reader.Read())
                    {
                        rows.Add(ReadSimRow(reader));
                    }
                }

                return(rows);
            }
        }
Exemplo n.º 26
0
        private UUID[] LoadUUIDList(uint estateID, string table)
        {
            List <UUID> uuids = new List <UUID>();

            string sql = string.Format("select uuid from {0} where EstateID = @EstateID", table);

            using (AutoClosingSqlCommand cmd = _Database.Query(sql))
            {
                cmd.Parameters.Add(_Database.CreateParameter("@EstateID", estateID));

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        uuids.Add(new UUID((Guid)reader["uuid"])); //uuid);
                    }
                }
            }

            return(uuids.ToArray());
        }
Exemplo n.º 27
0
        /// <summary>
        /// Gets the folder hierarchy in a loop.
        /// </summary>
        /// <param name="parentID">parent ID.</param>
        /// <param name="command">SQL command/connection to database</param>
        /// <returns></returns>
        private static List <InventoryFolderBase> getFolderHierarchy(UUID parentID, AutoClosingSqlCommand command)
        {
            command.Parameters["@parentID"].Value = parentID.Guid; //.ToString();

            List <InventoryFolderBase> folders = getInventoryFolders(command);

            if (folders.Count > 0)
            {
                List <InventoryFolderBase> tempFolders = new List <InventoryFolderBase>();

                foreach (InventoryFolderBase folderBase in folders)
                {
                    tempFolders.AddRange(getFolderHierarchy(folderBase.ID, command));
                }

                if (tempFolders.Count > 0)
                {
                    folders.AddRange(tempFolders);
                }
            }
            return(folders);
        }
Exemplo n.º 28
0
        /// <summary>
        /// Returns a sim profile from it's Region name string
        /// </summary>
        /// <param name="regionName">The region name search query</param>
        /// <returns>The sim profile</returns>
        override public RegionProfileData GetProfileByString(string regionName)
        {
            if (regionName.Length > 2)
            {
                using (AutoClosingSqlCommand command = database.Query("SELECT top 1 * FROM " + m_regionsTableName + " WHERE regionName like @regionName order by regionName"))
                {
                    command.Parameters.Add(database.CreateParameter("regionName", regionName + "%"));

                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        if (reader.Read())
                        {
                            return(ReadSimRow(reader));
                        }
                    }
                }
                m_log.InfoFormat("[GRID DB] : No region found with regionName : {0}", regionName);
                return(null);
            }

            m_log.Error("[GRID DB]: Searched for a Region Name shorter then 3 characters");
            return(null);
        }
Exemplo n.º 29
0
        private void SaveBanList(EstateSettings es)
        {
            //Delete first
            string sql = "delete from estateban where EstateID = @EstateID";

            using (AutoClosingSqlCommand cmd = _Database.Query(sql))
            {
                cmd.Parameters.Add(_Database.CreateParameter("@EstateID", es.EstateID));
                cmd.ExecuteNonQuery();
            }

            //Insert after
            sql = "insert into estateban (EstateID, bannedUUID) values ( @EstateID, @bannedUUID )";
            using (AutoClosingSqlCommand cmd = _Database.Query(sql))
            {
                foreach (EstateBan b in es.EstateBans)
                {
                    cmd.Parameters.Add(_Database.CreateParameter("@EstateID", es.EstateID));
                    cmd.Parameters.Add(_Database.CreateParameter("@bannedUUID", b.BannedUserID));
                    cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                }
            }
        }
Exemplo n.º 30
0
        /// <summary>
        /// Gets the inventory folders.
        /// </summary>
        /// <param name="command">SQLcommand.</param>
        /// <returns></returns>
        private static List<InventoryFolderBase> getInventoryFolders(AutoClosingSqlCommand command)
        {
            using (IDataReader reader = command.ExecuteReader())
            {

                List<InventoryFolderBase> items = new List<InventoryFolderBase>();
                while (reader.Read())
                {
                    items.Add(readInventoryFolder(reader));
                }
                return items;
            }
        }
Exemplo n.º 31
0
        /// <summary>
        /// Gets the folder hierarchy in a loop.
        /// </summary>
        /// <param name="parentID">parent ID.</param>
        /// <param name="command">SQL command/connection to database</param>
        /// <returns></returns>
        private static List<InventoryFolderBase> getFolderHierarchy(UUID parentID, AutoClosingSqlCommand command)
        {
            command.Parameters["@parentID"].Value = parentID.Guid; //.ToString();

            List<InventoryFolderBase> folders = getInventoryFolders(command);

            if (folders.Count > 0)
            {
                List<InventoryFolderBase> tempFolders = new List<InventoryFolderBase>();

                foreach (InventoryFolderBase folderBase in folders)
                {
                    tempFolders.AddRange(getFolderHierarchy(folderBase.ID, command));
                }

                if (tempFolders.Count > 0)
                {
                    folders.AddRange(tempFolders);
                }
            }
            return folders;
        }
Exemplo n.º 32
0
        /// <summary>
        /// Delete an inventory folder
        /// </summary>
        /// <param name="folderID">Id of folder to delete</param>
        public void deleteInventoryFolder(UUID folderID)
        {
            using (SqlConnection connection = database.DatabaseConnection())
            {
                List<InventoryFolderBase> subFolders;
                using (SqlCommand command = new SqlCommand("SELECT * FROM inventoryfolders WHERE parentFolderID = @parentID", connection))
                {
                    command.Parameters.Add(database.CreateParameter("@parentID", UUID.Zero));

                    AutoClosingSqlCommand autoCommand = new AutoClosingSqlCommand(command);

                    subFolders = getFolderHierarchy(folderID, autoCommand);
                }

                //Delete all sub-folders
                foreach (InventoryFolderBase f in subFolders)
                {
                    DeleteOneFolder(f.ID, connection);
                    DeleteItemsInFolder(f.ID, connection);
                }

                //Delete the actual row
                DeleteOneFolder(folderID, connection);
                DeleteItemsInFolder(folderID, connection);
            }
        }
Exemplo n.º 33
0
        /// <summary>
        ///     Creates a new region in the database
        /// </summary>
        /// <param name="profile">The region profile to insert</param>
        /// <returns>Successful?</returns>
        private bool InsertRegionRow(RegionProfileData profile)
        {
            bool returnval = false;

            //Insert new region
            string sql =
                "INSERT INTO " + m_regionsTableName + @" ([regionHandle], [regionName], [uuid], [regionRecvKey], [regionSecret], [regionSendKey], [regionDataURI], 
                                                      [serverIP], [serverPort], [serverURI], [locX], [locY], [locZ], [eastOverrideHandle], [westOverrideHandle], 
                                                      [southOverrideHandle], [northOverrideHandle], [regionAssetURI], [regionAssetRecvKey], [regionAssetSendKey], 
                                                      [regionUserURI], [regionUserRecvKey], [regionUserSendKey], [regionMapTexture], [serverHttpPort], 
                                                      [serverRemotingPort], [owner_uuid], [originUUID]) 
                                                VALUES (@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, 
                                                        @serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, 
                                                        @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, @regionAssetSendKey, 
                                                        @regionUserURI, @regionUserRecvKey, @regionUserSendKey, @regionMapTexture, @serverHttpPort, @serverRemotingPort, @owner_uuid, @originUUID);";

            using (AutoClosingSqlCommand command = database.Query(sql))
            {
                command.Parameters.Add(database.CreateParameter("regionHandle", profile.regionHandle));
                command.Parameters.Add(database.CreateParameter("regionName", profile.regionName));
                command.Parameters.Add(database.CreateParameter("uuid", profile.UUID));
                command.Parameters.Add(database.CreateParameter("regionRecvKey", profile.regionRecvKey));
                command.Parameters.Add(database.CreateParameter("regionSecret", profile.regionSecret));
                command.Parameters.Add(database.CreateParameter("regionSendKey", profile.regionSendKey));
                command.Parameters.Add(database.CreateParameter("regionDataURI", profile.regionDataURI));
                command.Parameters.Add(database.CreateParameter("serverIP", profile.serverIP));
                command.Parameters.Add(database.CreateParameter("serverPort", profile.serverPort));
                command.Parameters.Add(database.CreateParameter("serverURI", profile.serverURI));
                command.Parameters.Add(database.CreateParameter("locX", profile.regionLocX));
                command.Parameters.Add(database.CreateParameter("locY", profile.regionLocY));
                command.Parameters.Add(database.CreateParameter("locZ", profile.regionLocZ));
                command.Parameters.Add(database.CreateParameter("eastOverrideHandle", profile.regionEastOverrideHandle));
                command.Parameters.Add(database.CreateParameter("westOverrideHandle", profile.regionWestOverrideHandle));
                command.Parameters.Add(database.CreateParameter("northOverrideHandle", profile.regionNorthOverrideHandle));
                command.Parameters.Add(database.CreateParameter("southOverrideHandle", profile.regionSouthOverrideHandle));
                command.Parameters.Add(database.CreateParameter("regionAssetURI", profile.regionAssetURI));
                command.Parameters.Add(database.CreateParameter("regionAssetRecvKey", profile.regionAssetRecvKey));
                command.Parameters.Add(database.CreateParameter("regionAssetSendKey", profile.regionAssetSendKey));
                command.Parameters.Add(database.CreateParameter("regionUserURI", profile.regionUserURI));
                command.Parameters.Add(database.CreateParameter("regionUserRecvKey", profile.regionUserRecvKey));
                command.Parameters.Add(database.CreateParameter("regionUserSendKey", profile.regionUserSendKey));
                command.Parameters.Add(database.CreateParameter("regionMapTexture", profile.regionMapTextureID));
                command.Parameters.Add(database.CreateParameter("serverHttpPort", profile.httpPort));
                command.Parameters.Add(database.CreateParameter("serverRemotingPort", profile.remotingPort));
                command.Parameters.Add(database.CreateParameter("owner_uuid", profile.owner_uuid));
                command.Parameters.Add(database.CreateParameter("originUUID", profile.originUUID));

                try
                {
                    command.ExecuteNonQuery();
                    returnval = true;
                }

                catch (Exception e)
                {
                    m_log.Error("[GRID DB] : Error inserting region, error: " + e.Message);
                }
            }

            return(returnval);
        }