예제 #1
0
        /// <summary>
        /// According to issue type of an issue as a parameter returns metatype name of the element in EA
        /// </summary>
        /// <param name="Issue"></param>
        /// <returns></returns>
        public static string GetMetaclassFromIssueType(Atlassian.Jira.Issue Issue)
        {
            switch (Issue.Type.Name.ToLower())
            {
            case JiraBugTypeName:
                return(JiraBugMetaType);

            case JiraEpicTypeName:
                return(JiraEpicMetaType);

            case JiraStoryTypeName:
                return(JiraStoryMetaType);

            case JiraTaskTypeName:
                return(JiraTaskMetaType);

            case JiraSubtaskTypeName:
                return(JiraSubtaskMetaType);

            case JiraTechnicalStoryTypeName:
                return(JiraTechnicalStoryMetaType);

            default:
                return(JiraIssueMetaType);
            }
        }
예제 #2
0
 private static void PopulateUserStoryDetails(JiraItem item, Atlassian.Jira.Issue jiraIssue)
 {
     Console.WriteLine(jiraIssue.Type.Name);
     foreach (var field in jiraIssue.CustomFields)
     {
         Console.WriteLine(field.Id + ":" + field.Name + ":" + field.Values[0].ToString());
     }
     Console.WriteLine();
 }
예제 #3
0
        private Row CreateDataRow(Atlassian.Jira.Issue issue)
        {
            Row row = new Row();

            foreach (var property in issue.GetType().GetProperties().Where(p => p.Name != "Item"))
            {
                var value = property.GetValue(issue) == null ? string.Empty : property.GetValue(issue).ToString();
                row.Append(ConstructCell(value, CellValues.String));
            }

            return(row);
        }
예제 #4
0
        public static JiraItem Translate(Atlassian.Jira.Issue jiraIssue)
        {
            JiraItem item = new JiraItem()
            {
                Key         = jiraIssue.Key.ToString(),
                ItemNumber  = jiraIssue.JiraIdentifier,
                ProjectName = jiraIssue.Project,
                ItemStatus  = (JiraStatus)Convert.ToInt32(jiraIssue.Status.Id),
                ItemType    = (JiraIssueType)Convert.ToInt32(jiraIssue.Type.Id),
                Created     = jiraIssue.Created,
                Updated     = jiraIssue.Updated,
                Priority    = (JiraPriority)Convert.ToInt32(jiraIssue.Priority.Id),
                Summary     = jiraIssue.Summary,
                AssignedTo  = String.IsNullOrEmpty(jiraIssue.Assignee) ? "" : jiraIssue.Assignee.ToString(),
            };

            item.Team = GetCustomFieldValue("Team", jiraIssue);

            item.Sprint = GetCustomFieldValue("Sprint", jiraIssue);

            foreach (var version in jiraIssue.AffectsVersions)
            {
                item.AffectsVersions.Add(version.Name.ToString());
            }

            foreach (var version in jiraIssue.FixVersions)
            {
                item.FixVersions.Add(version.Name.ToString());
            }

            //PopulateDetails(item, jiraIssue);

            //switch (item.ItemType)
            //{
            //    case JiraIssueType.UserStory:
            //        {
            //            PopulateUserStoryDetails(item, jiraIssue);
            //            break;
            //        }
            //    case JiraIssueType.Epic:
            //        {
            //            PopulateEpicDetails(item, jiraIssue);
            //            break;
            //        }
            //    default:
            //        {
            //            PopulateDetails(item, jiraIssue);
            //            break;
            //        }
            //}

            return(item);
        }
예제 #5
0
        /// <summary>
        /// Synchronization of an issue.
        /// </summary>
        /// <param name="Issue">Issue read from JIRA server that should be synchronized.</param>
        /// <param name="Repository">Sparx EA Repository.</param>
        /// <param name="Package">Packages that owns all issues that are not owned by any element withint this package.</param>
        /// <param name="Element">If it is not null then this element will be owner of the issue element instead of Package.</param>
        /// <param name="IssuesInEA">All issues that were within the packages just before the synchronization begins.</param>
        /// <returns>EA Element that represents synchronized issue.</returns>
        private static EA.Element SynchronizeItem(Atlassian.Jira.Issue Issue, EA.Repository Repository, EA.Package Package, EA.Element Element, Dictionary <string, EA.Element> IssuesInEA)
        {
            IssueOperation Operation;

            EA.Element EAElementForIssue;
            if (IssuesInEA.ContainsKey(Issue.Key.Value))
            { //this issue is already saved in EA. Let's do something with it
                Operation         = IssueOperation.Updated;
                EAElementForIssue = IssuesInEA[Issue.Key.Value];
                Repository.WriteOutput(EAGoatJira.JiraOutputWindowName, $"Updating issue {Issue.Key.Value}", EAElementForIssue.ElementID);
                if (Element == null)
                {
                    EAElementForIssue.PackageID = Package.PackageID;
                }
                else
                {
                    EAElementForIssue.ParentID = Element.ElementID;
                }

                ///TODO: I should change the stereotype, if the type of issue has been chaged.
                ///      On the other hand, some configuration of JIRA doesn't allow these changes to ordinary users.
                ///EAElementForIssue.Type = GetMetaclassFromIssueType(Issue);

                IssuesInEA.Remove(Issue.Key.Value);
            }
            else
            { //this issue is not in EA so far, let's create a new one EA.Element
                Operation = IssueOperation.Inserted;
                if (Element == null)
                {
                    EAElementForIssue = Package.Elements.AddNew(GetEAJiraIssueName(Issue), EAGoatJira.GetMetaclassFromIssueType(Issue));
                }
                else
                {
                    EAElementForIssue = Element.Elements.AddNew(GetEAJiraIssueName(Issue), EAGoatJira.GetMetaclassFromIssueType(Issue));
                }
                Repository.WriteOutput(EAGoatJira.JiraOutputWindowName, $"Inserting issue {Issue.Key.Value}", EAElementForIssue.ElementID);
            }
            FillIssue(EAElementForIssue, new JiraIssueViewModel(new AtlassianJiraIssueModelService(Issue), null), Operation);

            EAElementForIssue.Update();

            return(EAElementForIssue);
        }
예제 #6
0
        public BillingIssueDtoHelios UpdateJiraInfo(BillingIssueDtoHelios issue, Atlassian.Jira.Issue issueJira)
        {
            //issue.issueWFS.DataWystapieniaBledu = issue.issueHelios.oryginalneId == issue.issueHelios.number ? issue.issueHelios.date : issue.issueHelios.updated;
            //issue.issueWFS.Email = issue.issueHelios.email;
            //issue.issueWFS.Imie = issue.issueHelios.firstName;
            //issue.issueWFS.Nazwisko = issue.issueHelios.lastName;
            //issue.issueWFS.TrescZgloszenia = issue.issueHelios.content;
            //issue.issueWFS.TytulZgloszenia = issue.issueHelios.title;
            //issue.issueWFS.NumerZgloszenia = issue.issueWFS.WFSIssueId.ToString();
            //issue.issueWFS.IdKontraktu = issue.issueHelios.idKontraktu;
            //issue.issueWFS.IdZamowienia = issue.issueHelios.idZamowienia;
            //issue.issueWFS.Priorytet = issue.issueHelios.severity;

            BillingIssueDtoHelios result = issue;

            result.issueHelios.date               = result.issueHelios.updated = issue.issueWFS.DataWystapieniaBledu;
            result.issueHelios.email              = issue.issueWFS.Email;
            result.issueHelios.firstName          = issue.issueWFS.Imie;
            result.issueHelios.lastName           = issue.issueWFS.Nazwisko;
            result.issueHelios.content            = issue.issueWFS.TrescZgloszenia;
            result.issueHelios.title              = issue.issueWFS.TytulZgloszenia;
            result.issueHelios.severity           = issue.issueWFS.Priorytet;
            result.issueHelios.rodzaj_zgloszenia  = issue.issueWFS.System != null ? issue.issueWFS.System.Text : "";
            result.issueHelios.rodzaj_bledu       = issue.issueWFS.Rodzaj != null ? issue.issueWFS.Rodzaj.Text : "";
            result.issueHelios.srodowiskoProblemu = issue.issueWFS.SrodowiskoProblemu != null ? issue.issueWFS.SrodowiskoProblemu : "";

            if (issueJira != null)
            {
                //result.issueHelios.date = result.issueHelios.updated = issue.issueWFS.DataWystapieniaBledu;
                //result.issueHelios.email = issue.issueWFS.Email;
                result.issueHelios.firstName = issueJira.Assignee.Split(' ').First();
                result.issueHelios.lastName  = issueJira.Assignee.Split(' ').Last();
                //result.issueHelios.content = issue.issueWFS.TrescZgloszenia;
                //result.issueHelios.title = issue.issueWFS.TytulZgloszenia;
                result.issueHelios.severity = issueJira.Priority.Name;
                //result.issueHelios.rodzaj_zgloszenia = issue.issueWFS.System != null ? issue.issueWFS.System.Text : "";
                //result.issueHelios.rodzaj_bledu = issue.issueWFS.Rodzaj != null ? issue.issueWFS.Rodzaj.Text : "";
                //result.issueHelios.srodowiskoProblemu = issue.issueWFS.SrodowiskoProblemu != null ? issue.issueWFS.SrodowiskoProblemu : "";
            }


            return(result);
        }
예제 #7
0
        private static string GetCustomFieldValue(string name, Atlassian.Jira.Issue jiraIssue)
        {
            var fieldValue = jiraIssue.CustomFields[name];

            if (null != fieldValue)
            {
                if (null != fieldValue.Values[0])
                {
                    return(fieldValue.Values[0].ToString());
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
예제 #8
0
 private static string GetEAJiraIssueName(Atlassian.Jira.Issue Issue) => GetEAJiraIssueName(Issue.Key.Value, Issue.Summary);