/core/externals/update-engine/externals/gdata-objectivec-client/Source/Clients/Finance/GDataPortfolioElements.m

http://macfuse.googlecode.com/ · Objective C · 265 lines · 168 code · 65 blank · 32 comment · 1 complexity · 26858068885fe9ba48f997a4836d3db1 MD5 · raw file

  1. /* Copyright (c) 2008 Google Inc.
  2. *
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */
  15. //
  16. // GDataPortfolioElements.m
  17. //
  18. #if !GDATA_REQUIRE_SERVICE_INCLUDES || GDATA_INCLUDE_FINANCE_SERVICE
  19. #import "GDataPortfolioElements.h"
  20. #import "GDataMoneyElements.h"
  21. #import "GDataEntryFinancePortfolio.h" // for namespaces
  22. static NSString *const kGainPercentageAttr = @"gainPercentage";
  23. static NSString *const kReturn1wAttr = @"return1w";
  24. static NSString *const kReturn1yAttr = @"return1y";
  25. static NSString *const kReturn3mAttr = @"return3m";
  26. static NSString *const kReturn3yAttr = @"return3y";
  27. static NSString *const kReturn4wAttr = @"return4w";
  28. static NSString *const kReturn5yAttr = @"return5y";
  29. static NSString *const kReturnOverallAttr = @"returnOverall";
  30. static NSString *const kReturnYTDAttr = @"returnYTD";
  31. // portfolio-only
  32. static NSString *const kCurrencyCodeAttr = @"currencyCode";
  33. // position-only
  34. static NSString *const kSharesAttr = @"shares";
  35. //
  36. // Portfolio subclass
  37. //
  38. @implementation GDataPortfolioData
  39. + (NSString *)extensionElementPrefix { return kGDataNamespaceFinancePrefix; }
  40. + (NSString *)extensionElementURI { return kGDataNamespaceFinance; }
  41. + (NSString *)extensionElementLocalName { return @"portfolioData"; }
  42. + (GDataPortfolioData *)portfolioData {
  43. GDataPortfolioData *obj = [self object];
  44. return obj;
  45. }
  46. - (void)addParseDeclarations {
  47. [super addParseDeclarations];
  48. NSArray *attrs = [NSArray arrayWithObject:kCurrencyCodeAttr];
  49. [self addLocalAttributeDeclarations:attrs];
  50. }
  51. - (NSString *)currencyCode {
  52. return [self stringValueForAttribute:kCurrencyCodeAttr];
  53. }
  54. - (void)setCurrencyCode:(NSString *)str {
  55. [self setStringValue:str forAttribute:kCurrencyCodeAttr];
  56. }
  57. @end
  58. //
  59. // Position subclass
  60. //
  61. @implementation GDataPositionData
  62. + (NSString *)extensionElementPrefix { return kGDataNamespaceFinancePrefix; }
  63. + (NSString *)extensionElementURI { return kGDataNamespaceFinance; }
  64. + (NSString *)extensionElementLocalName { return @"positionData"; }
  65. + (GDataPositionData *)positionData {
  66. GDataPositionData *obj = [self object];
  67. return obj;
  68. }
  69. - (void)addParseDeclarations {
  70. // add shares before adding the superclass's attributes so it shows
  71. // first in the description's list of attributes
  72. NSArray *attrs = [NSArray arrayWithObject:kSharesAttr];
  73. [self addLocalAttributeDeclarations:attrs];
  74. [super addParseDeclarations];
  75. }
  76. - (NSDecimalNumber *)shares {
  77. return [self decimalNumberForAttribute:kSharesAttr];
  78. }
  79. - (void)setShares:(NSNumber *)num {
  80. [self setStringValue:[num stringValue] forAttribute:kSharesAttr];
  81. }
  82. @end
  83. //
  84. // common base
  85. //
  86. @implementation GDataPortfolioBase
  87. - (void)addExtensionDeclarations {
  88. [super addExtensionDeclarations];
  89. Class elementClass = [self class];
  90. [self addExtensionDeclarationForParentClass:elementClass
  91. childClasses:
  92. [GDataCostBasis class],
  93. [GDataDaysGain class],
  94. [GDataGain class],
  95. [GDataMarketValue class],
  96. nil];
  97. }
  98. - (void)addParseDeclarations {
  99. NSArray *attrs = [NSArray arrayWithObjects:
  100. kGainPercentageAttr, kReturnOverallAttr, kReturnYTDAttr,
  101. kReturn1wAttr, kReturn1yAttr, kReturn3mAttr, kReturn3yAttr,
  102. kReturn4wAttr, kReturn5yAttr, nil];
  103. [self addLocalAttributeDeclarations:attrs];
  104. }
  105. #if !GDATA_SIMPLE_DESCRIPTIONS
  106. - (NSMutableArray *)itemsForDescription {
  107. static struct GDataDescriptionRecord descRecs[] = {
  108. { @"costBasis", @"costBasis", kGDataDescValueLabeled },
  109. { @"daysGain", @"daysGain", kGDataDescValueLabeled },
  110. { @"gain", @"gain", kGDataDescValueLabeled },
  111. { @"daysGain", @"daysGain", kGDataDescValueLabeled },
  112. { nil, nil, (GDataDescRecTypes)0 }
  113. };
  114. NSMutableArray *items = [super itemsForDescription];
  115. [self addDescriptionRecords:descRecs toItems:items];
  116. return items;
  117. }
  118. #endif
  119. // common attributes
  120. - (NSNumber *)gainPercentage {
  121. return [self doubleNumberForAttribute:kGainPercentageAttr];
  122. }
  123. - (void)setGainPercentage:(NSNumber *)num {
  124. [self setStringValue:[num stringValue] forAttribute:kGainPercentageAttr];
  125. }
  126. - (NSDecimalNumber *)return1w {
  127. return [self decimalNumberForAttribute:kReturn1wAttr];
  128. }
  129. - (void)setReturn1w:(NSNumber *)num {
  130. [self setStringValue:[num stringValue] forAttribute:kReturn1wAttr];
  131. }
  132. - (NSDecimalNumber *)return1y {
  133. return [self decimalNumberForAttribute:kReturn1yAttr];
  134. }
  135. - (void)setReturn1y:(NSNumber *)num {
  136. [self setStringValue:[num stringValue] forAttribute:kReturn1yAttr];
  137. }
  138. - (NSDecimalNumber *)return3m {
  139. return [self decimalNumberForAttribute:kReturn3mAttr];
  140. }
  141. - (void)setReturn3m:(NSNumber *)num {
  142. [self setStringValue:[num stringValue] forAttribute:kReturn3mAttr];
  143. }
  144. - (NSDecimalNumber *)return3y {
  145. return [self decimalNumberForAttribute:kReturn3yAttr];
  146. }
  147. - (void)setReturn3y:(NSNumber *)num {
  148. [self setStringValue:[num stringValue] forAttribute:kReturn3yAttr];
  149. }
  150. - (NSDecimalNumber *)return4w {
  151. return [self decimalNumberForAttribute:kReturn4wAttr];
  152. }
  153. - (void)setReturn4w:(NSNumber *)num {
  154. [self setStringValue:[num stringValue] forAttribute:kReturn4wAttr];
  155. }
  156. - (NSDecimalNumber *)return5y {
  157. return [self decimalNumberForAttribute:kReturn5yAttr];
  158. }
  159. - (void)setReturn5y:(NSNumber *)num {
  160. [self setStringValue:[num stringValue] forAttribute:kReturn5yAttr];
  161. }
  162. - (NSDecimalNumber *)returnOverall {
  163. return [self decimalNumberForAttribute:kReturnOverallAttr];
  164. }
  165. - (void)setReturnOverall:(NSNumber *)num {
  166. [self setStringValue:[num stringValue] forAttribute:kReturnOverallAttr];
  167. }
  168. - (NSDecimalNumber *)returnYTD {
  169. return [self decimalNumberForAttribute:kReturnYTDAttr];
  170. }
  171. - (void)setReturnYTD:(NSNumber *)num {
  172. [self setStringValue:[num stringValue] forAttribute:kReturnYTDAttr];
  173. }
  174. // extensions
  175. - (GDataCostBasis *)costBasis {
  176. return [self objectForExtensionClass:[GDataCostBasis class]];
  177. }
  178. - (void)setCostBasis:(GDataCostBasis *)obj {
  179. [self setObject:obj forExtensionClass:[GDataCostBasis class]];
  180. }
  181. - (GDataGain *)gain {
  182. return [self objectForExtensionClass:[GDataGain class]];
  183. }
  184. - (void)setGain:(GDataGain *)obj {
  185. [self setObject:obj forExtensionClass:[GDataGain class]];
  186. }
  187. - (GDataDaysGain *)daysGain {
  188. return [self objectForExtensionClass:[GDataDaysGain class]];
  189. }
  190. - (void)setDaysGain:(GDataDaysGain *)obj {
  191. [self setObject:obj forExtensionClass:[GDataDaysGain class]];
  192. }
  193. - (GDataMarketValue *)marketValue {
  194. return [self objectForExtensionClass:[GDataMarketValue class]];
  195. }
  196. - (void)setMarketValue:(GDataMarketValue *)obj {
  197. [self setObject:obj forExtensionClass:[GDataMarketValue class]];
  198. }
  199. @end
  200. #endif // !GDATA_REQUIRE_SERVICE_INCLUDES || GDATA_INCLUDE_FINANCE_SERVICE