Exemplo n.º 1
0
        /// <summary>
        /// Creates the intellisense result.
        /// </summary>
        /// <param name="rs">The rs.</param>
        /// <param name="cols">The cols.</param>
        private void CreateIntelliseneResult(string rs, IEnumerable <Dev2Column> cols)
        {
            if (!_intellisensedNamespace.Contains(rs))
            {
                IList <IDev2DataLanguageIntellisensePart> children = cols.Select(c => DataListFactory.CreateIntellisensePart(c.ColumnName, string.Empty)).ToList();

                IDev2DataLanguageIntellisensePart p = DataListFactory.CreateIntellisensePart(rs, string.Empty, children);
                _intellisenseParts.Add(p);
                _intellisensedNamespace.Add(rs);
            }
            else
            {
                var foundExistingPart = _intellisenseParts.FirstOrDefault(part => part.Name == rs);
                if (foundExistingPart != null)
                {
                    _intellisenseParts.Remove(foundExistingPart);
                    _intellisensedNamespace.Remove(rs);
                }

                IList <IDev2DataLanguageIntellisensePart> children = cols.Select(c => DataListFactory.CreateIntellisensePart(c.ColumnName, string.Empty)).ToList();
                IDev2DataLanguageIntellisensePart         p        = DataListFactory.CreateIntellisensePart(rs, string.Empty, children);
                _intellisenseParts.Add(p);
                _intellisensedNamespace.Add(rs);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Creates the intellisene result.
 /// </summary>
 /// <param name="field">The field.</param>
 /// <returns></returns>
 private void CreateIntelliseneResult(string field)
 {
     if (!_intellisensedNamespace.Contains(field) && field.IndexOf(GlobalConstants.SystemTagNamespaceSearch, StringComparison.Ordinal) < 0)
     {
         IDev2DataLanguageIntellisensePart p = DataListFactory.CreateIntellisensePart(field, string.Empty);
         _intellisenseParts.Add(p);
         _intellisensedNamespace.Add(field);
     }
 }
Exemplo n.º 3
0
        static void AddFoundItems(IParseTO payload, IDev2DataLanguageIntellisensePart t, IList <IIntellisenseResult> result)
        {
            if (payload.Parent != null && payload.Parent.Payload.IndexOf(DataListUtil.RecordsetIndexOpeningBracket, StringComparison.Ordinal) >= 0)
            {
                var part = IntellisenseFactory.CreateDataListValidationScalarPart(t.Name, !string.IsNullOrEmpty(t.Description) ? t.Description : " Use row at this index");

                result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
            }
            else
            {
                IDataListVerifyPart part;
                if (t.Name.Contains('(') && t.Name.Contains(')'))
                {
                    part = IntellisenseFactory.CreateDataListValidationScalarPart(t.Name, t.Description);
                }
                else
                {
                    part = IntellisenseFactory.CreateDataListValidationScalarPart(t.Name, t.Description);
                }

                result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
            }
        }
Exemplo n.º 4
0
        static bool HandleScalarMatches(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, string search, IDev2DataLanguageIntellisensePart t1, string match)
        {
            var emptyOk = false;

            if (search != match || (search == match && addCompleteParts))
            {
                if (payload.Parent != null && payload.Parent.Payload.IndexOf(DataListUtil.RecordsetIndexOpeningBracket, StringComparison.Ordinal) >= 0)
                {
                    var p = IntellisenseFactory.CreateDataListValidationScalarPart(t1.Name);
                    result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, p, " / Select a specific row "));
                }
                else
                {
                    var p = IntellisenseFactory.CreateDataListValidationScalarPart(t1.Name);
                    result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, p, t1.Description));
                }
            }
            else
            {
                emptyOk = true;
            }
            return(emptyOk);
        }
Exemplo n.º 5
0
        static bool ProcessForChild(IParseTO payload, IList <IDev2DataLanguageIntellisensePart> refParts, IList <IIntellisenseResult> result, string search, IDev2DataLanguageIntellisensePart t1)
        {
            var emptyOk        = false;
            var isHangingChild = payload.Child != null && payload.Child.HangingOpen;

            if (!payload.IsLeaf && !isHangingChild)
            {
                OpenRecordsetItem(payload, result, t1);
            }
            else
            {
                if (payload.Child == null)
                {
                    IDataListVerifyPart prt;
                    foreach (IDev2DataLanguageIntellisensePart t in refParts.Where(t => t.Children == null))
                    {
                        prt = IntellisenseFactory.CreateDataListValidationRecordsetPart(search, "", " / Select a specific row", DataListUtil.OpeningSquareBrackets + t.Name + DataListUtil.ClosingSquareBrackets);
                        result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, prt, prt.Description));
                    }
                    prt = IntellisenseFactory.CreateDataListValidationRecordsetPart(search, "", " / Reference all rows in the Recordset ", "*");
                    result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, prt, prt.Description));
                }
                emptyOk = true;
            }
            return(emptyOk);
        }
Exemplo n.º 6
0
        bool MatchVariablesWithNoFields(IParseTO payload, IList <IDev2DataLanguageIntellisensePart> refParts, bool addCompleteParts, IList <IIntellisenseResult> result, bool isRs, string rawSearch, string search, bool emptyOk, string[] parts, IDev2DataLanguageIntellisensePart t1)
        {
            var match = t1.Name.ToLower();

            if (match.Contains(search) && (match != search))
            {
                if (t1.Children != null && t1.Children.Count > 0)
                {
                    ProcessRecordSetFields(payload, addCompleteParts, result, t1);
                }
                else
                {
                    ProcessNonRecordsetFields(payload, result, t1);
                }
            }
            else if (match == search && isRs)
            {
                emptyOk = rawSearch.Contains(DataListUtil.RecordsetIndexOpeningBracket) && rawSearch.Contains(DataListUtil.RecordsetIndexClosingBracket) ? RecordsetMatch(payload, addCompleteParts, result, rawSearch, search, emptyOk, parts, t1) : ProcessForChild(payload, refParts, result, search, t1);
            }
            else
            {
                if (match == search && !isRs)
                {
                    if (t1.Children != null && t1.Children.Count > 0)
                    {
                        ReturnFieldMatchForRecordSet(payload, result, t1);
                    }
                    else
                    {
                        emptyOk = HandleScalarMatches(payload, addCompleteParts, result, search, t1, match);
                    }
                }
            }
            return(emptyOk);
        }
Exemplo n.º 7
0
        static void MatchChildren(IParseTO payload, IList <IIntellisenseResult> result, string search, IDev2DataLanguageIntellisensePart pt)
        {
            pt.Children?.ToList().ForEach(child =>
            {
                var match = child.Name.ToLower();

                if (match.Contains(search))
                {
                    var resultPt = IntellisenseFactory.CreateDataListValidationRecordsetPart(pt.Name, child.Name, pt.Description + " / " + child.Description + " Select this recordset field field");
                    var tmpChild = IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, resultPt, resultPt.Description);

                    if (result
                        .ToList()
                        .Find(r => r.Option.DisplayValue == tmpChild.Option.DisplayValue) == null)
                    {
                        result.Add(tmpChild);
                    }
                }
            });
        }
Exemplo n.º 8
0
        public void ProcessNonRecordsetFields(IParseTO payload, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1)
        {
            if (payload.Parent != null && payload.Parent.Payload.IndexOf(DataListUtil.RecordsetIndexOpeningBracket, StringComparison.Ordinal) >= 0)
            {
                var part = IntellisenseFactory.CreateDataListValidationScalarPart(t1.Name, t1.Description + " / Use row at this index");

                result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
            }
            else
            {
                IDataListVerifyPart part;
                part = t1.Name.Contains('(') && t1.Name.Contains(')') ? IntellisenseFactory.CreateDataListValidationRecordsetPart(string.Empty, t1.Name, true) : IntellisenseFactory.CreateDataListValidationScalarPart(t1.Name, t1.Description);

                result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
            }
        }
Exemplo n.º 9
0
 void ProcessRecordSetFields(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1)
 => _recordSetUtil.ProcessRecordSetFields(payload, addCompleteParts, result, t1);
Exemplo n.º 10
0
 static bool RecordsetMatch(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, string rawSearch, string search, bool emptyOk, string[] parts, IDev2DataLanguageIntellisensePart t1)
 => _recordSetUtil.RecordsetMatch(payload, addCompleteParts, result, rawSearch, search, emptyOk, parts, t1);
Exemplo n.º 11
0
        public void OpenRecordsetItem(IParseTO payload, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1)
        {
            if (payload.Child != null)
            {
                var indx = payload.Child.Payload;
                var end  = indx.IndexOf(DataListUtil.RecordsetIndexClosingBracket, StringComparison.Ordinal);
                if (end > 0)
                {
                    // malformed index -- correct it
                    indx = indx.Substring(0, end);
                }

                indx = DataListUtil.AddBracketsToValueIfNotExist(indx);

                var rs = payload.Payload;
                end = rs.IndexOf(DataListUtil.RecordsetIndexOpeningBracket, StringComparison.Ordinal);
                if (end > 0)
                {
                    rs = rs.Substring(0, end);
                }

                var prt = IntellisenseFactory.CreateDataListValidationRecordsetPart(rs, "", " / Select a specific row", indx);

                result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, prt, prt.Description));

                // now add all fields to collection too ;)
                if (t1.Children != null)
                {
                    var cParts = t1.Children;
                    foreach (IDev2DataLanguageIntellisensePart t in cParts)
                    {
                        prt = IntellisenseFactory.CreateDataListValidationRecordsetPart(rs, t.Name, " / Select a specific row", indx);
                        result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, prt, prt.Description));
                    }
                }
            }
        }
Exemplo n.º 12
0
 public bool RecordsetMatch(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, string rawSearch, string search, bool emptyOk, string[] parts, IDev2DataLanguageIntellisensePart t1)
 {
     if (payload.HangingOpen)
     {
         ProcessRecordSetMatch(payload, result, rawSearch, search, t1);
     }
     else
     {
         // add in recordset with index if around
         emptyOk = AddRecordSetIndex(payload, addCompleteParts, result, parts, t1, emptyOk);
     }
     return(emptyOk);
 }
Exemplo n.º 13
0
        public bool AddRecordSetIndex(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, string[] parts, IDev2DataLanguageIntellisensePart t1, bool emptyOk)
        {
            if (addCompleteParts)
            {
                var idx    = DataListUtil.ExtractIndexRegionFromRecordset(parts[0]);
                var recset = DataListUtil.ExtractRecordsetNameFromValue(parts[0]);

                var p = IntellisenseFactory.CreateDataListValidationRecordsetPart(recset, string.Empty, t1.Description, payload.Child != null ? payload.Child.Payload : idx);

                result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, p, p.Description));
            }
            else
            {
                emptyOk = true;
            }
            return(emptyOk);
        }
Exemplo n.º 14
0
        public void ProcessRecordSetMatch(IParseTO payload, IList <IIntellisenseResult> result, string rawSearch, string search, IDev2DataLanguageIntellisensePart t1)
        {
            // only process if it is an open region
            // we need to add all children
            string idx;

            idx = !payload.IsLeaf && !payload.Child.HangingOpen ? DataListUtil.OpeningSquareBrackets + payload.Child.Payload + DataListUtil.ClosingSquareBrackets : DataListUtil.ExtractIndexRegionFromRecordset(rawSearch);
            // add general closed recordset
            var rsName = search;

            if (idx == string.Empty)
            {
                rsName = payload.Payload;
            }
            var part = IntellisenseFactory.CreateDataListValidationRecordsetPart(rsName, "", t1.Description + " / Select a specific row", idx);

            result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));

            var children = t1.Children;

            if (children != null)
            {
                foreach (IDev2DataLanguageIntellisensePart t in children)
                {
                    part = IntellisenseFactory.CreateDataListValidationRecordsetPart(rsName, t.Name, t.Description + " / Select a specific field at a specific row", idx);
                    result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
                }
            }
        }
Exemplo n.º 15
0
        static void ReturnFieldMatchForRecordSet(IParseTO payload, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1)
        {
            var part = IntellisenseFactory.CreateDataListValidationRecordsetPart(t1.Name, "", t1.Description);

            result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
            var children = t1.Children;

            if (children != null)
            {
                foreach (IDev2DataLanguageIntellisensePart t in children)
                {
                    part = IntellisenseFactory.CreateDataListValidationRecordsetPart(t1.Name, t.Name, t.Description + " / Use a field of the Recordset");
                    result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
                }
            }
        }
Exemplo n.º 16
0
        static void AddFieldOptions(IParseTO payload, string search, bool addCompleteParts, string match, IDev2DataLanguageIntellisensePart t, IList <IIntellisenseResult> result)
        {
            IDataListVerifyPart part;

            if (!addCompleteParts && match.Contains(search))
            {
                part = IntellisenseFactory.CreateDataListValidationScalarPart(t.Name + DataListUtil.RecordsetIndexOpeningBracket, !string.IsNullOrEmpty(t.Description) ? t.Description : " Select a specific row");

                result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));

                foreach (IDev2DataLanguageIntellisensePart t1 in t.Children)
                {
                    part = IntellisenseFactory.CreateDataListValidationRecordsetPart(t.Name, t1.Name, !string.IsNullOrEmpty(t1.Description) ? t1.Description : " Input: Use last row, Result: Append new record");
                    result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
                    part = IntellisenseFactory.CreateDataListValidationRecordsetPart(t.Name, t1.Name, !string.IsNullOrEmpty(t1.Description) ? t1.Description : " Use all the rows", "*");
                    result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
                }
                return;
            }
            foreach (IDev2DataLanguageIntellisensePart t1 in t.Children)
            {
                if (t1.Name.Contains(search))
                {
                    part = IntellisenseFactory.CreateDataListValidationRecordsetPart(t.Name, t1.Name, !string.IsNullOrEmpty(t1.Description) ? t1.Description : " Input: Use last row, Result: Append new record");
                    result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
                    part = IntellisenseFactory.CreateDataListValidationRecordsetPart(t.Name, t1.Name, !string.IsNullOrEmpty(t1.Description) ? t1.Description : " Use all the rows", "*");
                    result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
                }
            }
        }
Exemplo n.º 17
0
 static void OpenRecordsetItem(IParseTO payload, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1)
 => _recordSetUtil.OpenRecordsetItem(payload, result, t1);
Exemplo n.º 18
0
        string ProcessValidPartNameContainingFields(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, string[] parts, string search, bool emptyOk, string partName, IDev2DataLanguageIntellisensePart recordsetPart, string display)
        {
            if (partName.IndexOf(DataListUtil.RecordsetIndexOpeningBracket, StringComparison.Ordinal) >= 0)
            {
                partName = partName.Substring(0, partName.IndexOf(DataListUtil.RecordsetIndexOpeningBracket, StringComparison.Ordinal));
            }

            if (recordsetPart == null)
            {
                var part = IntellisenseFactory.CreateDataListValidationRecordsetPart(partName, parts[1], "");
                result.Add(IntellisenseFactory.CreateErrorResult(payload.StartIndex, parts[0].Length - 1, part, DataListUtil.OpeningSquareBrackets + display + "]] does not exist in your variable list", enIntellisenseErrorCode.NeitherRecordsetNorFieldFound, !payload.HangingOpen));
            }
            else
            {
                if (recordsetPart.Children != null && recordsetPart.Children.Count > 0 && ProcessFieldsForRecordSet(payload, addCompleteParts, result, parts, out search, out emptyOk, display, recordsetPart, partName))
                {
                    return(search);
                }
            }

            if (result.Count == 0 && !emptyOk)
            {
                var part = IntellisenseFactory.CreateDataListValidationRecordsetPart(parts[0], search);
                result.Add(char.IsNumber(search[0]) ? IntellisenseFactory.CreateErrorResult(payload.StartIndex, parts[0].Length - 1, part, "Invalid Expression: Recordset Field [ " + search + " ] starts with a number", enIntellisenseErrorCode.SyntaxError, !payload.HangingOpen) : IntellisenseFactory.CreateErrorResult(parts[0].Length, payload.EndIndex, part, "Recordset Field [ " + search + " ] does not exist for [ " + parts[0] + " ]", enIntellisenseErrorCode.FieldNotFound, !payload.HangingOpen));
            }
            return(search);
        }
Exemplo n.º 19
0
 static void ProcessNonRecordsetFields(IParseTO payload, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1)
 => _recordSetUtil.ProcessNonRecordsetFields(payload, result, t1);
Exemplo n.º 20
0
 bool ProcessFieldsForRecordSet(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, string[] parts, out string search, out bool emptyOk, string display, IDev2DataLanguageIntellisensePart recordsetPart, string partName)
 => _parserHelper.ProcessFieldsForRecordSet(payload, addCompleteParts, result, parts, out search, out emptyOk, display, recordsetPart, partName);
Exemplo n.º 21
0
        public bool ProcessFieldsForRecordSet(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, string[] parts, out string search, out bool emptyOk, string display, IDev2DataLanguageIntellisensePart recordsetPart, string partName)
        {
            emptyOk = false;
            search  = "";
            if (parts[0].IndexOf(DataListUtil.RecordsetIndexClosingBracket, StringComparison.Ordinal) <= 0)
            {
                // its an error ;)
                var part = IntellisenseFactory.CreateDataListValidationRecordsetPart(parts[0], "." + parts[1], true);
                result.Add(IntellisenseFactory.CreateErrorResult(payload.StartIndex, payload.EndIndex, part, " [[" + display + "]] is a malformed recordset", enIntellisenseErrorCode.InvalidRecordsetNotation, !payload.HangingOpen));
            }
            else
            {
                search = parts[1].ToLower();
                var intellisenseResult = ValidateName(search, "Recordset field");
                if (intellisenseResult != null)
                {
                    result.Add(intellisenseResult);
                    return(true);
                }
                foreach (IDev2DataLanguageIntellisensePart t in recordsetPart.Children)
                {
                    var match = t.Name.ToLower();
                    if (match.Contains(search) && ((match != search) || (match == search && addCompleteParts)))
                    {
                        var index = payload.Child != null ? payload.Child.Payload : DataListUtil.ExtractIndexRegionFromRecordset(parts[0]);

                        var part = IntellisenseFactory.CreateDataListValidationRecordsetPart(partName, t.Name, t.Description, index);
                        result.Add(IntellisenseFactory.CreateSelectableResult(parts[0].Length, payload.EndIndex, part, part.Description));
                    }
                    else
                    {
                        ShouldUpdateEmptyOk(search, ref emptyOk, match);
                    }
                }
            }
            return(false);
        }
Exemplo n.º 22
0
        public void ProcessRecordSetFields(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1)
        {
            IDataListVerifyPart part;

            // only add hanging open if we want incomplete parts
            if (!addCompleteParts)
            {
                part = IntellisenseFactory.CreateDataListValidationScalarPart(t1.Name + DataListUtil.RecordsetIndexOpeningBracket, t1.Description + " / Select a specific row or Close");

                result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
            }

            part = IntellisenseFactory.CreateDataListValidationRecordsetPart(t1.Name, "", t1.Description + " / Takes all rows ", "*");
            result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));

            part = IntellisenseFactory.CreateDataListValidationRecordsetPart(t1.Name, "", t1.Description + " / Take last row");

            result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
            // add all children for them
            foreach (IDev2DataLanguageIntellisensePart t in t1.Children)
            {
                part = IntellisenseFactory.CreateDataListValidationRecordsetPart(t1.Name, t.Name, t1.Description + " / Use the field of a Recordset");
                result.Add(IntellisenseFactory.CreateSelectableResult(payload.StartIndex, payload.EndIndex, part, part.Description));
            }
        }