/core/externals/update-engine/externals/gdata-objectivec-client/Source/Media/GDataMediaGroup.m

http://macfuse.googlecode.com/ · Objective C · 259 lines · 163 code · 60 blank · 36 comment · 2 complexity · 1e4faebb480f846595047bd6a5ef4f17 MD5 · raw file

  1. /* Copyright (c) 2007 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. // GDataMediaGroup.m
  17. //
  18. #if !GDATA_REQUIRE_SERVICE_INCLUDES || GDATA_INCLUDE_PHOTOS_SERVICE \
  19. || GDATA_INCLUDE_YOUTUBE_SERVICE
  20. #define GDATAMEDIAGROUP_DEFINE_GLOBALS 1
  21. #import "GDataMediaGroup.h"
  22. #import "GDataMediaContent.h"
  23. #import "GDataMediaCredit.h"
  24. #import "GDataMediaPlayer.h"
  25. #import "GDataMediaThumbnail.h"
  26. #import "GDataMediaKeywords.h"
  27. #import "GDataMediaCategory.h"
  28. #import "GDataMediaRating.h"
  29. #import "GDataMediaRestriction.h"
  30. // we'll define MediaDescription and MediaTitle here, since they're
  31. // just derived classes of GDataTextConstruct
  32. @implementation GDataMediaDescription
  33. + (NSString *)extensionElementURI { return kGDataNamespaceMedia; }
  34. + (NSString *)extensionElementPrefix { return kGDataNamespaceMediaPrefix; }
  35. + (NSString *)extensionElementLocalName { return @"description"; }
  36. @end
  37. @implementation GDataMediaTitle
  38. + (NSString *)extensionElementURI { return kGDataNamespaceMedia; }
  39. + (NSString *)extensionElementPrefix { return kGDataNamespaceMediaPrefix; }
  40. + (NSString *)extensionElementLocalName { return @"title"; }
  41. @end
  42. @implementation GDataMediaGroup
  43. // for media:group, like
  44. // <media:group> <media:contents ... /> </media:group>
  45. + (NSString *)extensionElementURI { return kGDataNamespaceMedia; }
  46. + (NSString *)extensionElementPrefix { return kGDataNamespaceMediaPrefix; }
  47. + (NSString *)extensionElementLocalName { return @"group"; }
  48. #pragma mark -
  49. + (id)mediaGroup {
  50. GDataMediaGroup *obj = [self object];
  51. return obj;
  52. }
  53. - (void)addExtensionDeclarations {
  54. [super addExtensionDeclarations];
  55. [self addExtensionDeclarationForParentClass:[self class]
  56. childClasses:
  57. [GDataMediaContent class],
  58. [GDataMediaCategory class],
  59. [GDataMediaCredit class],
  60. [GDataMediaDescription class],
  61. [GDataMediaPlayer class],
  62. [GDataMediaRating class],
  63. [GDataMediaRestriction class],
  64. [GDataMediaThumbnail class],
  65. [GDataMediaKeywords class],
  66. [GDataMediaTitle class],
  67. nil];
  68. // still unsupported:
  69. // MediaCopyright, MediaHash, MediaText
  70. }
  71. #if !GDATA_SIMPLE_DESCRIPTIONS
  72. - (NSMutableArray *)itemsForDescription {
  73. static struct GDataDescriptionRecord descRecs[] = {
  74. { @"categories", @"mediaCategories", kGDataDescArrayDescs },
  75. { @"contents", @"mediaContents", kGDataDescArrayDescs },
  76. { @"credits", @"mediaCredits", kGDataDescArrayDescs },
  77. { @"thumbnails", @"mediaThumbnails", kGDataDescArrayDescs },
  78. { @"keywords", @"mediaKeywords", kGDataDescValueLabeled },
  79. { @"description", @"mediaDescription", kGDataDescValueLabeled },
  80. { @"players", @"mediaPlayers", kGDataDescArrayDescs },
  81. { @"ratings", @"mediaRatings", kGDataDescArrayDescs },
  82. { @"title", @"mediaTitle", kGDataDescValueLabeled },
  83. { nil, nil, (GDataDescRecTypes)0 }
  84. };
  85. NSMutableArray *items = [super itemsForDescription];
  86. [self addDescriptionRecords:descRecs toItems:items];
  87. return items;
  88. }
  89. #endif
  90. #pragma mark -
  91. // there are many more possible extensions; see MediaGroup.java
  92. //
  93. // Initially, we're just supporting the ones needed for Google Photos
  94. // MediaCategories
  95. - (NSArray *)mediaCategories {
  96. NSArray *array = [self objectsForExtensionClass:[GDataMediaCategory class]];
  97. return array;
  98. }
  99. - (void)setMediaCategories:(NSArray *)array {
  100. [self setObjects:array forExtensionClass:[GDataMediaCategory class]];
  101. }
  102. - (void)addMediaCategory:(GDataMediaCategory *)attribute {
  103. [self addObject:attribute forExtensionClass:[GDataMediaCategory class]];
  104. }
  105. // MediaContents
  106. - (NSArray *)mediaContents {
  107. NSArray *array = [self objectsForExtensionClass:[GDataMediaContent class]];
  108. return array;
  109. }
  110. - (void)setMediaContents:(NSArray *)array {
  111. [self setObjects:array forExtensionClass:[GDataMediaContent class]];
  112. }
  113. - (void)addMediaContent:(GDataMediaContent *)attribute {
  114. [self addObject:attribute forExtensionClass:[GDataMediaContent class]];
  115. }
  116. // MediaCredits
  117. - (NSArray *)mediaCredits {
  118. NSArray *array = [self objectsForExtensionClass:[GDataMediaCredit class]];
  119. return array;
  120. }
  121. - (void)setMediaCredits:(NSArray *)array {
  122. [self setObjects:array forExtensionClass:[GDataMediaCredit class]];
  123. }
  124. - (void)addMediaCredit:(GDataMediaCredit *)attribute {
  125. [self addObject:attribute forExtensionClass:[GDataMediaCredit class]];
  126. }
  127. // MediaPlayers
  128. - (NSArray *)mediaPlayers {
  129. NSArray *array = [self objectsForExtensionClass:[GDataMediaPlayer class]];
  130. return array;
  131. }
  132. - (void)setMediaPlayers:(NSArray *)array {
  133. [self setObjects:array forExtensionClass:[GDataMediaPlayer class]];
  134. }
  135. - (void)addMediaPlayer:(GDataMediaPlayer *)attribute {
  136. [self addObject:attribute forExtensionClass:[GDataMediaPlayer class]];
  137. }
  138. // MediaRatings
  139. - (NSArray *)mediaRatings {
  140. NSArray *array = [self objectsForExtensionClass:[GDataMediaRating class]];
  141. return array;
  142. }
  143. - (void)setMediaRatings:(NSArray *)array {
  144. [self setObjects:array forExtensionClass:[GDataMediaRating class]];
  145. }
  146. - (void)addMediaRating:(GDataMediaRating *)attribute {
  147. [self addObject:attribute forExtensionClass:[GDataMediaRating class]];
  148. }
  149. // MediaRatings
  150. - (NSArray *)mediaRestrictions {
  151. NSArray *array = [self objectsForExtensionClass:[GDataMediaRestriction class]];
  152. return array;
  153. }
  154. - (void)setMediaRestrictions:(NSArray *)array {
  155. [self setObjects:array forExtensionClass:[GDataMediaRestriction class]];
  156. }
  157. - (void)addMediaRestriction:(GDataMediaRestriction *)attribute {
  158. [self addObject:attribute forExtensionClass:[GDataMediaRestriction class]];
  159. }
  160. // MediaThumbnails
  161. - (NSArray *)mediaThumbnails {
  162. NSArray *array = [self objectsForExtensionClass:[GDataMediaThumbnail class]];
  163. return array;
  164. }
  165. - (void)setMediaThumbnails:(NSArray *)array {
  166. [self setObjects:array forExtensionClass:[GDataMediaThumbnail class]];
  167. }
  168. - (void)addMediaThumbnail:(GDataMediaThumbnail *)attribute {
  169. [self addObject:attribute forExtensionClass:[GDataMediaThumbnail class]];
  170. }
  171. // MediaKeywords
  172. - (GDataMediaKeywords *)mediaKeywords {
  173. GDataMediaKeywords *obj =
  174. [self objectForExtensionClass:[GDataMediaKeywords class]];
  175. return obj;
  176. }
  177. - (void)setMediaKeywords:(GDataMediaKeywords *)obj {
  178. [self setObject:obj forExtensionClass:[GDataMediaKeywords class]];
  179. }
  180. // MediaDescription
  181. - (GDataMediaDescription *)mediaDescription {
  182. GDataMediaDescription *obj =
  183. [self objectForExtensionClass:[GDataMediaDescription class]];
  184. return obj;
  185. }
  186. - (void)setMediaDescription:(GDataMediaDescription *)obj {
  187. [self setObject:obj forExtensionClass:[GDataMediaDescription class]];
  188. }
  189. // MediaTitle
  190. - (GDataMediaTitle *)mediaTitle {
  191. GDataMediaTitle *obj =
  192. [self objectForExtensionClass:[GDataMediaTitle class]];
  193. return obj;
  194. }
  195. - (void)setMediaTitle:(GDataMediaTitle *)obj {
  196. [self setObject:obj forExtensionClass:[GDataMediaTitle class]];
  197. }
  198. @end
  199. #endif // #if !GDATA_REQUIRE_SERVICE_INCLUDES || GDATA_INCLUDE_*_SERVICE