replace recent IModule.GetGroup() with better GetGroupRecord(string name)

slimupdates
Justin Clark-Casey (justincc) 2010-03-26 00:10:29 +00:00
parent 857918d3b0
commit 87fe96ae2c
5 changed files with 38 additions and 31 deletions

View File

@ -40,7 +40,7 @@ namespace OpenSim.Data.Null
{ {
private static NullRegionData Instance = null; private static NullRegionData Instance = null;
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Dictionary<UUID, RegionData> m_regionData = new Dictionary<UUID, RegionData>(); Dictionary<UUID, RegionData> m_regionData = new Dictionary<UUID, RegionData>();

View File

@ -48,7 +48,6 @@ namespace OpenSim.Framework
public class GroupMembershipData public class GroupMembershipData
{ {
// Group base data // Group base data
//
public UUID GroupID; public UUID GroupID;
public string GroupName; public string GroupName;
public bool AllowPublish = true; public bool AllowPublish = true;
@ -61,7 +60,6 @@ namespace OpenSim.Framework
public bool ShowInList = true; public bool ShowInList = true;
// Per user data // Per user data
//
public bool AcceptNotices = true; public bool AcceptNotices = true;
public int Contribution = 0; public int Contribution = 0;
public ulong GroupPowers = 0; public ulong GroupPowers = 0;

View File

@ -55,11 +55,18 @@ namespace OpenSim.Region.Framework.Interfaces
bool openEnrollment, bool allowPublish, bool maturePublish); bool openEnrollment, bool allowPublish, bool maturePublish);
/// <summary> /// <summary>
/// Get a group given its name /// Get a group
/// </summary> /// </summary>
/// <param name="name"></param> /// <param name="name">Name of the group</param>
/// <returns>The group's data. Null if there is no such group.</returns> /// <returns>The group's data. Null if there is no such group.</returns>
DirGroupsReplyData? GetGroup(string name); GroupRecord GetGroupRecord(string name);
/// <summary>
/// Get a group
/// </summary>
/// <param name="GroupID">ID of the group</param>
/// <returns>The group's data. Null if there is no such group.</returns>
GroupRecord GetGroupRecord(UUID GroupID);
void ActivateGroup(IClientAPI remoteClient, UUID groupID); void ActivateGroup(IClientAPI remoteClient, UUID groupID);
List<GroupTitlesData> GroupTitlesRequest(IClientAPI remoteClient, UUID groupID); List<GroupTitlesData> GroupTitlesRequest(IClientAPI remoteClient, UUID groupID);
@ -87,7 +94,6 @@ namespace OpenSim.Region.Framework.Interfaces
void LeaveGroupRequest(IClientAPI remoteClient, UUID GroupID); void LeaveGroupRequest(IClientAPI remoteClient, UUID GroupID);
void EjectGroupMemberRequest(IClientAPI remoteClient, UUID GroupID, UUID EjecteeID); void EjectGroupMemberRequest(IClientAPI remoteClient, UUID GroupID, UUID EjecteeID);
void InviteGroupRequest(IClientAPI remoteClient, UUID GroupID, UUID InviteeID, UUID RoleID); void InviteGroupRequest(IClientAPI remoteClient, UUID GroupID, UUID InviteeID, UUID RoleID);
GroupRecord GetGroupRecord(UUID GroupID);
void NotifyChange(UUID GroupID); void NotifyChange(UUID GroupID);
} }
} }

View File

@ -365,7 +365,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
SendScenePresenceUpdate(dataForAgentID, activeGroupTitle); SendScenePresenceUpdate(dataForAgentID, activeGroupTitle);
} }
private void HandleUUIDGroupNameRequest(UUID GroupID,IClientAPI remoteClient) private void HandleUUIDGroupNameRequest(UUID GroupID, IClientAPI remoteClient)
{ {
if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
@ -595,6 +595,31 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
return m_groupData.GetGroupRecord(null, GroupID, null); return m_groupData.GetGroupRecord(null, GroupID, null);
} }
public GroupRecord GetGroupRecord(string name)
{
if (m_debugEnabled)
m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
// XXX: Two call implementation. This could be done in a single call if the server itself were to
// implement the code below.
List<DirGroupsReplyData> groups = m_groupData.FindGroups(null, name);
DirGroupsReplyData? foundGroup = null;
foreach (DirGroupsReplyData group in groups)
{
// We must have an exact match - I believe FindGroups will return partial matches
if (group.groupName == name)
foundGroup = group;
}
if (null == foundGroup)
return null;
return GetGroupRecord(((DirGroupsReplyData)foundGroup).groupID);
}
public void ActivateGroup(IClientAPI remoteClient, UUID groupID) public void ActivateGroup(IClientAPI remoteClient, UUID groupID)
{ {
if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
@ -768,25 +793,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
return groupID; return groupID;
} }
public DirGroupsReplyData? GetGroup(string name)
{
if (m_debugEnabled)
m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
List<DirGroupsReplyData> groups = m_groupData.FindGroups(null, name);
DirGroupsReplyData? foundGroup = null;
foreach (DirGroupsReplyData group in groups)
{
// We must have an exact match - I believe FindGroups will return partial matches
if (group.groupName == name)
foundGroup = group;
}
return foundGroup;
}
public GroupNoticeData[] GroupNoticesListRequest(IClientAPI remoteClient, UUID groupID) public GroupNoticeData[] GroupNoticesListRequest(IClientAPI remoteClient, UUID groupID)
{ {
if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);

View File

@ -352,11 +352,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
MemberGroupProfile.PowersMask = MemberInfo.GroupPowers; MemberGroupProfile.PowersMask = MemberInfo.GroupPowers;
return MemberGroupProfile; return MemberGroupProfile;
} }
public void SetAgentActiveGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID) public void SetAgentActiveGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID)
{ {
Hashtable param = new Hashtable(); Hashtable param = new Hashtable();