예제 #1
0
        private static string GetSpecificLayoutMacro(RelationshipView relationshipView)
        {
            var direction = relationshipView.GetDirection(out _);

            switch (direction)
            {
            case DirectionValues.Back: return("Rel_Back");

            case DirectionValues.Neighbor: return("Rel_Neighbor");           // C4 PlantUml without u

            case DirectionValues.Neighbour: return("Rel_Neighbor");          // C4 PlantUml without u

            case DirectionValues.BackNeighbor: return("Rel_Back_Neighbor");  // C4 PlantUml without u

            case DirectionValues.BackNeighbour: return("Rel_Back_Neighbor"); // C4 PlantUml without u

            case DirectionValues.Up: return("Rel_Up");

            case DirectionValues.Down: return("Rel_Down");

            case DirectionValues.Left: return("Rel_Left");

            case DirectionValues.Right: return("Rel_Right");

            default: return("Rel");
            }
        }
        public void Test_GetRelationships_WhenTheOrderPropertyIsAString()
        {
            string characters = "abcdefghij";

            containerA1.Uses(containerA2, "uses");
            DynamicView view = Workspace.Views.CreateDynamicView(softwareSystemA, "key", "Description");

            for (int i = 0; i < 10; i++)
            {
                RelationshipView relationshipView = view.Add(containerA1, containerA2);
                relationshipView.Order = "1" + characters.ToCharArray()[i];
            }

            List <RelationshipView> relationships = new List <RelationshipView>(view.Relationships);

            Assert.Equal("1a", relationships[0].Order);
            Assert.Equal("1b", relationships[1].Order);
            Assert.Equal("1c", relationships[2].Order);
            Assert.Equal("1d", relationships[3].Order);
            Assert.Equal("1e", relationships[4].Order);
            Assert.Equal("1f", relationships[5].Order);
            Assert.Equal("1g", relationships[6].Order);
            Assert.Equal("1h", relationships[7].Order);
            Assert.Equal("1i", relationships[8].Order);
            Assert.Equal("1j", relationships[9].Order);
        }
 /// <summary>
 /// Set a direction of the relation which should be used in a specific C4PlantUML views
 /// </summary>
 /// <param name="relationshipView"></param>
 /// <param name="direction">one of <see cref="DirectionValues"/></param>
 public static void SetDirection(this RelationshipView relationshipView, string direction)
 {
     if (string.IsNullOrWhiteSpace(direction)) // direction DirectionValues.NotSet
     {
         relationshipView.Properties.Remove(Properties.Direction);
     }
     else
     {
         relationshipView.Properties[Properties.Direction] = direction;
     }
 }
        /// <summary>
        /// Get a direction of the relation which should be used in a specific C4PlantUML views
        /// </summary>
        /// <param name="relationshipView"></param>
        /// <param name="viewSpecific">returns true if it is defined via the view specific RelationshipView and false if it is defined via the underlying Relationship</param>
        /// <returns></returns>
        public static string GetDirection(this RelationshipView relationshipView, out bool viewSpecific)
        {
            string value = DirectionValues.NotSet;

            if (relationshipView.Properties?.TryGetValue(Properties.Direction, out value) == true)
            {
                viewSpecific = true;
                return(value);
            }

            viewSpecific = false;
            value        = relationshipView.Relationship.GetDirection();
            return(value);
        }
        private static Link CreateLink(RelationshipView relationship)
        {
            var link = new Link
            {
                Source = relationship.Relationship.SourceId,
                Target = relationship.Relationship.DestinationId,
            };

            if (string.IsNullOrWhiteSpace(relationship.Relationship.Description) == false)
            {
                link.Description = relationship.Relationship.Description;
                link.Label       = MakeLabel(relationship.Relationship.Description);
            }
            return(link);
        }
예제 #6
0
        protected virtual void Write(RelationshipView relationshipView, TextWriter writer, string advancedDescription = null)
        {
            var relationship = relationshipView.Relationship;
            string
                source = TokenizeName(relationship.Source),
                dest   = TokenizeName(relationship.Destination),
                label  = advancedDescription ?? relationship.Description ?? "",
                tech   = !string.IsNullOrWhiteSpace(relationship.Technology) ? relationship.Technology : null;

            var macro = GetSpecificLayoutMacro(relationshipView);

            writer.Write($"{macro}({source}, {dest}, \"{EscapeText(label)}\"");
            if (tech != null)
            {
                writer.Write($", \"{EscapeText(tech)}\"");
            }
            writer.WriteLine(")");
        }
예제 #7
0
        protected virtual void WriteDynamicInteraction(RelationshipView relationshipView, TextWriter writer, string order, string label = null)
        {
            var relationship = relationshipView.Relationship;
            string
                source = TokenizeName(relationship.Source),
                dest   = TokenizeName(relationship.Destination),
                tech   = !string.IsNullOrWhiteSpace(relationship.Technology) ? relationship.Technology : null;

            var macro = GetSpecificLayoutMacro(relationshipView);

            macro = "Interact2" + macro.Substring("Rel".Length);

            writer.Write($"{macro}(\"{order}\", {source}, {dest}, \"{EscapeText(label)}\"");
            if (tech != null)
            {
                writer.Write($", \"{EscapeText(tech)}\"");
            }
            writer.WriteLine(")");
        }
        public void Test_GetRelationships_WhenTheOrderPropertyIsADecimal()
        {
            containerA1.Uses(containerA2, "uses");
            DynamicView view = Workspace.Views.CreateDynamicView(softwareSystemA, "key", "Description");

            for (int i = 0; i < 10; i++)
            {
                RelationshipView relationshipView = view.Add(containerA1, containerA2);
                relationshipView.Order = "1." + i;
            }

            List <RelationshipView> relationships = new List <RelationshipView>(view.Relationships);

            Assert.Equal("1.0", relationships[0].Order);
            Assert.Equal("1.1", relationships[1].Order);
            Assert.Equal("1.2", relationships[2].Order);
            Assert.Equal("1.3", relationships[3].Order);
            Assert.Equal("1.4", relationships[4].Order);
            Assert.Equal("1.5", relationships[5].Order);
            Assert.Equal("1.6", relationships[6].Order);
            Assert.Equal("1.7", relationships[7].Order);
            Assert.Equal("1.8", relationships[8].Order);
            Assert.Equal("1.9", relationships[9].Order);
        }
예제 #9
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex != comboBox2.SelectedIndex
                && !parentWinwoWindow.isContainRelationship(comboBox1.SelectedIndex, comboBox2.SelectedIndex))
            {
                try
                {
                    Essenishial one = parentWinwoWindow.EssenshialViews[comboBox1.SelectedIndex];
                    Essenishial two = parentWinwoWindow.EssenshialViews[comboBox2.SelectedIndex];

                    ErRelationshipConnectType oneConnectType = new ErRelationshipConnectType();
                    if (radioButton5.Checked)
                        oneConnectType.ModalType = ErRelationshipConnectType.ModalTypes.Can;
                    else
                        oneConnectType.ModalType = ErRelationshipConnectType.ModalTypes.Must;

                    ErRelationshipConnectType twoConnectType = new ErRelationshipConnectType();
                    if (radioButton1.Checked)
                        twoConnectType.ModalType = ErRelationshipConnectType.ModalTypes.Can;
                    else
                        twoConnectType.ModalType = ErRelationshipConnectType.ModalTypes.Must;

                    RelationshipView view = new RelationshipView(parentWinwoWindow.draw_panel1.Controls,
                        one, two, oneConnectType, twoConnectType, parentWinwoWindow._curentDiagram);
                    parentWinwoWindow.ErRelationshipViews.Add(view);
                    DialogResult = DialogResult.OK;
                    Close();
                }
                catch (ErDiagramNotCreateRelationshipExeption e1)
                {

                    MessageBox.Show("Сущности не имеют общих полей!");
                }

            }
        }