Пример #1
0
        private bool ValidateFFilter(CursorFilterTypeF f)
        {
            if (string.IsNullOrEmpty(f.FieldName))
            {
                return(false);
            }

            if (f.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 2)
            {
                return(!string.IsNullOrEmpty(f.FilterBetweenStartValue) &&
                       !string.IsNullOrEmpty(f.FilterBetweenEndValue));
            }

            if (f.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1)
            {
                return(!string.IsNullOrEmpty(f.FieldValue));
            }

            if (f.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 0)
            {
                return(true);
            }
            return(false);
        }
Пример #2
0
        protected override void ProcessRecord()
        {
            ICursorFilter filter = null;

            if (F.IsPresent)
            {
                var f = new CursorFilterTypeF(clauseNumber)
                {
                    FieldName = fieldName,
                    Qualifier = qualifier,
                    MatchCase = matchCase
                };
                if (qualifier == FilterQualifier.Between)
                {
                    f.FilterBetweenStartValue = fieldValue;
                    f.FilterBetweenEndValue   = fieldValue2;
                }
                if (qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1)
                {
                    f.FieldValue = fieldValue;
                }
                filter = f;
            }
            if (CTI.IsPresent)
            {
                var cti = new CursorFilterTypeCTI(clauseNumber)
                {
                    Connection = connection,
                    Category   = categoryName,
                    Item       = item
                };
                filter = cti;
            }
            if ((CTCF.IsPresent))
            {
                var ctcf = new CursorFilterTypeCTCF(clauseNumber)
                {
                    Connection = connection,
                    Category   = categoryName,
                    FieldName  = fieldName,
                    Qualifier  = qualifier,
                    MatchCase  = matchCase
                };
                if (qualifier == FilterQualifier.Between)
                {
                    ctcf.FilterBetweenStartValue = fieldValue;
                    ctcf.FilterBetweenEndValue   = fieldValue2;
                }
                if (qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1)
                {
                    ctcf.FieldValue = fieldValue;
                }
                filter = ctcf;
            }
            if (CTCTI.IsPresent)
            {
                ICursorFilterTypeCTCTI ctcti = new CursorFilterTypeCTCTI(clauseNumber)
                {
                    Connection  = connection,
                    Category    = categoryName,
                    Connection2 = connection2,
                    Category2   = toCategoryName2,
                    Item        = item
                };
                filter = ctcti;
            }
            filter.Except   = except;
            filter.OrFilter = orFilter;
            WriteVerbose($"Resulting filterstring is: {filter}, conjunction is: [{(filter.OrFilter ? "OR" : "AND")}]");
            WriteObject(filter, false);
        }
Пример #3
0
        protected override void ProcessRecord()
        {
            ICursorFilter filter;;

            switch (_type)
            {
            case FilterType.Field:
                var f = new CursorFilterTypeF(clauseNumber)
                {
                    FieldName = fieldName,
                    Qualifier = qualifier,
                    MatchCase = matchCase
                };
                if (qualifier == FilterQualifier.Between)
                {
                    f.FilterBetweenStartValue = fieldValue;
                    f.FilterBetweenEndValue   = fieldValue2;
                }
                if (qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1)
                {
                    f.FieldValue = fieldValue;
                }
                filter = f;
                break;

            case FilterType.ConnectionToItem:
                var cti = new CursorFilterTypeCTI(clauseNumber)
                {
                    Connection = connection,
                    Category   = categoryName,
                    Item       = item
                };
                filter = cti;
                break;

            case FilterType.ConnectionToCategoryField:
                var ctcf = new CursorFilterTypeCTCF(clauseNumber)
                {
                    Connection = connection,
                    Category   = categoryName,
                    FieldName  = fieldName,
                    Qualifier  = qualifier,
                    MatchCase  = matchCase
                };
                if (qualifier == FilterQualifier.Between)
                {
                    ctcf.FilterBetweenStartValue = fieldValue;
                    ctcf.FilterBetweenEndValue   = fieldValue2;
                }
                if (qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1)
                {
                    ctcf.FieldValue = fieldValue;
                }
                filter = ctcf;
                break;

            case FilterType.ConnectionToCategoryToItem:
                ICursorFilterTypeCTCTI ctcti = new CursorFilterTypeCTCTI(clauseNumber)
                {
                    Connection  = connection,
                    Category    = categoryName,
                    Connection2 = connection2,
                    Category2   = toCategoryName2,
                    Item        = item
                };
                filter = ctcti;
                break;

            default:
                throw new System.ArgumentException("Invalid or missing FilterType");
            }
            filter.Except   = except;
            filter.OrFilter = orFilter;
            WriteVerbose($"Resulting filterstring is: {filter}, conjunction is: [{(filter.OrFilter ?  "OR" : "AND")}]");
            WriteObject(filter, false);
        }
Пример #4
0
        private IList <ConnectedItem> PopulateConnectedItemNamesList(string searchString)
        {
            IList <ConnectedItem> retval = new List <ConnectedItem>();

            if (string.IsNullOrEmpty(this.SelectedConnectedCategory))
            {
                return(retval);
            }

            using (ICommenceDatabase db = new CommenceDatabase())
            {
                using (ICommenceCursor cur = db.GetCursor(this.SelectedConnectedCategory))
                {
                    string nameField = db.GetNameField(this.SelectedConnectedCategory);
                    var    columns   = this.CategoryDefinition.Clarified
                        ? new[] { nameField, this.CategoryDefinition.ClarifyField }
                        : new[] { nameField };
                    if (!cur.SetColumns(columns))
                    {
                        return(retval);
                    }                                                // something went wrong bad
                    var number = cur.RowCount;
                    if (string.IsNullOrEmpty(searchString))
                    {
                        if (number == 0)
                        {
                            retval.Add(new ConnectedItem("(No items to display)", null, null, null));
                            return(retval);
                        }
                        else if (number < 1000)
                        {
                            return(GetConnectedItems(cur).ToList());
                        }
                        else
                        {
                            retval.Add(new ConnectedItem("(Too many items to display.)", null, null, null));
                            return(retval);
                        }
                    }
                    else
                    {
                        CursorFilterTypeF f = cur.Filters.Create(1, FilterType.Field);
                        f.FieldValue = this.ConnectedItemSearchString;
                        f.FieldName  = nameField;
                        f.Qualifier  = FilterQualifier.Contains;
                        int count = cur.Filters.Apply();
                        if (count > 1000)
                        {
                            retval.Add(new ConnectedItem("(Too many items to display)", null, null, null));
                            return(retval);
                        }
                        else if (count == 0)
                        {
                            retval.Add(new ConnectedItem($"(No items contain '{ this.ConnectedItemSearchString }')", null, null, null));
                            return(retval);
                        }
                        else
                        {
                            return(GetConnectedItems(cur).ToList());
                        }
                    }
                }
            }
        }
Пример #5
0
        protected override void ProcessRecord()
        {
            // TODO: should we include a check for checking the Qualifier and chosen fieldtype?
            ICursorFilter filter;

            switch (_type)
            {
            case FilterType.Field:
                GetCmcFilterCommandDynamicParametersF ctxF = context as GetCmcFilterCommandDynamicParametersF;
                var f = new CursorFilterTypeF(clauseNumber)
                {
                    FieldName = ctxF.FieldName,
                    Qualifier = ctxF.Qualifier,
                    MatchCase = ctxF.MatchCase
                };
                if (f.Qualifier == FilterQualifier.Between)
                {
                    f.FilterBetweenStartValue = ctxF.FieldValue;
                    f.FilterBetweenEndValue   = ctxF.FieldValue2;
                }
                if (f.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1)
                {
                    f.FieldValue = ((GetCmcFilterCommandDynamicParametersF)context).FieldValue;
                }
                filter = f;
                break;

            case FilterType.ConnectionToItem:
                GetCmcFilterCommandDynamicParametersCTI ctxCti = context as GetCmcFilterCommandDynamicParametersCTI;
                var cti = new CursorFilterTypeCTI(clauseNumber)
                {
                    Connection = ctxCti.Connection,
                    Category   = ctxCti.ToCategoryName,
                    Item       = ctxCti.Item
                };
                filter = cti;
                break;

            case FilterType.ConnectionToCategoryField:
                GetCmcFilterCommandDynamicParametersCTCF ctxCtcf = context as GetCmcFilterCommandDynamicParametersCTCF;
                var ctcf = new CursorFilterTypeCTCF(clauseNumber)
                {
                    Connection = ctxCtcf.Connection,
                    Category   = ctxCtcf.ToCategoryName,
                    FieldName  = ctxCtcf.FieldName,
                    Qualifier  = ctxCtcf.Qualifier,
                    MatchCase  = ctxCtcf.MatchCase
                };
                if (ctcf.Qualifier == FilterQualifier.Between)
                {
                    ctcf.FilterBetweenStartValue = ctxCtcf.FieldValue;
                    ctcf.FilterBetweenEndValue   = ctxCtcf.FieldValue2;
                }
                if (ctcf.Qualifier.GetAttribute <FilterValuesAttribute>()?.Number == 1)
                {
                    ctcf.FieldValue = ctxCtcf.FieldValue;
                }
                filter = ctcf;
                break;

            case FilterType.ConnectionToCategoryToItem:
                GetCmcFilterCommandDynamicParametersCTCTI ctxCtcti = context as GetCmcFilterCommandDynamicParametersCTCTI;
                ICursorFilterTypeCTCTI ctcti = new CursorFilterTypeCTCTI(clauseNumber)
                {
                    Connection  = ctxCtcti.Connection,
                    Category    = ctxCtcti.ToCategoryName,
                    Connection2 = ctxCtcti.Connection2,
                    Category2   = ctxCtcti.ToCategoryName2,
                    Item        = ctxCtcti.Item
                };
                filter = ctcti;
                break;

            default:
                throw new System.ArgumentException("Invalid or missing FilterType");
            }
            filter.Except   = this.Except;
            filter.OrFilter = this.OrFilter;
            WriteVerbose($"Resulting filterstring is: {filter}, conjunction is: [{(filter.OrFilter ? "OR" : "AND")}]");
            WriteObject(filter, false);
        }