Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

//-----------------------------------------------------------------------
// This is open source licensed under GPL
//
//
using System;
using System.Collections;
using System.Text;
using ReqPro40;
using System.Windows.Forms;

namespace EA_ReqPro
{
   class RQConnection
   {
      // EA properties
      public string EAGuid;
      public int EAId;

      public ReqPro40.Project project;

      // ReqPro properties
      public string RQProjectName;
      public string RQProjectDescription;
      public string RQProjectGuid;
      public string RQFile;
      public string RQUsername;
      public string RQPassword;

      public RQConnection(EA.Repository repository, EA.Element element )
      {
         EAOpen(repository, element);
      }

      public RQConnection(string file, string username, string password)
      {
         RQOpen(file, username, password);
      }

      public void EAOpen(EA.Repository repository, EA.Element element)
      {
         EA_Utilities EA_Utils = new EA_Utilities(repository);

         EAGuid = element.ElementGUID;
         EAId = element.ElementID;

         RQProjectName = element.Name;
         RQProjectDescription = element.Notes;
         RQFile = EA_Utils.ReadTag(element, "Location");
         RQUsername = EA_Utils.ReadTag(element, "Username");
         RQProjectGuid = EA_Utils.ReadTag(element, "GUID");
      }

      public ReqPro40.Project OpenRqDB(string file, string username, string password)
      {
         ReqPro40.Application reqPro = new ReqPro40.ApplicationClass();

         RQFile = file;
         RQUsername = username;
         RQPassword = password;  

         project = reqPro.OpenProject(
            RQFile,
            ReqPro40.enumOpenProjectOptions.eOpenProjOpt_RQSFile,
            RQUsername,
            RQPassword, 
            enumProjectFlags.eProjFlag_Normal,
            enumRelatedProjectOptions.eRelatedProjOption_ConnectAsSpecified);

         return project;
      }

      public ReqPro40.Project OpenRqDB()
      {
         ReqPro40.Application reqPro = new ReqPro40.ApplicationClass();

         Logon logon = new Logon(RQUsername);
         
         DialogResult dlgRes = logon.ShowDialog();
         if (dlgRes == DialogResult.OK)
         {
            RQPassword = logon.ebPassword.Text;

            project = reqPro.OpenProject(
               RQFile,
               ReqPro40.enumOpenProjectOptions.eOpenProjOpt_RQSFile,
               RQUsername,
               RQPassword, 
               enumProjectFlags.eProjFlag_Normal,
               enumRelatedProjectOptions.eRelatedProjOption_ConnectAsSpecified);

            return project;
         }
         else
         {
            return null;
         }
       }

      public void RQOpen( string file, string username, string password )
      {
         try
         {
            RQFile = file;
            RQUsername = username;
            RQPassword = password;

            project = OpenRqDB(file, username, password);

            RQProjectName = project.Name;
            RQProjectDescription = project.Description;
            RQProjectGuid = project.GUID;
         }
         catch
         {
            throw (new Exception("Error opening the requisite pro database"));
         }
      }

      public ReqPro40.Project ReOpenRqDB()
      {
         try
         {
            project = OpenRqDB(RQFile, RQUsername, RQPassword);

            RQProjectName = project.Name;
            RQProjectDescription = project.Description;
            RQProjectGuid = project.GUID;
         }
         catch
         {
            throw (new Exception("Error re-opening the requisite pro database"));
         }   
         return project;
      }

      public bool SaveAsEAElement(EA.Repository repository, EA.Package package)
      {
         EA_Utilities EA_Utils = new EA_Utilities(repository);

         package.Notes = RQProjectDescription;
         package.Update();
            
         EA.Element element;
         element = (EA.Element)package.Elements.AddNew(RQProjectName + " - " + RQUsername, "Artifact");
         element.Stereotype = "ReqProDB";
         element.Notes = RQProjectDescription;

         EA_Utils.WriteTag( element, "Location", RQFile);
         EA_Utils.WriteTag( element, "Username", RQUsername);
         EA_Utils.WriteTag( element, "GUID", RQProjectGuid);
         EA_Utils.WriteTag( element, "Enable_Update", "false");

         element.Update();
         element.Refresh();
         EAGuid = element.ElementGUID;
         EAId = element.ElementID;
         element.TaggedValues.Refresh();
         package.Packages.Refresh();
         package.Elements.Refresh(); 
            
         return true;
      }

 
 




 




   }
}