private PatternInfo BuildBasicPatternInfo(int[] partitions, int levelsize)
        {
            if (partitions.Length == 0)
            {
                return(new PatternInfo(AggRelationship.NoPattern, levelsize, new int[0]));
            }

            AggRelationship relationship   = AggRelationship.NoPattern;
            int             repetitionSize = 0;

            int[] partitionSizes = CalcPartitionSizes(partitions);

            if (partitionSizes.Length == 1)
            {
                return(new PatternInfo(AggRelationship.NoPattern, levelsize, partitionSizes));
            }

            int firstsize = partitionSizes[0] = partitions[0];

            if (partitionSizes.All(size => size == firstsize))
            {
                if (firstsize == 1)
                {
                    relationship   = AggRelationship.OneToOne;
                    repetitionSize = 1;
                }
                else
                {
                    relationship   = AggRelationship.RepeatedPattern;
                    repetitionSize = firstsize;
                }
            }

            return(new PatternInfo(relationship, repetitionSize, partitionSizes));
        }
 public PatternInfo(AggRelationship _getLevelRelation, int _repeatedPartitionSize, int[] partitionSizes)
 {
     GetLevelRelation      = _getLevelRelation;
     RepeatedPartitionSize = _repeatedPartitionSize;
 }