Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        public bool PredicatesAboutParameter(IContractElement postcondition)
        {
            var parameterVisitor    = new CciContractParameterVisitor(contractProvider);
            var expressionTraverser = new CciContractTraverser(contractProvider, parameterVisitor);

            expressionTraverser.Traverse(postcondition);
            return(parameterVisitor.UsesAParameter);
        }
Esempio n. 4
0
        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();
 }
Esempio n. 6
0
 /// <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);
 }
Esempio n. 7
0
 public void Visit(IContractElement contractElement)
 {
     Contract.Assert(contractElement != null);
     Visit(contractElement.Condition);
     if (contractElement.Description != null)
     {
         Visit(contractElement.Description);
     }
 }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 9
0
 /// <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);
     }
 }
Esempio n. 10
0
        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());
        }
Esempio n. 11
0
 /// <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;
 }
Esempio n. 12
0
 /// <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;
 }
Esempio n. 13
0
 /// <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;
       }
 }
Esempio n. 14
0
        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();
            }
        }
Esempio n. 15
0
 /// <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();
 }
Esempio n. 17
0
 /// <summary>
 /// Traverses the contract element.
 /// </summary>
 public void Traverse(IContractElement contractElement)
 {
     Contract.Requires(contractElement != null);
       contractElement.Dispatch(this.dispatchingVisitor);
 }
Esempio n. 18
0
    /// <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;
    }
Esempio n. 19
0
 /// <summary>
 /// Visits the given contract element.
 /// </summary>
 /// <param name="contractElement"></param>
 public virtual void Visit(IContractElement contractElement)
 {
 }
Esempio n. 20
0
    /// <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;
    }
Esempio n. 21
0
    /// <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;
    }
Esempio n. 22
0
 /// <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);
 }