PageRenderTime 48ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/Atlassian.Jira/JiraNamedEntityCollection.cs

https://bitbucket.org/yyo/atlassian.net-sdk-v2.0
C# | 73 lines | 58 code | 11 blank | 4 comment | 7 complexity | 28c257574feb0af96a811858aec60425 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections.ObjectModel;
  6. using Atlassian.Jira.Remote;
  7. namespace Atlassian.Jira
  8. {
  9. public class JiraNamedEntityCollection<T> : ReadOnlyCollection<T>, IRemoteIssueFieldProvider where T: JiraNamedEntity
  10. {
  11. protected readonly Jira _jira;
  12. protected readonly string _projectKey;
  13. protected readonly string _fieldName;
  14. private List<T> _newElements = new List<T>();
  15. internal JiraNamedEntityCollection(string fieldName, Jira jira, string projectKey, IList<T> list)
  16. : base(list)
  17. {
  18. _fieldName = fieldName;
  19. _jira = jira;
  20. _projectKey = projectKey;
  21. }
  22. /// <summary>
  23. /// Associate a JiraNamedEntity to this issue
  24. /// </summary>
  25. /// <param name="element">JiraNamedEntity to add</param>
  26. public void Add(T element)
  27. {
  28. this.Items.Add(element);
  29. this._newElements.Add(element);
  30. }
  31. public static bool operator ==(JiraNamedEntityCollection<T> list, string value)
  32. {
  33. return (object)list == null ? value == null : list.Any(v => v.Name == value);
  34. }
  35. public static bool operator !=(JiraNamedEntityCollection<T> list, string value)
  36. {
  37. return (object)list == null ? value == null : !list.Any(v => v.Name == value);
  38. }
  39. public override bool Equals(object obj)
  40. {
  41. return base.Equals(obj);
  42. }
  43. public override int GetHashCode()
  44. {
  45. return this.Items.GetHashCode();
  46. }
  47. RemoteFieldValue[] IRemoteIssueFieldProvider.GetRemoteFields()
  48. {
  49. var fields = new List<RemoteFieldValue>();
  50. if (_newElements.Count > 0)
  51. {
  52. var field = new RemoteFieldValue()
  53. {
  54. id = _fieldName,
  55. values = _newElements.Select(e => e.Id).ToArray()
  56. };
  57. fields.Add(field);
  58. }
  59. return fields.ToArray();
  60. }
  61. }
  62. }