/// <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); } }
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(); }
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); }
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); }
/// <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); }
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); }
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(""); } }
private static string GetEAJiraIssueName(Atlassian.Jira.Issue Issue) => GetEAJiraIssueName(Issue.Key.Value, Issue.Summary);