private string GetFunction(GroupingFunction function) { switch (function) { case GroupingFunction.None: return(null); case GroupingFunction.Group: return(null); case GroupingFunction.AnyValue: return("MIN"); case GroupingFunction.Count: return("COUNT"); case GroupingFunction.Sum: return("SUM"); case GroupingFunction.Average: return("AVG"); case GroupingFunction.Min: return("MIN"); case GroupingFunction.Max: return("MAX"); default: throw new NotSupportedException(String.Format("Grouping operation {0} not supported.", function)); } }
public async Task<IList<MLQueryResultGroup>> GroupValueGroupsAsync(MediaItemAspectMetadata.AttributeSpecification attributeType, IFilter selectAttributeFilter, ProjectionFunction projectionFunction, IEnumerable<Guid> necessaryMIATypes, IFilter filter, bool onlyOnline, GroupingFunction groupingFunction, bool includeVirtual) { CpAction action = GetAction("X_MediaPortal_GroupValueGroups"); string projectionFunctionStr = SerializeProjectionFunction(projectionFunction); string onlineStateStr = SerializeOnlineState(onlyOnline); string groupingFunctionStr; switch (groupingFunction) { case GroupingFunction.FirstCharacter: groupingFunctionStr = "FirstCharacter"; break; default: throw new NotImplementedException(string.Format("GroupingFunction '{0}' is not implemented", groupingFunction)); } IList<object> inParameters = new List<object> { MarshallingHelper.SerializeGuid(attributeType.ParentMIAM.AspectId), attributeType.AttributeName, selectAttributeFilter, projectionFunctionStr, MarshallingHelper.SerializeGuidEnumerationToCsv(necessaryMIATypes), filter, onlineStateStr, groupingFunctionStr, includeVirtual, }; IList<object> outParameters = await action.InvokeAsync(inParameters); return (IList<MLQueryResultGroup>) outParameters[0]; }
public IDictionary <string, TestSelection> GroupBy(GroupingFunction groupingFunction) { var groups = new Dictionary <string, TestSelection>(); foreach (TestNode testNode in this) { var groupName = groupingFunction(testNode); TestSelection group = null; if (!groups.ContainsKey(groupName)) { group = new TestSelection(); groups[groupName] = group; } else { group = groups[groupName]; } group.Add(testNode); } return(groups); }
public IList <MLQueryResultGroup> GroupValueGroups(MediaItemAspectMetadata.AttributeSpecification attributeType, IFilter selectAttributeFilter, ProjectionFunction projectionFunction, IEnumerable <Guid> necessaryMIATypeIDs, IFilter filter, bool filterOnlyOnline, GroupingFunction groupingFunction, bool includeVirtual) { throw new NotImplementedException(); }
static UPnPError ParseGroupingFunction(string argumentName, string groupingFunctionStr, out GroupingFunction groupingFunction) { switch (groupingFunctionStr) { case "FirstCharacter": groupingFunction = GroupingFunction.FirstCharacter; break; default: groupingFunction = GroupingFunction.FirstCharacter; return new UPnPError(600, string.Format("Argument '{0}' must be of value 'FirstCharacter'", argumentName)); } return null; }
public IList<MLQueryResultGroup> GroupValueGroups(MediaItemAspectMetadata.AttributeSpecification attributeType, IFilter selectAttributeFilter, ProjectionFunction projectionFunction, IEnumerable<Guid> necessaryMIATypes, IFilter filter, bool onlyOnline, GroupingFunction groupingFunction) { CpAction action = GetAction("GroupValueGroups"); string projectionFunctionStr = SerializeProjectionFunction(projectionFunction); string onlineStateStr = SerializeOnlineState(onlyOnline); string groupingFunctionStr; switch (groupingFunction) { case GroupingFunction.FirstCharacter: groupingFunctionStr = "FirstCharacter"; break; default: throw new NotImplementedException(string.Format("GroupingFunction '{0}' is not implemented", groupingFunction)); } IList<object> inParameters = new List<object> {MarshallingHelper.SerializeGuid(attributeType.ParentMIAM.AspectId), attributeType.AttributeName, selectAttributeFilter, projectionFunctionStr, MarshallingHelper.SerializeGuidEnumerationToCsv(necessaryMIATypes), filter, onlineStateStr, groupingFunctionStr}; IList<object> outParameters = action.InvokeAction(inParameters); return (IList<MLQueryResultGroup>) outParameters[0]; }
public IList<MLQueryResultGroup> GroupValueGroups(MediaItemAspectMetadata.AttributeSpecification attributeType, IFilter selectAttributeFilter, ProjectionFunction projectionFunction, IEnumerable<Guid> necessaryMIATypeIDs, IFilter filter, bool filterOnlyOnline, GroupingFunction groupingFunction) { IDictionary<object, MLQueryResultGroup> groups = new Dictionary<object, MLQueryResultGroup>(); IGroupingFunctionImpl groupingFunctionImpl; switch (groupingFunction) { case GroupingFunction.FirstCharacter: groupingFunctionImpl = new FirstCharGroupingFunction(attributeType); break; default: groupingFunctionImpl = new FirstCharGroupingFunction(attributeType); break; } foreach (KeyValuePair<object, object> resultItem in GetValueGroups(attributeType, selectAttributeFilter, projectionFunction, necessaryMIATypeIDs, filter, filterOnlyOnline)) { object valueGroupKey = resultItem.Key; int resultGroupItemCount = (int) resultItem.Value; object groupKey; IFilter additionalFilter; groupingFunctionImpl.GetGroup(valueGroupKey, out groupKey, out additionalFilter); MLQueryResultGroup rg; if (groups.TryGetValue(groupKey, out rg)) rg.NumItemsInGroup += resultGroupItemCount; else groups[groupKey] = new MLQueryResultGroup(groupKey, resultGroupItemCount, additionalFilter); } List<MLQueryResultGroup> result = new List<MLQueryResultGroup>(groups.Values); result.Sort((a, b) => groupingFunctionImpl.Compare(a.GroupKey, b.GroupKey)); return result; }