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];
 }
 protected string SerializeProjectionFunction(ProjectionFunction projectionFunction)
 {
   switch (projectionFunction)
   {
     case ProjectionFunction.None:
       return "None";
     case ProjectionFunction.DateToYear:
       return "DateToYear";
     default:
       throw new NotImplementedException(string.Format("ProjectionFunction '{0}' is not implemented", projectionFunction));
   }
 }
 protected string SerializeProjectionFunction(ProjectionFunction projectionFunction)
 {
   switch (projectionFunction)
   {
     case ProjectionFunction.None:
       return "None";
     case ProjectionFunction.DateToYear:
       return "DateToYear";
     default:
       throw new NotImplementedException(string.Format("ProjectionFunction '{0}' is not implemented", projectionFunction));
   }
 }
        public HomogenousMap GetValueGroups(MediaItemAspectMetadata.AttributeSpecification attributeType, IFilter selectAttributeFilter,
                                            ProjectionFunction projectionFunction, IEnumerable <Guid> necessaryMIATypes, IFilter filter, bool onlyOnline)
        {
            CpAction       action = GetAction("GetValueGroups");
            string         projectionFunctionStr = SerializeProjectionFunction(projectionFunction);
            string         onlineStateStr        = SerializeOnlineState(onlyOnline);
            IList <object> inParameters          = new List <object> {
                MarshallingHelper.SerializeGuid(attributeType.ParentMIAM.AspectId),
                attributeType.AttributeName, selectAttributeFilter, projectionFunctionStr,
                MarshallingHelper.SerializeGuidEnumerationToCsv(necessaryMIATypes), filter, onlineStateStr
            };
            IList <object> outParameters = action.InvokeAction(inParameters);

            return((HomogenousMap)outParameters[0]);
        }
 public async Task<Tuple<HomogenousMap, HomogenousMap>> GetKeyValueGroupsAsync(MediaItemAspectMetadata.AttributeSpecification keyAttributeType, MediaItemAspectMetadata.AttributeSpecification valueAttributeType,
   IFilter selectAttributeFilter, ProjectionFunction projectionFunction, IEnumerable<Guid> necessaryMIATypes, IFilter filter, bool onlyOnline, bool includeVirtual)
 {
   CpAction action = GetAction("X_MediaPortal_GetKeyValueGroups");
   string projectionFunctionStr = SerializeProjectionFunction(projectionFunction);
   string onlineStateStr = SerializeOnlineState(onlyOnline);
   IList<object> inParameters = new List<object>
   {
     MarshallingHelper.SerializeGuid(keyAttributeType.ParentMIAM.AspectId),
     keyAttributeType.AttributeName,
     MarshallingHelper.SerializeGuid(valueAttributeType.ParentMIAM.AspectId),
     valueAttributeType.AttributeName,
     selectAttributeFilter,
     projectionFunctionStr,
     MarshallingHelper.SerializeGuidEnumerationToCsv(necessaryMIATypes),
     filter,
     onlineStateStr,
     includeVirtual,
   };
   IList<object> outParameters = await action.InvokeAsync(inParameters);
   return new Tuple<HomogenousMap, HomogenousMap>((HomogenousMap)outParameters[0], (HomogenousMap)outParameters[1]);
 }
Example #6
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();
 }
Example #7
0
 public Tuple <HomogenousMap, HomogenousMap> GetKeyValueGroups(MediaItemAspectMetadata.AttributeSpecification keyAttributeType, MediaItemAspectMetadata.AttributeSpecification valueAttributeType, IFilter selectAttributeFilter, ProjectionFunction projectionFunction, IEnumerable <Guid> necessaryMIATypeIDs, IFilter filter, bool filterOnlyOnline, bool includeVirtual)
 {
     throw new NotImplementedException();
 }
Example #8
0
 public HomogenousMap GetValueGroups(MediaItemAspectMetadata.AttributeSpecification attributeType, IFilter selectAttributeFilter, ProjectionFunction projectionFunction, IEnumerable <Guid> necessaryMIATypeIDs, IFilter filter, bool filterOnlyOnline)
 {
     throw new NotImplementedException();
 }
 static UPnPError ParseProjectionFunction(string argumentName, string projectionFunctionStr, out ProjectionFunction projectionFunction)
 {
   switch (projectionFunctionStr)
   {
     case "None":
       projectionFunction = ProjectionFunction.None;
       break;
     case "DateToYear":
       projectionFunction = ProjectionFunction.DateToYear;
       break;
     default:
       projectionFunction = ProjectionFunction.None;
       return new UPnPError(600, string.Format("Argument '{0}' must be of value 'DateToYear' or 'None'", 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 HomogenousMap GetValueGroups(MediaItemAspectMetadata.AttributeSpecification attributeType, IFilter selectAttributeFilter,
     ProjectionFunction projectionFunction, IEnumerable<Guid> necessaryMIATypes, IFilter filter, bool onlyOnline)
 {
   CpAction action = GetAction("GetValueGroups");
   string projectionFunctionStr = SerializeProjectionFunction(projectionFunction);
   string onlineStateStr = SerializeOnlineState(onlyOnline);
   IList<object> inParameters = new List<object> {MarshallingHelper.SerializeGuid(attributeType.ParentMIAM.AspectId),
       attributeType.AttributeName, selectAttributeFilter, projectionFunctionStr,
       MarshallingHelper.SerializeGuidEnumerationToCsv(necessaryMIATypes), filter, onlineStateStr};
   IList<object> outParameters = action.InvokeAction(inParameters);
   return (HomogenousMap) outParameters[0];
 }
Example #12
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;
 }
Example #13
0
 public HomogenousMap GetValueGroups(MediaItemAspectMetadata.AttributeSpecification attributeType, IFilter selectAttributeFilter,
     ProjectionFunction projectionFunction, IEnumerable<Guid> necessaryMIATypeIDs, IFilter filter, bool filterOnlyOnline)
 {
   SelectProjectionFunction selectProjectionFunctionImpl;
   Type projectionValueType;
   switch (projectionFunction)
   {
     case ProjectionFunction.DateToYear:
       selectProjectionFunctionImpl = (string expr) =>
         {
           ISQLDatabase database = ServiceRegistration.Get<ISQLDatabase>();
           return database.CreateDateToYearProjectionExpression(expr);
         };
       projectionValueType = typeof(int);
       break;
     default:
       selectProjectionFunctionImpl = null;
       projectionValueType = null;
       break;
   }
   IAttributeFilter saf = selectAttributeFilter as IAttributeFilter;
   if (saf == null && selectAttributeFilter != null)
     filter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And, new IFilter[] {filter, selectAttributeFilter});
   CompiledGroupedAttributeValueQuery cdavq = CompiledGroupedAttributeValueQuery.Compile(_miaManagement,
       filterOnlyOnline ? necessaryMIATypeIDs.Union(new Guid[] {ProviderResourceAspect.ASPECT_ID}) :
       necessaryMIATypeIDs, attributeType, saf, selectProjectionFunctionImpl, projectionValueType, filterOnlyOnline ? AddOnlyOnlineFilter(filter) : filter);
   return cdavq.Execute();
 }