/core/externals/update-engine/externals/gdata-objectivec-client/Source/Elements/GDataStructuredPostalAddress.m

http://macfuse.googlecode.com/ · Objective C · 462 lines · 316 code · 114 blank · 32 comment · 10 complexity · b61d615bbc15cdf3aa86f7a5e2bf6f69 MD5 · raw file

  1. /* Copyright (c) 2009 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. // GDataStructuredPostalAddress.m
  17. //
  18. #if !GDATA_REQUIRE_SERVICE_INCLUDES || GDATA_INCLUDE_CONTACTS_SERVICE \
  19. || GDATA_INCLUDE_MAPS_SERVICE
  20. #define GDATASTRUCTUREDPOSTALADDRESS_DEFINE_GLOBALS 1
  21. #import "GDataStructuredPostalAddress.h"
  22. #import "GDataValueConstruct.h"
  23. //
  24. // GDataStructuredPostalAddress private classes
  25. //
  26. @interface GDataPostalAddressAgent : GDataValueElementConstruct <GDataExtension>
  27. @end
  28. @implementation GDataPostalAddressAgent
  29. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  30. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  31. + (NSString *)extensionElementLocalName { return @"agent"; }
  32. @end
  33. @interface GDataPostalAddressCity : GDataValueElementConstruct <GDataExtension>
  34. @end
  35. @implementation GDataPostalAddressCity
  36. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  37. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  38. + (NSString *)extensionElementLocalName { return @"city"; }
  39. @end
  40. @interface GDataPostalAddressCountry : GDataValueElementConstruct <GDataExtension>
  41. - (NSString *)code;
  42. - (void)setCode:(NSString *)str;
  43. @end
  44. @implementation GDataPostalAddressCountry
  45. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  46. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  47. + (NSString *)extensionElementLocalName { return @"country"; }
  48. static NSString* const kCodeAttr = @"code";
  49. - (void)addParseDeclarations {
  50. // this is a subclass of GDataValueElementConstruct, which has its own parse
  51. // declarations
  52. [super addParseDeclarations];
  53. NSArray *attrs = [NSArray arrayWithObject:kCodeAttr];
  54. [self addLocalAttributeDeclarations:attrs];
  55. [self addContentValueDeclaration];
  56. }
  57. - (NSString *)code {
  58. return [self stringValueForAttribute:kCodeAttr];
  59. }
  60. - (void)setCode:(NSString *)str {
  61. [self setStringValue:str forAttribute:kCodeAttr];
  62. }
  63. @end
  64. @interface GDataPostalAddressFormattedAddress : GDataValueElementConstruct <GDataExtension>
  65. @end
  66. @implementation GDataPostalAddressFormattedAddress
  67. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  68. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  69. + (NSString *)extensionElementLocalName { return @"formattedAddress"; }
  70. @end
  71. @interface GDataPostalAddressHouseName : GDataValueElementConstruct <GDataExtension>
  72. @end
  73. @implementation GDataPostalAddressHouseName
  74. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  75. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  76. + (NSString *)extensionElementLocalName { return @"housename"; }
  77. @end
  78. @interface GDataPostalAddressNeighborhood : GDataValueElementConstruct <GDataExtension>
  79. @end
  80. @implementation GDataPostalAddressNeighborhood
  81. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  82. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  83. + (NSString *)extensionElementLocalName { return @"neighborhood"; }
  84. @end
  85. @interface GDataPostalAddressPOBox : GDataValueElementConstruct <GDataExtension>
  86. @end
  87. @implementation GDataPostalAddressPOBox
  88. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  89. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  90. + (NSString *)extensionElementLocalName { return @"pobox"; }
  91. @end
  92. @interface GDataPostalAddressPostCode : GDataValueElementConstruct <GDataExtension>
  93. @end
  94. @implementation GDataPostalAddressPostCode
  95. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  96. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  97. + (NSString *)extensionElementLocalName { return @"postcode"; }
  98. @end
  99. @interface GDataPostalAddressRegion : GDataValueElementConstruct <GDataExtension>
  100. @end
  101. @implementation GDataPostalAddressRegion
  102. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  103. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  104. + (NSString *)extensionElementLocalName { return @"region"; }
  105. @end
  106. @interface GDataPostalAddressStreet : GDataValueElementConstruct <GDataExtension>
  107. @end
  108. @implementation GDataPostalAddressStreet
  109. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  110. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  111. + (NSString *)extensionElementLocalName { return @"street"; }
  112. @end
  113. @interface GDataPostalAddressSubregion : GDataValueElementConstruct <GDataExtension>
  114. @end
  115. @implementation GDataPostalAddressSubregion
  116. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  117. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  118. + (NSString *)extensionElementLocalName { return @"subregion"; }
  119. @end
  120. //
  121. // GDataStructuredPostalAddress
  122. //
  123. // attributes
  124. static NSString* const kLabelAttr = @"label";
  125. static NSString* const kMailClassAttr = @"mailClass";
  126. static NSString* const kPrimaryAttr = @"primary";
  127. static NSString* const kRelAttr = @"rel";
  128. static NSString* const kUsageAttr = @"usage";
  129. @implementation GDataStructuredPostalAddress
  130. + (NSString *)extensionElementURI { return kGDataNamespaceGData; }
  131. + (NSString *)extensionElementPrefix { return kGDataNamespaceGDataPrefix; }
  132. + (NSString *)extensionElementLocalName { return @"structuredPostalAddress"; }
  133. + (id)structuredPostalAddress {
  134. GDataStructuredPostalAddress *obj = [self object];
  135. return obj;
  136. }
  137. - (void)addParseDeclarations {
  138. NSArray *attrs = [NSArray arrayWithObjects:
  139. kLabelAttr, kMailClassAttr, kPrimaryAttr, kRelAttr,
  140. kUsageAttr, nil];
  141. [self addLocalAttributeDeclarations:attrs];
  142. }
  143. - (void)addExtensionDeclarations {
  144. [super addExtensionDeclarations];
  145. [self addExtensionDeclarationForParentClass:[self class]
  146. childClasses:
  147. [GDataPostalAddressAgent class],
  148. [GDataPostalAddressCity class],
  149. [GDataPostalAddressCountry class],
  150. [GDataPostalAddressFormattedAddress class],
  151. [GDataPostalAddressHouseName class],
  152. [GDataPostalAddressNeighborhood class],
  153. [GDataPostalAddressPOBox class],
  154. [GDataPostalAddressPostCode class],
  155. [GDataPostalAddressRegion class],
  156. [GDataPostalAddressStreet class],
  157. [GDataPostalAddressSubregion class],
  158. nil];
  159. }
  160. #if !GDATA_SIMPLE_DESCRIPTIONS
  161. - (NSMutableArray *)itemsForDescription {
  162. static struct GDataDescriptionRecord descRecs[] = {
  163. { @"agent", @"agent", kGDataDescValueLabeled },
  164. { @"city", @"city", kGDataDescValueLabeled },
  165. { @"country", @"countryName", kGDataDescValueLabeled },
  166. { @"countryCode", @"countryCode", kGDataDescValueLabeled },
  167. { @"fmtAddr", @"formattedAddress", kGDataDescValueLabeled },
  168. { @"house", @"houseName", kGDataDescValueLabeled },
  169. { @"neighborhood", @"neighborhood", kGDataDescValueLabeled },
  170. { @"pobox", @"POBox", kGDataDescValueLabeled },
  171. { @"postCode", @"postCode", kGDataDescValueLabeled },
  172. { @"region", @"region", kGDataDescValueLabeled },
  173. { @"street", @"street", kGDataDescValueLabeled },
  174. { @"subregion", @"subregion", kGDataDescValueLabeled },
  175. { nil, nil, (GDataDescRecTypes)0 }
  176. };
  177. NSMutableArray *items = [super itemsForDescription];
  178. [self addDescriptionRecords:descRecs toItems:items];
  179. return items;
  180. }
  181. #endif
  182. #pragma mark -
  183. // extensions
  184. - (NSString *)agent {
  185. GDataPostalAddressAgent *obj;
  186. obj = [self objectForExtensionClass:[GDataPostalAddressAgent class]];
  187. return [obj stringValue];
  188. }
  189. - (void)setAgent:(NSString *)str {
  190. GDataPostalAddressAgent *obj;
  191. obj = [GDataPostalAddressAgent valueWithString:str];
  192. [self setObject:obj forExtensionClass:[GDataPostalAddressAgent class]];
  193. }
  194. - (NSString *)city {
  195. GDataPostalAddressCity *obj;
  196. obj = [self objectForExtensionClass:[GDataPostalAddressCity class]];
  197. return [obj stringValue];
  198. }
  199. - (void)setCity:(NSString *)str {
  200. GDataPostalAddressCity *obj;
  201. obj = [GDataPostalAddressCity valueWithString:str];
  202. [self setObject:obj forExtensionClass:[GDataPostalAddressCity class]];
  203. }
  204. // country name and code are in the same element, but we'll expose them
  205. // as if they're independent to keep the interface simpler & KVC-compliant
  206. - (NSString *)countryName {
  207. GDataPostalAddressCountry *obj;
  208. obj = [self objectForExtensionClass:[GDataPostalAddressCountry class]];
  209. return [obj stringValue];
  210. }
  211. - (void)setCountryName:(NSString *)str {
  212. GDataPostalAddressCountry *obj;
  213. obj = [self objectForExtensionClass:[GDataPostalAddressCountry class]];
  214. if (obj == nil && str != nil) {
  215. // lacked the element; create one only if we're really setting a value
  216. obj = [GDataPostalAddressCountry valueWithString:str];
  217. [self setObject:obj forExtensionClass:[GDataPostalAddressCountry class]];
  218. }
  219. [obj setStringValue:str];
  220. }
  221. - (NSString *)countryCode {
  222. GDataPostalAddressCountry *obj;
  223. obj = [self objectForExtensionClass:[GDataPostalAddressCountry class]];
  224. return [obj code];
  225. }
  226. - (void)setCountryCode:(NSString *)str {
  227. GDataPostalAddressCountry *obj;
  228. obj = [self objectForExtensionClass:[GDataPostalAddressCountry class]];
  229. if (obj == nil && str != nil) {
  230. // lacked the element; create one only if we're really setting a value
  231. obj = [GDataPostalAddressCountry valueWithString:nil];
  232. [self setObject:obj forExtensionClass:[GDataPostalAddressCountry class]];
  233. }
  234. [obj setCode:str];
  235. }
  236. - (NSString *)formattedAddress {
  237. GDataPostalAddressFormattedAddress *obj;
  238. obj = [self objectForExtensionClass:[GDataPostalAddressFormattedAddress class]];
  239. return [obj stringValue];
  240. }
  241. - (void)setFormattedAddress:(NSString *)str {
  242. GDataPostalAddressFormattedAddress *obj;
  243. obj = [GDataPostalAddressFormattedAddress valueWithString:str];
  244. [self setObject:obj forExtensionClass:[GDataPostalAddressFormattedAddress class]];
  245. }
  246. - (NSString *)houseName {
  247. GDataPostalAddressHouseName *obj;
  248. obj = [self objectForExtensionClass:[GDataPostalAddressHouseName class]];
  249. return [obj stringValue];
  250. }
  251. - (void)setHouseName:(NSString *)str {
  252. GDataPostalAddressHouseName *obj;
  253. obj = [GDataPostalAddressHouseName valueWithString:str];
  254. [self setObject:obj forExtensionClass:[GDataPostalAddressHouseName class]];
  255. }
  256. - (NSString *)neighborhood {
  257. GDataPostalAddressNeighborhood *obj;
  258. obj = [self objectForExtensionClass:[GDataPostalAddressNeighborhood class]];
  259. return [obj stringValue];
  260. }
  261. - (void)setNeighborhood:(NSString *)str {
  262. GDataPostalAddressNeighborhood *obj;
  263. obj = [GDataPostalAddressNeighborhood valueWithString:str];
  264. [self setObject:obj forExtensionClass:[GDataPostalAddressNeighborhood class]];
  265. }
  266. - (NSString *)POBox {
  267. GDataPostalAddressPOBox *obj;
  268. obj = [self objectForExtensionClass:[GDataPostalAddressPOBox class]];
  269. return [obj stringValue];
  270. }
  271. - (void)setPOBox:(NSString *)str {
  272. GDataPostalAddressPOBox *obj;
  273. obj = [GDataPostalAddressPOBox valueWithString:str];
  274. [self setObject:obj forExtensionClass:[GDataPostalAddressPOBox class]];
  275. }
  276. - (NSString *)postCode {
  277. GDataPostalAddressPostCode *obj;
  278. obj = [self objectForExtensionClass:[GDataPostalAddressPostCode class]];
  279. return [obj stringValue];
  280. }
  281. - (void)setPostCode:(NSString *)str {
  282. GDataPostalAddressPostCode *obj;
  283. obj = [GDataPostalAddressPostCode valueWithString:str];
  284. [self setObject:obj forExtensionClass:[GDataPostalAddressPostCode class]];
  285. }
  286. - (NSString *)region {
  287. GDataPostalAddressRegion *obj;
  288. obj = [self objectForExtensionClass:[GDataPostalAddressRegion class]];
  289. return [obj stringValue];
  290. }
  291. - (void)setRegion:(NSString *)str {
  292. GDataPostalAddressRegion *obj;
  293. obj = [GDataPostalAddressRegion valueWithString:str];
  294. [self setObject:obj forExtensionClass:[GDataPostalAddressRegion class]];
  295. }
  296. - (NSString *)street {
  297. GDataPostalAddressStreet *obj;
  298. obj = [self objectForExtensionClass:[GDataPostalAddressStreet class]];
  299. return [obj stringValue];
  300. }
  301. - (void)setStreet:(NSString *)str {
  302. GDataPostalAddressStreet *obj;
  303. obj = [GDataPostalAddressStreet valueWithString:str];
  304. [self setObject:obj forExtensionClass:[GDataPostalAddressStreet class]];
  305. }
  306. - (NSString *)subregion {
  307. GDataPostalAddressSubregion *obj;
  308. obj = [self objectForExtensionClass:[GDataPostalAddressSubregion class]];
  309. return [obj stringValue];
  310. }
  311. - (void)setSubregion:(NSString *)str {
  312. GDataPostalAddressSubregion *obj;
  313. obj = [GDataPostalAddressSubregion valueWithString:str];
  314. [self setObject:obj forExtensionClass:[GDataPostalAddressSubregion class]];
  315. }
  316. // attributes
  317. - (NSString *)label {
  318. return [self stringValueForAttribute:kLabelAttr];
  319. }
  320. - (void)setLabel:(NSString *)str {
  321. [self setStringValue:str forAttribute:kLabelAttr];
  322. }
  323. - (NSString *)mailClass {
  324. return [self stringValueForAttribute:kMailClassAttr];
  325. }
  326. - (void)setMailClass:(NSString *)str {
  327. [self setStringValue:str forAttribute:kMailClassAttr];
  328. }
  329. - (BOOL)isPrimary {
  330. return [self boolValueForAttribute:kPrimaryAttr defaultValue:NO];
  331. }
  332. - (void)setIsPrimary:(BOOL)flag {
  333. [self setBoolValue:flag defaultValue:NO forAttribute:kPrimaryAttr];
  334. }
  335. - (NSString *)rel {
  336. return [self stringValueForAttribute:kRelAttr];
  337. }
  338. - (void)setRel:(NSString *)str {
  339. [self setStringValue:str forAttribute:kRelAttr];
  340. }
  341. - (NSString *)usage {
  342. return [self stringValueForAttribute:kUsageAttr];
  343. }
  344. - (void)setUsage:(NSString *)str {
  345. [self setStringValue:str forAttribute:kUsageAttr];
  346. }
  347. @end
  348. #endif // !GDATA_REQUIRE_SERVICE_INCLUDES || GDATA_INCLUDE_*_SERVICE