Esempio n. 1
0
        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];
 }
Esempio n. 3
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);
        }
Esempio n. 4
0
 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];
 }
Esempio n. 7
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;
 }