Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

using System;

namespace EA_ReqPro
{
        /// <summary>
        /// Summary description for EA_Connectors.
        /// </summary>
        public class EA_Connectors
        {
                public EA_Connectors()
                {
                }

      /// <summary>
      /// Adds a connection between one EA element and another
      /// </summary>
      /// <param name="repository"></param>
      /// <param name="rq_artifact"></param>
      /// <param name="ea_req"></param>
      public static void add(EA.Element src_element, EA.Element dest_element)
      {
         if (false == ea_element_traces_to_or_from(src_element, dest_element))
         {
            // Add the new connection between the src_element and dest_element
            EA.Connector c = (EA.Connector)src_element.Connectors.AddNew("", "Dependency");
            c.SupplierID = dest_element.ElementID;
            c.Direction = "Source -> Destination";
            c.Update();
            src_element.Connectors.Refresh();
         }
      }


      private static bool ea_element_traces_to_or_from(EA.Element src_element, EA.Element dest_element)
      {
         foreach(EA.Connector ea_c in src_element.Connectors)
         {
            int destId = -1;

            // we dont care about direction of relationship, so test for both
            if (ea_c.ClientID == src_element.ElementID)
               destId = ea_c.SupplierID;
            else if (ea_c.SupplierID == src_element.ElementID)
               destId = ea_c.ClientID;

            // and make sure we filter out self-referential connectors
            if (destId != src_element.ElementID)
            {
               if (destId == dest_element.ElementID)
                  return true;
            }
         }

         return false;
      }


        }
}