Skip to content

Commit

Permalink
adding a webui-friendly method for getting a list of groups by a list…
Browse files Browse the repository at this point in the history
… of group IDs
  • Loading branch information
SignpostMarv committed Jan 2, 2012
1 parent 1c9d080 commit 68c7842
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 81 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ public interface IGroupsServiceConnector : IAuroraDataPlugin
uint GetNumberOfGroups(UUID requestingAgentID, Dictionary<string, bool> boolFields);

GroupRecord GetGroupRecord(UUID requestingAgentID, UUID GroupID, string GroupName);
List<GroupRecord> GetGroupRecords(UUID requestingAgentID, uint start, uint count, Dictionary<string, bool> sort, Dictionary<string, bool> boolFields);
List<GroupRecord> GetGroupRecords(UUID requestingAgentID, uint start, uint count, Dictionary<string, bool> sort, Dictionary<string, bool> boolFields);
List<GroupRecord> GetGroupRecords(UUID requestingAgentID, List<UUID> GroupIDs);

GroupProfileData GetMemberGroupProfile(UUID requestingAgentID, UUID GroupID, UUID AgentID);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,22 @@ public uint GetNumberOfGroups(UUID requestingAgentID, Dictionary<string, bool> b
return uint.Parse(numGroups[0]);
}

private static GroupRecord GroupRecordQueryResult2GroupRecord(List<String> result){
return new GroupRecord{
GroupID = UUID.Parse(result[0]),
GroupName = result[1],
Charter = result[2],
GroupPicture = UUID.Parse(result[3]),
FounderID = UUID.Parse(result[4]),
MembershipFee = int.Parse(result[5]),
OpenEnrollment = int.Parse(result[6]) == 1,
ShowInList = int.Parse(result[7]) == 1,
AllowPublish = int.Parse(result[8]) == 1,
MaturePublish = int.Parse(result[9]) == 1,
OwnerRoleID = UUID.Parse(result[10])
};
}

public GroupRecord GetGroupRecord(UUID requestingAgentID, UUID GroupID, string GroupName)
{
GroupRecord record = new GroupRecord();
Expand All @@ -598,23 +614,8 @@ public GroupRecord GetGroupRecord(UUID requestingAgentID, UUID GroupID, string G
Keys.Add("Name");
Values.Add(GroupName.MySqlEscape(50));
}
List<string> osgroupsData = data.Query(Keys.ToArray(), Values.ToArray(), "osgroup",
"GroupID, Name, Charter, InsigniaID, FounderID, MembershipFee, OpenEnrollment, ShowInList, AllowPublish, MaturePublish, OwnerRoleID");
if (osgroupsData.Count == 0)
return null;
record.GroupID = UUID.Parse(osgroupsData[0]);
record.GroupName = osgroupsData[1];
record.Charter = osgroupsData[2];
record.GroupPicture = UUID.Parse(osgroupsData[3]);
record.FounderID = UUID.Parse(osgroupsData[4]);
record.MembershipFee = int.Parse(osgroupsData[5]);
record.OpenEnrollment = int.Parse(osgroupsData[6]) == 1;
record.ShowInList = int.Parse(osgroupsData[7]) == 1;
record.AllowPublish = int.Parse(osgroupsData[8]) == 1;
record.MaturePublish = int.Parse(osgroupsData[9]) == 1;
record.OwnerRoleID = UUID.Parse(osgroupsData[10]);

return record;
List<string> osgroupsData = data.Query(Keys.ToArray(), Values.ToArray(), "osgroup", "GroupID, Name, Charter, InsigniaID, FounderID, MembershipFee, OpenEnrollment, ShowInList, AllowPublish, MaturePublish, OwnerRoleID");
return (osgroupsData.Count == 0) ? null : GroupRecordQueryResult2GroupRecord(osgroupsData);
}

public List<GroupRecord> GetGroupRecords(UUID requestingAgentID, uint start, uint count, Dictionary<string, bool> sort, Dictionary<string, bool> boolFields)
Expand Down Expand Up @@ -663,32 +664,39 @@ public List<GroupRecord> GetGroupRecords(UUID requestingAgentID, uint start, uin


List<GroupRecord> Reply = new List<GroupRecord>();
GroupRecord group;
Dictionary<string, object> groupDict;

List<string> osgroupsData = data.Query(whereClause, "osgroup", "GroupID, Name, Charter, InsigniaID, FounderID, MembershipFee, OpenEnrollment, ShowInList, AllowPublish, MaturePublish, OwnerRoleID");
if (osgroupsData.Count < 11)
{
return Reply;
}
for (int i = 0; i < osgroupsData.Count; )
{
groupDict = new Dictionary<string, object>();
groupDict["GroupID"] = osgroupsData[i++];
groupDict["GroupName"] = osgroupsData[i++];
groupDict["Charter"] = osgroupsData[i++];
groupDict["GroupPicture"] = osgroupsData[i++];
groupDict["FounderID"] = osgroupsData[i++];
groupDict["MembershipFee"] = osgroupsData[i++];
groupDict["OpenEnrollment"] = int.Parse(osgroupsData[i++]) == 1 ? "true" : "false";
groupDict["ShowInList"] = int.Parse(osgroupsData[i++]) == 1 ? "true" : "false";
groupDict["AllowPublish"] = int.Parse(osgroupsData[i++]) == 1 ? "true" : "false";
groupDict["MaturePublish"] = int.Parse(osgroupsData[i++]) == 1 ? "true" : "false";
groupDict["OwnerRoleID"] = osgroupsData[i++];
group = new GroupRecord(groupDict);
Reply.Add(group);
for (int i = 0; i < osgroupsData.Count; i+= 11)
{
Reply.Add(GroupRecordQueryResult2GroupRecord(osgroupsData.GetRange(i, 11)));
}
return Reply;
}

public List<GroupRecord> GetGroupRecords(UUID requestingAgentID, List<UUID> GroupIDs)
{
List<GroupRecord> Reply = new List<GroupRecord>(0);
if (GroupIDs.Count <= 0)
{
return Reply;
}

string whereClause = "GroupID = '" + string.Join("' OR GroupID = '", GroupIDs.ConvertAll(x => x.ToString()).ToArray()) + "'";

List<string> osgroupsData = data.Query(whereClause, "osgroup", "GroupID, Name, Charter, InsigniaID, FounderID, MembershipFee, OpenEnrollment, ShowInList, AllowPublish, MaturePublish, OwnerRoleID");
if (osgroupsData.Count < 11)
{
return Reply;
}
for (int i = 0; i < osgroupsData.Count; i += 11)
{
Reply.Add(GroupRecordQueryResult2GroupRecord(osgroupsData.GetRange(i, 11)));
}
return Reply;
}

public GroupProfileData GetMemberGroupProfile(UUID requestingAgentID, UUID GroupID, UUID AgentID)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -763,44 +763,36 @@ public GroupRecord GetGroupRecord(UUID requestingAgentID, UUID GroupID, string G
}

return null;
}

public List<GroupRecord> GetGroupRecords(UUID requestingAgentID, uint start, uint count, Dictionary<string, bool> sort, Dictionary<string, bool> boolFields)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();

sendData["METHOD"] = "GetGroupRecords";
sendData["requestingAgentID"] = requestingAgentID.ToString();
sendData["start"] = start;
sendData["count"] = count;
sendData["sort"] = sort;
sendData["boolFields"] = boolFields;
string reqString = WebUtils.BuildXmlResponse(sendData);

try
{
List<string> m_ServerURIs = m_registry.RequestModuleInterface<IConfigurationService>().FindValueOf("RemoteServerURI");
#if (!ISWIN)
foreach (string mServerUri in m_ServerURIs)
{
string reply = SynchronousRestFormsRequester.MakeRequest("POST", mServerUri, reqString);
if (reply != string.Empty)
{
Dictionary<string, object> replyData = WebUtils.ParseXmlResponse(reply);
if (replyData != null)
{
Dictionary<string, object>.ValueCollection replyvalues = replyData.Values;
// Success
List<GroupRecord> list = new List<GroupRecord>();
foreach (object replyvalue in replyvalues)
{
Dictionary<string, object> f = replyvalue as Dictionary<string, object>;
if (f != null) list.Add(new GroupRecord(f));
}
return list;
}
}
}
}

private static List<GroupRecord> remoteGroupRecordsQueryResult(IRegistryCore registry, Dictionary<string, object> sendData)
{
string reqString = WebUtils.BuildXmlResponse(sendData);

try
{
List<string> m_ServerURIs = registry.RequestModuleInterface<IConfigurationService>().FindValueOf("RemoteServerURI");
#if (!ISWIN)
foreach (string mServerUri in m_ServerURIs)
{
string reply = SynchronousRestFormsRequester.MakeRequest("POST", mServerUri, reqString);
if (reply != string.Empty)
{
Dictionary<string, object> replyData = WebUtils.ParseXmlResponse(reply);
if (replyData != null)
{
Dictionary<string, object>.ValueCollection replyvalues = replyData.Values;
// Success
List<GroupRecord> list = new List<GroupRecord>();
foreach (object replyvalue in replyvalues)
{
Dictionary<string, object> f = replyvalue as Dictionary<string, object>;
if (f != null) list.Add(new GroupRecord(f));
}
return list;
}
}
}
#else
foreach (Dictionary<string, object>.ValueCollection replyvalues in from m_ServerURI in m_ServerURIs
select SynchronousRestFormsRequester.MakeRequest("POST",
Expand All @@ -814,15 +806,40 @@ select WebUtils.ParseXmlResponse(reply) into replyData
// Success
return replyvalues.OfType<Dictionary<string, object>>().Select(f => new GroupRecord(f)).ToList();
}
#endif
#endif

}
catch (Exception e)
{
MainConsole.Instance.DebugFormat("[AuroraRemoteGroupsServiceConnector]: Exception when contacting server: {0}", e);
}

return new List<GroupRecord>(0);
}

}
catch (Exception e)
{
MainConsole.Instance.DebugFormat("[AuroraRemoteGroupsServiceConnector]: Exception when contacting server: {0}", e);
}
public List<GroupRecord> GetGroupRecords(UUID requestingAgentID, uint start, uint count, Dictionary<string, bool> sort, Dictionary<string, bool> boolFields)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();

return new List<GroupRecord>();
sendData["METHOD"] = "GetGroupRecords";
sendData["requestingAgentID"] = requestingAgentID.ToString();
sendData["start"] = start;
sendData["count"] = count;
sendData["sort"] = sort;
sendData["boolFields"] = boolFields;

return remoteGroupRecordsQueryResult(m_registry, sendData);
}

public List<GroupRecord> GetGroupRecords(UUID requestingAgentID, List<UUID> GroupIDs)
{
Dictionary<string, object> sendData = new Dictionary<string, object>();

sendData["METHOD"] = "GetGroupRecords";
sendData["requestingAgentID"] = requestingAgentID.ToString();
sendData["GroupIDs"] = GroupIDs;

return remoteGroupRecordsQueryResult(m_registry, sendData);
}

public GroupProfileData GetMemberGroupProfile(UUID requestingAgentID, UUID GroupID, UUID AgentID)
Expand Down

0 comments on commit 68c7842

Please sign in to comment.