/// <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); } }
/// <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); } }
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)); } }
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); }
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); }
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); }
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); } } }); }
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)); } }
void ProcessRecordSetFields(IParseTO payload, bool addCompleteParts, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1) => _recordSetUtil.ProcessRecordSetFields(payload, addCompleteParts, result, t1);
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);
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)); } } } }
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); }
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); }
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)); } } }
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)); } } }
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)); } } }
static void OpenRecordsetItem(IParseTO payload, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1) => _recordSetUtil.OpenRecordsetItem(payload, result, t1);
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); }
static void ProcessNonRecordsetFields(IParseTO payload, IList <IIntellisenseResult> result, IDev2DataLanguageIntellisensePart t1) => _recordSetUtil.ProcessNonRecordsetFields(payload, result, t1);
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);
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); }
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)); } }