public void SetUnusedDataListItems(IList <IDataListVerifyPart> parts) { foreach (IDataListItemModel dataListItemModel in ScalarCollection) { dataListItemModel.IsUsed = true; } foreach (IDataListItemModel dataListItemModel in RecsetCollection) { dataListItemModel.IsUsed = true; foreach (IDataListItemModel listItemModel in dataListItemModel.Children) { listItemModel.IsUsed = true; } } IList <IDataListItemModel> tmpRecsets = new List <IDataListItemModel>(); foreach (IDataListVerifyPart part in parts) { if (part.IsScalar) { IDataListItemModel scalarToRemove = ScalarCollection.FirstOrDefault(c => c.Name == part.Field); if (scalarToRemove != null) { scalarToRemove.IsUsed = false; } } else { IDataListItemModel recsetToRemove = RecsetCollection.FirstOrDefault(c => c.Name == part.Recordset && c.IsRecordset); if (string.IsNullOrEmpty(part.Field)) { if (recsetToRemove != null) { recsetToRemove.IsUsed = false; } } else { if (recsetToRemove != null) { IDataListItemModel childToRemove = recsetToRemove.Children.FirstOrDefault(c => c.Name == part.Field && c.IsField); if (childToRemove != null) { childToRemove.IsUsed = false; } } } } } foreach (IDataListItemModel item in tmpRecsets) { RecsetCollection.Remove(item); Validator.Remove(item); } WriteToResourceModel(); Mediator.SendMessage(MediatorMessages.UpdateIntelisense, this); }
public void RemoveDataListItem(IDataListItemModel itemToRemove) { if (itemToRemove == null) { return; } if (!itemToRemove.IsRecordset && !itemToRemove.IsField) { ScalarCollection.Remove(itemToRemove); CheckDataListItemsForDuplicates(DataList); } else if (itemToRemove.IsRecordset) { RecsetCollection.Remove(itemToRemove); CheckDataListItemsForDuplicates(DataList); } else { foreach (var recset in RecsetCollection) { recset.Children.Remove(itemToRemove); CheckDataListItemsForDuplicates(recset.Children); } } }
private bool HasAnyUnusedItems() { if (!HasItems()) { return(false); } bool hasUnused = false; if (ScalarCollection != null) { hasUnused = ScalarCollection.Any(sc => !sc.IsUsed); if (hasUnused) { return(true); } } if (RecsetCollection != null) { hasUnused = RecsetCollection.Any(sc => !sc.IsUsed); if (hasUnused) { return(true); } hasUnused = RecsetCollection.SelectMany(sc => sc.Children).Any(sc => !sc.IsUsed); } return(hasUnused); }
void CheckForEmptyRecordset() { foreach (var recordset in RecsetCollection.Where(c => c.Children.Count == 0 || (c.Children.Count == 1 && string.IsNullOrEmpty(c.Children[0].Name)) && !string.IsNullOrEmpty(c.Name))) { recordset.SetError(StringResources.ErrorMessageEmptyRecordSet); } }
/// <summary> /// Creates the list of data list item view model to bind to. /// </summary> /// <param name="errorString">The error string.</param> /// <returns></returns> public void CreateListsOfIDataListItemModelToBindTo(out string errorString) { errorString = string.Empty; if (!string.IsNullOrEmpty(Resource.DataList)) { ErrorResultTO errors = new ErrorResultTO(); try { if (!string.IsNullOrEmpty(Resource.DataList)) { ConvertDataListStringToCollections(Resource.DataList); } } catch (Exception) { errors.AddError(ErrorResource.InvalidVariableList); } } else { RecsetCollection.Clear(); ScalarCollection.Clear(); ComplexObjectCollection.Clear(); _recordsetHandler.AddRecordSet(); } BaseCollection = new OptomizedObservableCollection <DataListHeaderItemModel>(); DataListHeaderItemModel variableNode = DataListItemModelFactory.CreateDataListHeaderItem("Variable"); if (ScalarCollection.Count == 0) { IScalarItemModel dataListItemModel = DataListItemModelFactory.CreateScalarItemModel(string.Empty); dataListItemModel.IsComplexObject = false; dataListItemModel.AllowNotes = false; ScalarCollection.Add(dataListItemModel); } BaseCollection.Add(variableNode); DataListHeaderItemModel recordsetsNode = DataListItemModelFactory.CreateDataListHeaderItem("Recordset"); if (RecsetCollection.Count == 0) { _recordsetHandler.AddRecordSet(); } BaseCollection.Add(recordsetsNode); DataListHeaderItemModel complexObjectNode = DataListItemModelFactory.CreateDataListHeaderItem("Object"); BaseCollection.Add(complexObjectNode); AddBlankRow(null); BaseCollection[0].Children = ScalarCollection; BaseCollection[1].Children = RecsetCollection; BaseCollection[2].Children = ComplexObjectCollection; WriteToResourceModel(); }
/// <summary> /// Creates the list of data list item view model to bind to. /// </summary> /// <param name="errorString">The error string.</param> /// <returns></returns> public void CreateListsOfIDataListItemModelToBindTo(out string errorString) { errorString = string.Empty; IDataListCompiler compiler = DataListFactory.CreateDataListCompiler(); if (!string.IsNullOrEmpty(Resource.DataList)) { ErrorResultTO errors = new ErrorResultTO(); try { IBinaryDataList binarnyDl = CreateBinaryDataListFromXmlData(Resource.DataList, out errors); if (!errors.HasErrors()) { ConvertBinaryDataListToListOfIDataListItemModels(binarnyDl, out errorString); } else { string errorMessage = errors.FetchErrors().Aggregate(string.Empty, (current, error) => current + error); throw new Exception(errorMessage); } if (binarnyDl != null) { compiler.ForceDeleteDataListByID(binarnyDl.UID); } } catch (Exception) { errors.AddError("Invalid variable list. Please insure that your variable list has valid entries"); } } else { RecsetCollection.Clear(); AddRecordSet(); ScalarCollection.Clear(); } BaseCollection = new OptomizedObservableCollection <DataListHeaderItemModel>(); DataListHeaderItemModel varNode = DataListItemModelFactory.CreateDataListHeaderItem("Variable"); if (ScalarCollection.Count == 0) { var dataListItemModel = DataListItemModelFactory.CreateDataListModel(string.Empty); ScalarCollection.Add(dataListItemModel); } varNode.Children = ScalarCollection; BaseCollection.Add(varNode); //AddRecordsetNamesIfMissing(); DataListHeaderItemModel recordsetsNode = DataListItemModelFactory.CreateDataListHeaderItem("Recordset"); if (RecsetCollection.Count == 0) { AddRecordSet(); } recordsetsNode.Children = RecsetCollection; BaseCollection.Add(recordsetsNode); }
void CheckForFixedEmptyRecordsets() { foreach (var recset in RecsetCollection.Where(c => c.ErrorMessage == StringResources.ErrorMessageEmptyRecordSet && (c.Children.Count >= 1 && !string.IsNullOrEmpty(c.Children[0].Name)))) { if (recset.ErrorMessage != StringResources.ErrorMessageDuplicateRecordset || recset.ErrorMessage != StringResources.ErrorMessageInvalidChar) { recset.RemoveError(); } } }
/// <summary> /// Adds a record set. /// </summary> private void AddRecordSet() { IDataListItemModel recset = DataListItemModelFactory.CreateDataListModel(string.Empty); IDataListItemModel childItem = DataListItemModelFactory.CreateDataListModel(string.Empty); recset.IsExpanded = false; childItem.Parent = recset; recset.Children.Add(childItem); RecsetCollection.Add(recset); }
public void RemoveBlankRecordsets() { IList <IDataListItemModel> blankList = RecsetCollection.Where(c => c.IsBlank && c.Children.Count == 1 && c.Children[0].IsBlank).ToList(); if (blankList.Count > 1) { RecsetCollection.Remove(blankList.First()); Validator.Remove(blankList.First()); } }
public void AddMissingDataListItems(IList <IDataListVerifyPart> parts) { var tmpRecsetList = new List <IRecordSetItemModel>(); foreach (var part in parts) { if (part.IsJson) { _complexObjectHandler.AddComplexObject(part); } else { if (part.IsScalar) { _scalarHandler.AddMissingScalarParts(part); } else { var recsetToAddTo = RecsetCollection.FirstOrDefault(c => c.DisplayName == part.Recordset); var tmpRecset = tmpRecsetList.FirstOrDefault(c => c.DisplayName == part.Recordset); if (recsetToAddTo != null) { _recordsetHandler.AddMissingRecordSetPart(recsetToAddTo, part); } else if (tmpRecset != null) { _recordsetHandler.AddMissingTempRecordSet(part, tmpRecset); } else { var recset = DataListItemModelFactory.CreateRecordSetItemModel(part.Recordset, part.Description); tmpRecsetList.Add(recset); } } } } _recordsetHandler.AddMissingTempRecordSetList(tmpRecsetList); _scalarHandler.RemoveBlankScalars(); _recordsetHandler.RemoveBlankRecordsets(); _recordsetHandler.RemoveBlankRecordsetFields(); _complexObjectHandler.RemoveBlankComplexObjects(); if (parts.Count > 0) { AddBlankRow(null); } UpdateIntellisenseList(); WriteToResourceModel(); }
/// <summary> /// Sorts the recordsets. /// </summary> private void SortRecset() { IList <IDataListItemModel> newRecsetCollection = RecsetCollection.OrderBy(c => c.DisplayName).ToList(); RecsetCollection.Clear(); foreach (IDataListItemModel item in newRecsetCollection.Where(c => !c.IsBlank)) { RecsetCollection.Add(item); } AddRecordSet(); }
/// <summary> /// Sorts the recordsets. /// </summary> private void SortRecset(bool ascending) { IList <IDataListItemModel> newRecsetCollection = @ascending ? RecsetCollection.OrderBy(c => c.DisplayName).ToList() : RecsetCollection.OrderByDescending(c => c.DisplayName).ToList(); RecsetCollection.Clear(); foreach (var item in newRecsetCollection.Where(c => !c.IsBlank)) { RecsetCollection.Add(item); } AddRecordSet(); }
public void RemoveDataListItem(IDataListItemModel itemToRemove) { if (itemToRemove == null) { return; } var complexObj = itemToRemove as IComplexObjectItemModel; if (complexObj != null) { var complexObjectItemModels = complexObj.Children; var allChildren = complexObjectItemModels.Flatten(model => model.Children).ToList(); var notUsedItems = allChildren.Where(x => !x.IsUsed).ToList(); foreach (var complexObjectItemModel in notUsedItems) { RemoveUnusedChildComplexObjects(complexObj, complexObjectItemModel); } if (complexObj.Children.Count == 0) { ComplexObjectCollection.Remove(complexObj); } else { complexObj.IsUsed = true; } } if (itemToRemove is IScalarItemModel) { var item = itemToRemove as IScalarItemModel; ScalarCollection.Remove(item); CheckDataListItemsForDuplicates(DataList); } else if (itemToRemove is IRecordSetItemModel) { var item = itemToRemove as IRecordSetItemModel; RecsetCollection.Remove(item); CheckDataListItemsForDuplicates(DataList); } else { foreach (var recset in RecsetCollection) { var item = itemToRemove as IRecordSetFieldItemModel; recset.Children.Remove(item); CheckDataListItemsForDuplicates(recset.Children); } } FindUnusedAndMissingCommand.RaiseCanExecuteChanged(); DeleteCommand.RaiseCanExecuteChanged(); }
void SetRecordSetItemsAsUsed() { if (RecsetCollection.Any(rc => rc.IsUsed == false)) { foreach (var dataListItemModel in RecsetCollection) { dataListItemModel.IsUsed = true; foreach (var listItemModel in dataListItemModel.Children) { listItemModel.IsUsed = true; } } } }
private bool HasAnyUnusedItems() { if (!HasItems()) { return(false); } bool hasUnused; if (ScalarCollection != null) { hasUnused = ScalarCollection.Any(sc => !sc.IsUsed); if (hasUnused) { DeleteCommand.RaiseCanExecuteChanged(); return(true); } } if (RecsetCollection != null) { hasUnused = RecsetCollection.Any(sc => !sc.IsUsed); if (!hasUnused) { hasUnused = RecsetCollection.SelectMany(sc => sc.Children).Any(sc => !sc.IsUsed); } if (hasUnused) { DeleteCommand.RaiseCanExecuteChanged(); return(true); } } if (ComplexObjectCollection != null) { hasUnused = ComplexObjectCollection.Any(sc => !sc.IsUsed); if (hasUnused) { DeleteCommand.RaiseCanExecuteChanged(); return(true); } } return(false); }
private string GetDataListString() { StringBuilder result = new StringBuilder("<" + RootTag + ">"); foreach (var recSet in RecsetCollection.Where(model => !string.IsNullOrEmpty(model.DisplayName))) { IEnumerable <IDataListItemModel> filledRecordSet = recSet.Children.Where(c => !c.IsBlank && !c.HasError); IList <Dev2Column> cols = filledRecordSet.Select(child => DataListFactory.CreateDev2Column(child.DisplayName, child.Description, child.IsEditable, child.ColumnIODirection)).ToList(); AddItemToBuilder(result, recSet); result.Append(">"); foreach (var col in cols) { result.AppendFormat("<{0} {1}=\"{2}\" {3}=\"{4}\" {5}=\"{6}\" />", col.ColumnName , Description , col.ColumnDescription , IsEditable , col.IsEditable , GlobalConstants.DataListIoColDirection , col.ColumnIODirection); } result.Append("</"); result.Append(recSet.DisplayName); result.Append(">"); } IList <IScalarItemModel> filledScalars = ScalarCollection?.Where(scalar => !scalar.IsBlank && !scalar.HasError).ToList() ?? new List <IScalarItemModel>(); foreach (var scalar in filledScalars) { AddItemToBuilder(result, scalar); result.Append("/>"); } var complexObjectItemModels = ComplexObjectCollection.Where(model => !string.IsNullOrEmpty(model.DisplayName) && !model.HasError); foreach (var complexObjectItemModel in complexObjectItemModels) { _complexObjectHandler.AddComplexObjectsToBuilder(result, complexObjectItemModel); } result.Append("</" + RootTag + ">"); return(result.ToString()); }
public void ConvertDataListStringToCollections(string dataList) { RecsetCollection.Clear(); ScalarCollection.Clear(); ComplexObjectCollection.Clear(); try { var xDoc = new XmlDocument(); xDoc.LoadXml(dataList); if (xDoc.DocumentElement == null) { return; } var children = xDoc.DocumentElement.ChildNodes; foreach (XmlNode child in children) { if (DataListUtil.IsSystemTag(child.Name)) { continue; } if (IsJsonAttribute(child)) { _complexObjectHandler.AddComplexObjectFromXmlNode(child, null); } else { if (child.HasChildNodes) { _recordsetHandler.AddRecordSets(child); } else { AddScalars(child); } } } } catch (Exception e) { Dev2Logger.Error(e); } }
private void AddRowToRecordsets() { IList <IDataListItemModel> blankList = RecsetCollection.Where(c => c.IsBlank && c.Children.Count == 1 && c.Children[0].IsBlank).ToList(); if (blankList.Count == 0) { AddRecordSet(); } foreach (IDataListItemModel recset in RecsetCollection) { IList <IDataListItemModel> blankChildList = recset.Children.Where(c => c.IsBlank).ToList(); if (blankChildList.Count == 0) { IDataListItemModel newChild = DataListItemModelFactory.CreateDataListModel(string.Empty); newChild.Parent = recset; recset.Children.Add(newChild); recset.Validator.Add(newChild); } } }
public void RemoveUnusedDataListItems() { var unusedScalars = ScalarCollection.Where(c => c.IsUsed == false).ToList(); if (unusedScalars.Any()) { foreach (var dataListItemModel in unusedScalars) { ScalarCollection.Remove(dataListItemModel); } } var unusedRecordsets = RecsetCollection.Where(c => c.IsUsed == false).ToList(); if (unusedRecordsets.Any()) { foreach (var dataListItemModel in unusedRecordsets) { RecsetCollection.Remove(dataListItemModel); } } foreach (var recset in RecsetCollection) { if (recset.Children.Count > 0) { var unusedRecsetChildren = recset.Children.Where(c => c.IsUsed == false).ToList(); if (unusedRecsetChildren.Any()) { foreach (var unusedRecsetChild in unusedRecsetChildren) { recset.Children.Remove(unusedRecsetChild); } } } } WriteToResourceModel(); EventPublisher.Publish(new UpdateIntellisenseMessage()); }
/// <summary> /// Converts a binary data list to list a data list item view models. /// </summary> /// <param name="dataListToConvert">The data list to convert.</param> /// <param name="errorString">The error string.</param> /// <returns></returns> private void ConvertBinaryDataListToListOfIDataListItemModels(IBinaryDataList dataListToConvert, out string errorString) { errorString = string.Empty; RecsetCollection.Clear(); ScalarCollection.Clear(); IList <IBinaryDataListEntry> listOfEntries = dataListToConvert.FetchAllEntries(); foreach (var entry in listOfEntries) { if (entry.IsRecordset) { var recset = DataListItemModelFactory.CreateDataListModel(entry.Namespace, entry.Description, entry.ColumnIODirection); recset.IsEditable = entry.IsEditable; foreach (var col in entry.Columns) { var child = DataListItemModelFactory.CreateDataListModel(col.ColumnName, col.ColumnDescription, col.ColumnIODirection); child.Parent = recset; child.IsEditable = col.IsEditable; recset.Children.Add(child); } RecsetCollection.Add(recset); } else { var scalar = DataListItemModelFactory.CreateDataListModel(entry.Namespace, entry.Description, entry.ColumnIODirection); scalar.IsEditable = entry.IsEditable; ScalarCollection.Add(scalar); } } }
public void RemoveDataListItem(IDataListItemModel itemToRemove) { if (itemToRemove != null) { if (!itemToRemove.IsRecordset && !itemToRemove.IsField) { ScalarCollection.Remove(itemToRemove); Validator.Remove(itemToRemove); } else if (itemToRemove.IsRecordset) { RecsetCollection.Remove(itemToRemove); Validator.Remove(itemToRemove); } else { foreach (IDataListItemModel recset in RecsetCollection) { recset.Children.Remove(itemToRemove); recset.Validator.Remove(itemToRemove); } } } }
public void AddMissingDataListItems(IList <IDataListVerifyPart> parts, bool async) { IList <IDataListItemModel> tmpRecsetList = new List <IDataListItemModel>(); foreach (IDataListVerifyPart part in parts) { if (part.IsScalar) { IDataListItemModel scalar = DataListItemModelFactory.CreateDataListModel(part.Field, part.Description, enDev2ColumnArgumentDirection.None); ScalarCollection.Insert(ScalarCollection.Count - 1, scalar); Validator.Add(scalar); } else { IDataListItemModel recsetToAddTo = RecsetCollection.FirstOrDefault(c => c.Name == part.Recordset && c.IsRecordset); IDataListItemModel tmpRecset = tmpRecsetList.FirstOrDefault(c => c.Name == part.Recordset); if (recsetToAddTo != null) { IDataListItemModel child = DataListItemModelFactory.CreateDataListModel(part.Field, part.Description, recsetToAddTo); if (recsetToAddTo.Children.Count > 0) { recsetToAddTo.Children.Insert(recsetToAddTo.Children.Count - 1, child); } else { recsetToAddTo.Children.Add(child); } recsetToAddTo.Validator.Add(child); } else if (tmpRecset != null) { IDataListItemModel child = DataListItemModelFactory.CreateDataListModel(part.Field, part.Description, tmpRecset); tmpRecset.Children.Add(child); tmpRecset.Validator.Add(child); } else { IDataListItemModel recset = DataListItemModelFactory.CreateDataListModel(part.Recordset, part.Description, enDev2ColumnArgumentDirection.None); tmpRecsetList.Add(recset); } } } foreach (IDataListItemModel item in tmpRecsetList) { if (item.Children.Count == 0) { item.Children.Add(DataListItemModelFactory.CreateDataListModel(string.Empty, string.Empty, item)); } if (RecsetCollection.Count > 0) { RecsetCollection.Insert(RecsetCollection.Count - 1, item); } else { RecsetCollection.Add(item); } Validator.Add(item); } WriteToResourceModel(); Mediator.SendMessage(MediatorMessages.UpdateIntelisense, this); RemoveBlankScalars(); RemoveBlankRecordsets(); RemoveBlankRecordsetFields(); AddBlankRow(null); }
public void AddMissingDataListItems(IList <IDataListVerifyPart> parts, bool async) { IList <IDataListItemModel> tmpRecsetList = new List <IDataListItemModel>(); foreach (var part in parts) { if (part.IsScalar) { if (ScalarCollection.FirstOrDefault(c => c.Name == part.Field) == null) { IDataListItemModel scalar = DataListItemModelFactory.CreateDataListModel(part.Field, part.Description, enDev2ColumnArgumentDirection .None); if (ScalarCollection.Count > ScalarCollection.Count - 1) { ScalarCollection.Insert(ScalarCollection.Count - 1, scalar); } else { ScalarCollection.Insert(ScalarCollection.Count, scalar); } } } else { IDataListItemModel recsetToAddTo = RecsetCollection. FirstOrDefault(c => c.Name == part.Recordset && c.IsRecordset); IDataListItemModel tmpRecset = tmpRecsetList.FirstOrDefault(c => c.Name == part.Recordset); if (recsetToAddTo != null) { if (recsetToAddTo.Children.FirstOrDefault(c => c.Name == part.Field) == null) { IDataListItemModel child = DataListItemModelFactory.CreateDataListModel(part.Field, part.Description, recsetToAddTo); if (recsetToAddTo.Children.Count > 0) { recsetToAddTo.Children.Insert(recsetToAddTo.Children.Count - 1, child); } else { recsetToAddTo.Children.Add(child); } } } else if (tmpRecset != null) { IDataListItemModel child = DataListItemModelFactory.CreateDataListModel (part.Field, part.Description, tmpRecset); child.Name = part.Recordset + "()." + part.Field; tmpRecset.Children.Add(child); } else { IDataListItemModel recset = DataListItemModelFactory.CreateDataListModel (part.Recordset, part.Description, enDev2ColumnArgumentDirection.None); tmpRecsetList.Add(recset); } } } foreach (var item in tmpRecsetList) { if (item.Children.Count == 0) { item.Children.Add(DataListItemModelFactory.CreateDataListModel(string.Empty, string.Empty, item)); } if (RecsetCollection.Count > 0) { RecsetCollection.Insert(RecsetCollection.Count - 1, item); } else { RecsetCollection.Add(item); } } WriteToResourceModel(); EventPublisher.Publish(new UpdateIntellisenseMessage()); RemoveBlankScalars(); RemoveBlankRecordsets(); RemoveBlankRecordsetFields(); if (parts.Count > 0) { AddBlankRow(null); } }
void ProcessRecordSetPart(IDataListVerifyPart part) { var recsetsToRemove = RecsetCollection.Where(c => c.Name == part.Recordset && c.IsRecordset); recsetsToRemove.ToList().ForEach(recsetToRemove => ProcessFoundRecordSets(part, recsetToRemove)); }