protected bool EnterChoiceContainer(Pair pair, PairCollection <Entity> entities, Pair implementationPair = null) { if (implementationPair == null) { implementationPair = pair; } if (implementationPair.Delimiter != DelimiterEnum.CC && implementationPair.Delimiter != DelimiterEnum.ECC || entities == null || entities.Count == 0) { return(false); } var choice = _choiceStack.Peek(); var choiceInfo = JsonGenerator.FindChoiceInfo(choice, pair); if (choice.ChoiceNode != pair) { _choiceStack.Push(choiceInfo); } _choiceStack.Push(choiceInfo.Children[0]); if (((Element)choiceInfo.Children[0].ChoiceNode).Entities.Count > 0) { Visit(((Element)choiceInfo.Children[0].ChoiceNode).Entities); } _choiceStack.Pop(); if (choice.ChoiceNode != pair) { _choiceStack.Pop(); } return(true); }
protected bool EnterChoiceContainer(DOM.Mapped.Alias alias, PairCollection <Entity> entities) { if (alias.AliasDefinition.Delimiter != DelimiterEnum.CC && alias.AliasDefinition.Delimiter != DelimiterEnum.ECC || entities == null || entities.Count == 0) { return(false); } var choice = _choiceStack.Peek(); var choiceInfo = FindChoiceInfo(choice, alias); if (choice.ChoiceNode != alias) { _choiceStack.Push(choiceInfo); } _choiceStack.Push(choiceInfo.Children[0]); if (((Element)choiceInfo.Children[0].ChoiceNode).Entities.Count > 0) { Visit(((Element)choiceInfo.Children[0].ChoiceNode).Entities); } else { //Empty choice generates empty object _jsonWriter.WriteStartObject(); _blockState.Push(BlockState.Object); } _choiceStack.Pop(); if (choice.ChoiceNode != alias) { _choiceStack.Pop(); } return(true); }
public ContainerTemplate(SQLiteConnection conn) : base(new APMCore.Model.Container(-1)) { DataBase = conn; _pairsLocker = new object(); _pairs = new PairCollection(); _filter = null; }
public Container(APMCore.Model.Container source) : base(source) { _pairsLocker = new object(); _workPairs = new WorkPairCollection(); _pairs = new PairCollection(); _opacity = 1; }
private int CalcNumOfRootElements(Alias alias) { int result = 0; var aliasDef = alias.AliasDefinition; if (aliasDef == null) { return(0); } if (aliasDef.HasCircularReference) { return(0); } PairCollection <Entity> entities = null; if (aliasDef.Delimiter == DelimiterEnum.CC) { var choiceInfo = JsonGenerator.FindChoiceInfo(_choiceStack.Peek(), alias); if (choiceInfo?.Children != null) { entities = ((Element)choiceInfo.Children[0].ChoiceNode).Entities; } } else { entities = aliasDef.Entities; } if (entities == null) { return(result); } foreach (var entity in entities) { if (entity is DOM.Element) { result++; continue; } var scopeEntity = entity as Scope; if (scopeEntity != null) { result += CalcNumOfRootElements(scopeEntity); continue; } var aliasEntity = entity as DOM.Alias; if (aliasEntity != null) { result += CalcNumOfRootElements((Alias)aliasEntity); continue; } } return(result); }
/// <summary> /// Checks if Choice Container should be created and creates it. /// </summary> /// <param name="pair">Current pair from visitor.</param> /// <param name="entities">Pairs entities. Empty pair is ignored because there are no choices.</param> /// <param name="implementationPair">Actual implementation of pair, (AliasDef is implementation of Alias for example )</param> /// <returns>True if Choice Container is found.</returns> private bool CheckStartOfChoiceContainer(Pair pair, PairCollection <Entity> entities, Pair implementationPair = null) { if (implementationPair == null) { implementationPair = pair; } if (implementationPair.Assignment != AssignmentEnum.CC && implementationPair.Assignment != AssignmentEnum.ECC || entities == null || entities.Count == 0) { return(false); } ChoiceInfo parent = _choiceStack.Count == 0 ? null : _choiceStack.Peek(); var choiceInfo = new ChoiceInfo(parent, pair); _choiceStack.Push(choiceInfo); return(true); }
/// <summary> /// Tries to resolve a pair as a choice. /// </summary> /// <param name="pair">Pair being resolved.</param> /// <param name="entities">Entities of the pair.</param> /// <param name="implementationPair">If pair is an <see cref="Alias"/> then this parameter should get be an <see cref="DOM.AliasDefinition"/>.</param> /// <returns>True if pair is choice.</returns> protected bool EnterChoiceContainer(Pair pair, PairCollection <Entity> entities, Pair implementationPair = null) { if (implementationPair == null) { implementationPair = pair; } if (implementationPair.Assignment != AssignmentEnum.CC && implementationPair.Assignment != AssignmentEnum.ECC || entities == null || entities.Count == 0) { return(false); } var choice = ChoiceStack.Peek(); var choiceInfo = FindChoiceInfo(choice, pair); if (choice.ChoiceNode != pair) { ChoiceStack.Push(choiceInfo); } ChoiceStack.Push(choiceInfo.Children[0]); if (((Element)choiceInfo.Children[0].ChoiceNode).Entities.Count > 0) { Visit(((Element)choiceInfo.Children[0].ChoiceNode).Entities); } else { //Empty choice generates empty object JsonWriter.WriteStartObject(); BlockState.Push(BlockStateEnum.Object); } ChoiceStack.Pop(); if (choice.ChoiceNode != pair) { ChoiceStack.Pop(); } return(true); }
public static void Save(this IQuery query, string TableName, PairCollection values) => values.Each(x => query.Save(TableName, x));
public virtual MvcHtmlString Build(TModel model) { var sb = new StringBuilder(2000); using (var stringWriter = new StringWriter(sb)) using (var textWriter = new HtmlTextWriter(stringWriter)) { var properties = model.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); #region Hidden Fields var hiddenFields = new List <PropertyInfo>(); foreach (var property in properties) { var keyAttribute = property.GetCustomAttributes(typeof(KeyAttribute), false).FirstOrDefault() as KeyAttribute; if (keyAttribute != null) { hiddenFields.Add(property); } } foreach (var property in hiddenFields) { textWriter.AddAttribute(HtmlTextWriterAttribute.Id, property.Name); textWriter.AddAttribute(HtmlTextWriterAttribute.Name, property.Name); textWriter.AddAttribute(HtmlTextWriterAttribute.Type, "hidden"); textWriter.AddAttribute(HtmlTextWriterAttribute.Value, property.GetValue(model, null).ToString()); textWriter.RenderBeginTag(HtmlTextWriterTag.Input); textWriter.RenderEndTag(); } #endregion Hidden Fields var groupedProperties = new PairCollection <string, PropertyInfo>(); foreach (var property in properties) { var displayAttribute = property.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault() as DisplayAttribute; if (displayAttribute != null) { groupedProperties.Add(displayAttribute.GroupName, property); } } bool useLegend = (groupedProperties.Select(x => x.First).Distinct().Count() > 1); foreach (var groupedProperty in groupedProperties.OrderBy(x => x.First).GroupBy(x => x.First)) { textWriter.RenderBeginTag(HtmlTextWriterTag.Fieldset); if (useLegend) { if (!string.IsNullOrEmpty(groupedProperty.Key)) { textWriter.RenderBeginTag(HtmlTextWriterTag.Legend); textWriter.Write(groupedProperty.Key); textWriter.RenderEndTag(); // legend } else { textWriter.RenderBeginTag(HtmlTextWriterTag.Legend); textWriter.Write("General"); textWriter.RenderEndTag(); // legend } } var orderedProperties = new PairCollection <int, PropertyInfo>(); foreach (var property in groupedProperty) { if (hiddenFields.Contains(property.Second)) { continue; } var displayAttribute = property.Second.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault() as DisplayAttribute; if (displayAttribute == null) { orderedProperties.Add(0, property.Second); } else { orderedProperties.Add(displayAttribute.GetOrder() ?? 0, property.Second); } } foreach (var property in orderedProperties.OrderBy(x => x.First).Select(x => x.Second)) { if (hiddenFields.Contains(property)) { continue; } #region DisplayAttribute string displayName = property.Name; var displayAttribute = property.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault() as DisplayAttribute; if (displayAttribute != null) { if (!string.IsNullOrEmpty(displayAttribute.Name)) { displayName = displayAttribute.Name; } } #endregion DisplayAttribute // Control-Group textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "control-group"); textWriter.RenderBeginTag(HtmlTextWriterTag.Div); // Label textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "control-label"); textWriter.AddAttribute(HtmlTextWriterAttribute.For, property.Name); textWriter.RenderBeginTag(HtmlTextWriterTag.Label); textWriter.Write(displayName); textWriter.RenderEndTag(); // label // Controls Div textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "controls"); textWriter.RenderBeginTag(HtmlTextWriterTag.Div); // Control RenderDynamicControl(textWriter, model, property); textWriter.RenderEndTag(); // div (Controls Div) textWriter.RenderEndTag(); // div (Control-Group) } textWriter.RenderEndTag(); // fieldset } // Buttons Control-Group textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "control-group"); textWriter.RenderBeginTag(HtmlTextWriterTag.Div); // Controls Div textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "controls"); textWriter.RenderBeginTag(HtmlTextWriterTag.Div); // Submit Button textWriter.AddAttribute(HtmlTextWriterAttribute.Type, "submit"); textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "btn btn-primary"); textWriter.AddAttribute(HtmlTextWriterAttribute.Value, "Submit"); textWriter.RenderBeginTag(HtmlTextWriterTag.Input); textWriter.RenderEndTag(); //</input> textWriter.Write(" "); // Cancel Button textWriter.AddAttribute(HtmlTextWriterAttribute.Type, "button"); textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "btn"); textWriter.AddAttribute(HtmlTextWriterAttribute.Value, "Cancel"); textWriter.AddAttribute(HtmlTextWriterAttribute.Onclick, "window.location = '" + helper.ViewContext.HttpContext.Request.UrlReferrer + "'"); textWriter.RenderBeginTag(HtmlTextWriterTag.Input); textWriter.RenderEndTag(); //</input> textWriter.RenderEndTag(); // div (Controls Div) textWriter.RenderEndTag(); // div (Buttons Control-Group) return(new MvcHtmlString(sb.ToString())); } }