PageRenderTime 44ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/Atlassian.Jira/ComparableString.cs

https://bitbucket.org/yyo/atlassian.net-sdk-v2.0
C# | 145 lines | 119 code | 19 blank | 7 comment | 21 complexity | 47719ef8686b9ef54592d03d304df287 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Atlassian.Jira
  6. {
  7. /// <summary>
  8. /// Type that wraps a string and exposes opertor overloads for
  9. /// easier LINQ queries
  10. /// </summary>
  11. /// <remarks>
  12. /// Allows comparisons in the form of issue.Key > "TST-1"
  13. /// </remarks>
  14. public class ComparableString
  15. {
  16. private const string JIRA_DATE_FORMAT_STRING = "yyyy/MM/dd";
  17. public string Value { get; set; }
  18. public ComparableString(string value)
  19. {
  20. this.Value = value;
  21. }
  22. public static implicit operator ComparableString(string value)
  23. {
  24. if (value != null)
  25. {
  26. return new ComparableString(value);
  27. }
  28. else
  29. {
  30. return null;
  31. }
  32. }
  33. public static bool operator ==(ComparableString field, string value)
  34. {
  35. if ((object) field == null)
  36. {
  37. return value == null;
  38. }
  39. else
  40. {
  41. return field.Value == value;
  42. }
  43. }
  44. public static bool operator !=(ComparableString field, string value)
  45. {
  46. if ((object) field == null)
  47. {
  48. return value != null;
  49. }
  50. else
  51. {
  52. return field.Value != value;
  53. }
  54. }
  55. public static bool operator >(ComparableString field, string value)
  56. {
  57. return field.Value.CompareTo(value) > 0;
  58. }
  59. public static bool operator <(ComparableString field, string value)
  60. {
  61. return field.Value.CompareTo(value) < 0;
  62. }
  63. public static bool operator <=(ComparableString field, string value)
  64. {
  65. return field.Value.CompareTo(value) <= 0;
  66. }
  67. public static bool operator >=(ComparableString field, string value)
  68. {
  69. return field.Value.CompareTo(value) >= 0;
  70. }
  71. public static bool operator ==(ComparableString field, DateTime value)
  72. {
  73. if ((object)field == null)
  74. {
  75. return value == null;
  76. }
  77. else
  78. {
  79. return field.Value == value.ToString(JIRA_DATE_FORMAT_STRING);
  80. }
  81. }
  82. public static bool operator !=(ComparableString field, DateTime value)
  83. {
  84. if ((object)field == null)
  85. {
  86. return value != null;
  87. }
  88. else
  89. {
  90. return field.Value != value.ToString(JIRA_DATE_FORMAT_STRING);
  91. }
  92. }
  93. public static bool operator >(ComparableString field, DateTime value)
  94. {
  95. return field.Value.CompareTo(value.ToString(JIRA_DATE_FORMAT_STRING)) > 0;
  96. }
  97. public static bool operator <(ComparableString field, DateTime value)
  98. {
  99. return field.Value.CompareTo(value.ToString(JIRA_DATE_FORMAT_STRING)) < 0;
  100. }
  101. public static bool operator <=(ComparableString field, DateTime value)
  102. {
  103. return field.Value.CompareTo(value.ToString(JIRA_DATE_FORMAT_STRING)) <= 0;
  104. }
  105. public static bool operator >=(ComparableString field, DateTime value)
  106. {
  107. return field.Value.CompareTo(value.ToString(JIRA_DATE_FORMAT_STRING)) >= 0;
  108. }
  109. public override string ToString()
  110. {
  111. return this.Value;
  112. }
  113. public override bool Equals(object obj)
  114. {
  115. if (obj is ComparableString)
  116. {
  117. return this.Value.Equals(((ComparableString)obj).Value);
  118. }
  119. else if (obj is string)
  120. {
  121. return this.Value.Equals((string)obj);
  122. }
  123. return base.Equals(obj);
  124. }
  125. }
  126. }