XAttribute GetDescriptionAttribute(IContractElement contractElement) { if (contractElement == null) { return(null); } string contractDescription = null; ICompileTimeConstant descAsCTC = contractElement.Description as ICompileTimeConstant; if (descAsCTC != null && descAsCTC.Value != null) { contractDescription = descAsCTC.Value as string; } if (contractDescription != null) { return(new XAttribute("description", contractDescription)); } else { return(null); } }
void WriteContractElement(XElement member, IContractElement contractElement, string contractElementName, params XAttribute[] contractAttributes) { Contract.Requires(member != null); Contract.Requires(contractElement != null); Contract.Requires(!String.IsNullOrEmpty(contractElementName)); if (contractElement == null) { return; } XElement contractXElement = new XElement(contractElementName, contractElement.OriginalSource); if (contractAttributes != null) { foreach (XAttribute contractAttribute in contractAttributes) { if (contractAttribute != null) { contractXElement.SetAttributeValue(contractAttribute.Name.LocalName, contractAttribute.Value); } } } Console.WriteLine("\t\t" + contractElementName + ": " + contractElement.OriginalSource); member.Add(contractXElement); }
public bool PredicatesAboutParameter(IContractElement postcondition) { var parameterVisitor = new CciContractParameterVisitor(contractProvider); var expressionTraverser = new CciContractTraverser(contractProvider, parameterVisitor); expressionTraverser.Traverse(postcondition); return(parameterVisitor.UsesAParameter); }
public bool PredicatesAboutInstance(IContractElement postcondition) { var instanceVisitor = new CciContractVisitor(contractProvider); var expressionTraverser = new CciContractTraverser(contractProvider, instanceVisitor); expressionTraverser.Traverse(postcondition); return(instanceVisitor.InstanceIsUsed); }
protected override void OnInitialized() { base.OnInitialized(); EditElementService.EditElementChanged += HandleEditedElementChanged; EditElementService.EditElementModified += HandleEditedElementModified; EditedElement = EditElementService.EditElement; CreateTabsList(); }
/// <summary> /// Creates a contract element that shares all of the information in <paramref name="element"/>. /// </summary> /// <param name="element"></param> protected ContractElement(IContractElement element) { this.condition = element.Condition; this.description = element.Description; this.conditionAsText = element.OriginalSource; this.isModel = element.IsModel; this.locations = new List <ILocation>(element.Locations); }
public void Visit(IContractElement contractElement) { Contract.Assert(contractElement != null); Visit(contractElement.Condition); if (contractElement.Description != null) { Visit(contractElement.Description); } }
/// <summary> /// Gets the description string from a IContractElement /// </summary> protected static string GetDescription(IContractElement contract) { Contract.Requires(contract != null); ICompileTimeConstant descAsCTC = contract.Description as ICompileTimeConstant; if (descAsCTC != null && descAsCTC.Value != null) { return(descAsCTC.Value as string); } return(null); }
/// <summary> /// Called whenever a contract element is about to be traversed by a type specific routine. /// This gives the traverser the opportunity to take some uniform action for all contract elements, /// regardless of how the traversal gets to them. /// </summary> public virtual void TraverseChildren(IContractElement contractElement) { Contract.Requires(contractElement != null); Traverse(contractElement.Condition); if (StopTraversal) { return; } if (contractElement.Description != null) { Traverse(contractElement.Description); } }
void WriteContractElementToSummary(XElement summaryElement, IContractElement contractElement, params string[] info) { Contract.Requires(summaryElement != null); Contract.Requires(contractElement != null); Contract.Requires(info != null); StringBuilder infoBuilder = new StringBuilder(contractElement.OriginalSource); foreach (string infoString in info) { if (infoString != null) { infoBuilder.Append(" ("); infoBuilder.Append(infoString); infoBuilder.Append(")"); } } XElement contractXElement = new XElement("para", infoBuilder.ToString()); summaryElement.Add(contractXElement); Console.WriteLine("\t\t" + infoBuilder.ToString()); }
/// <summary> /// Makes a shallow copy of the given contract element. /// </summary> /// <param name="contractElement"></param> public virtual ContractElement Copy(IContractElement contractElement) { contractElement.Dispatch(this.dispatchingVisitor); return (ContractElement)this.dispatchingVisitor.result; }
/// <summary> /// Makes a deep copy of the given contract element. /// </summary> /// <param name="contractElement"></param> public ContractElement Copy(IContractElement contractElement) { contractElement.Dispatch(this.Dispatcher); return (ContractElement)this.Dispatcher.result; }
/// <summary> /// Called whenever a contract element is about to be traversed by a type specific routine. /// This gives the traverser the opportunity to take some uniform action for all contract elements, /// regardless of how the traversal gets to them. /// </summary> public virtual void TraverseChildren(IContractElement contractElement) { Contract.Requires(contractElement != null); this.Traverse(contractElement.Condition); if (this.StopTraversal) return; if (contractElement.Description != null) { this.Traverse(contractElement.Description); if (this.StopTraversal) return; } }
private void ElementChanged(object sender, BpmnElementEvent e) { //No process id is defined, or the process does not exist -- the element is in the phase of deletion if (string.IsNullOrEmpty(e.Element.ProcessId) || !_processManager.ProcessExists(e.Element.ProcessId)) { return; } IContractElement contractElement = null; if (e.Element.Type == "bpmn:Participant") { _contractManager.TryGetProcess(e.Element.ProcessId, out var process); process.Name = e.Element.Name; contractElement = process; } if (_processManager.TryRetrieveIElementById(e.Element.Id, out var element)) { //Parse element name element.Name = e.Element.Name; //Parse element loop type if (element is Abstraction.Processes.Tasks.Task) { var taskElement = element as Abstraction.Processes.Tasks.Task; if (e.Element.LoopType == "bpmn:MultiInstanceLoopCharacteristics") { if (e.Element.IsSequential) { taskElement.InstanceType = Abstraction.Processes.Tasks.InstanceType.Sequential; } else { taskElement.InstanceType = Abstraction.Processes.Tasks.InstanceType.Parallel; } } else { taskElement.InstanceType = Abstraction.Processes.Tasks.InstanceType.Single; } } if (element is BoundaryEvent) { Console.WriteLine($"Attached to: {e.Element.AttachedTo}"); var boundaryEvent = element as BoundaryEvent; boundaryEvent.AttachedTo = e.Element.AttachedTo; } //Parse incoming and outgoing if processElement if (element is ProcessElement) { var processElement = element as ProcessElement; processElement.Incoming = new List <string>(e.Element.Incoming); processElement.Outgoing = new List <string>(e.Element.Outgoing); } //Parse sequence flow information if (element is SequenceFlow) { var sequenceFlow = element as SequenceFlow; _processManager.UpdateSequenceFlowSourceAndTarget(sequenceFlow, e.Element.Source, e.Element.Target, e.Element.ProcessId); } //Check if parent process of the element has changed if (_processManager.TryGetProcessOfElement(element.Id, out var process)) { if (process.Id != e.Element.ProcessId) { Console.WriteLine($"Process changed in element, prev process: {process.Id}, new Process: {e.Element.ProcessId}"); _processManager.ChangeProcessOfElement(element, process.Id, e.Element.ProcessId); } } contractElement = element; } //Notify about element modification if currently selected if (_editElementService.EditElement == contractElement) { _editElementService.EditedElementModified(); } }
/// <summary> /// Traverses the contract element. /// </summary> public void Traverse(IContractElement contractElement) { Contract.Requires(contractElement != null); contractElement.Dispatch(dispatchingVisitor); }
private void HandleEditedElementChanged(object sender, EditElementEventArgs e) { EditedElement = e.processElement; CreateTabsList(); StateHasChanged(); }
/// <summary> /// Traverses the contract element. /// </summary> public void Traverse(IContractElement contractElement) { Contract.Requires(contractElement != null); contractElement.Dispatch(this.dispatchingVisitor); }
/// <summary> /// Makes a shallow copy of the given contract element. /// </summary> /// <param name="contractElement"></param> public virtual ContractElement Copy(IContractElement contractElement) { Contract.Requires(contractElement != null); Contract.Ensures(Contract.Result<ContractElement>() != null); contractElement.Dispatch(this.dispatchingVisitor); return (ContractElement)this.dispatchingVisitor.result; }
/// <summary> /// Visits the given contract element. /// </summary> /// <param name="contractElement"></param> public virtual void Visit(IContractElement contractElement) { }
/// <summary> /// Makes a deep copy of the given contract element. /// </summary> /// <param name="contractElement"></param> public ContractElement Copy(IContractElement contractElement) { Contract.Requires(contractElement != null); Contract.Ensures(Contract.Result<ContractElement>() != null); contractElement.Dispatch(this.Dispatcher); return (ContractElement)this.Dispatcher.result; }
/// <summary> /// Gets the description string from a IContractElement /// </summary> protected static string GetDescription(IContractElement contract) { Contract.Requires(contract != null); ICompileTimeConstant descAsCTC = contract.Description as ICompileTimeConstant; if (descAsCTC != null && descAsCTC.Value != null) return descAsCTC.Value as string; return null; }
/// <summary> /// Creates a contract element that shares all of the information in <paramref name="element"/>. /// </summary> /// <param name="element"></param> protected ContractElement(IContractElement element) { this.condition = element.Condition; this.description = element.Description; this.conditionAsText = element.OriginalSource; this.isModel = element.IsModel; this.locations = new List<ILocation>(element.Locations); }