Пример #1
0
        private static bool IsMemberPartOfNotNullCondition(IEnumerable <LeftCellWrapper> wrappers, MemberPath leftMember, ViewTarget viewTarget)
        {
            foreach (var leftCellWrapper in wrappers)
            {
                CellQuery leftCellQuery = leftCellWrapper.OnlyInputCell.GetLeftQuery(viewTarget);

                if (HasNotNullCondition(leftCellQuery, leftMember))
                {
                    return(true);
                }

                //Now figure out corresponding right side MemberPath
                CellQuery rightCellQuery            = leftCellWrapper.OnlyInputCell.GetRightQuery(viewTarget);
                int       indexOfMemberInProjection = leftCellQuery.GetProjectedMembers().TakeWhile(path => !path.Equals(leftMember)).Count();

                //Member with condition is projected, so check opposite CellQuery's condition
                if (indexOfMemberInProjection < leftCellQuery.GetProjectedMembers().Count())
                {
                    MemberPath rightmember = ((MemberProjectedSlot)rightCellQuery.ProjectedSlotAt(indexOfMemberInProjection)).MemberPath;

                    if (HasNotNullCondition(rightCellQuery, rightmember))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
 private static bool IsMemberPartOfNotNullCondition(
     IEnumerable <LeftCellWrapper> wrappers,
     MemberPath leftMember,
     ViewTarget viewTarget)
 {
     foreach (LeftCellWrapper wrapper in wrappers)
     {
         CellQuery leftQuery = wrapper.OnlyInputCell.GetLeftQuery(viewTarget);
         if (ErrorPatternMatcher.HasNotNullCondition(leftQuery, leftMember))
         {
             return(true);
         }
         CellQuery rightQuery = wrapper.OnlyInputCell.GetRightQuery(viewTarget);
         int       slotNum    = leftQuery.GetProjectedMembers().TakeWhile <MemberPath>((Func <MemberPath, bool>)(path => !path.Equals(leftMember))).Count <MemberPath>();
         if (slotNum < leftQuery.GetProjectedMembers().Count <MemberPath>())
         {
             MemberPath memberPath = ((MemberProjectedSlot)rightQuery.ProjectedSlotAt(slotNum)).MemberPath;
             if (ErrorPatternMatcher.HasNotNullCondition(rightQuery, memberPath))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Пример #3
0
 private void CheckThatConditionMemberIsNotMapped(MemberPath conditionMember, List <LeftCellWrapper> mappingFragments, Set <MemberPath> mappedConditionMembers)
 {
     //Make sure memberPath is not mapped (in any other cells)
     foreach (var anotherFragment in mappingFragments)
     {
         foreach (var anotherCell in anotherFragment.Cells)
         {
             CellQuery anotherCellQuery = anotherCell.GetLeftQuery(m_viewgenContext.ViewTarget);
             if (anotherCellQuery.GetProjectedMembers().Contains(conditionMember))
             {
                 mappedConditionMembers.Add(conditionMember);
                 //error condition memer is projected somewhere
                 m_errorLog.AddEntry(new ErrorLog.Record(true, ViewGenErrorCode.ErrorPatternConditionError, Strings.Viewgen_ErrorPattern_ConditionMemberIsMapped(conditionMember.ToString()), anotherCell, ""));
             }
         }
     }
 }
Пример #4
0
        public static FragmentQuery Create(BoolExpression fromVariable, CellQuery cellQuery)
        {
            BoolExpression whereClause = cellQuery.WhereClause;

            whereClause = whereClause.MakeCopy();
            whereClause.ExpensiveSimplify();
            return(new FragmentQuery(null /*label*/, fromVariable, new HashSet <MemberPath>(cellQuery.GetProjectedMembers()), whereClause));
        }
Пример #5
0
        public static FragmentQuery Create(
            BoolExpression fromVariable,
            CellQuery cellQuery)
        {
            BoolExpression condition = cellQuery.WhereClause.MakeCopy();

            condition.ExpensiveSimplify();
            return(new FragmentQuery((string)null, fromVariable, (IEnumerable <MemberPath>) new HashSet <MemberPath>(cellQuery.GetProjectedMembers()), condition));
        }