JXMediaObject.m 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. //
  2. // JXMediaObject.m
  3. //
  4. // Created by Reese on 13-8-11.
  5. // Copyright (c) 2013年 Reese. All rights reserved.
  6. //
  7. #import "JXMediaObject.h"
  8. #import "FMDatabase.h"
  9. #import "FMResultSet.h"
  10. #import "AppDelegate.h"
  11. #import "JXMessageObject.h"
  12. @implementation JXMediaObject
  13. @synthesize userId;
  14. @synthesize fileName;
  15. @synthesize name;
  16. @synthesize remark;
  17. @synthesize isVideo;
  18. @synthesize timeLen;
  19. @synthesize createTime;
  20. @synthesize url;
  21. static JXMediaObject *shared;
  22. +(JXMediaObject*)sharedInstance{
  23. static dispatch_once_t onceToken;
  24. dispatch_once(&onceToken, ^{
  25. shared=[[JXMediaObject alloc] init];
  26. });
  27. return shared;
  28. }
  29. -(id)init{
  30. self = [super init];
  31. if(self){
  32. _tableName = @"media";
  33. self.userId = nil;
  34. self.isDelete = [NSNumber numberWithBool:NO];
  35. }
  36. return self;
  37. }
  38. -(void)dealloc{
  39. // NSLog(@"JXMediaObject.dealloc");
  40. self.userId = nil;
  41. self.fileName = nil;
  42. self.photoPath = nil;
  43. self.name = nil;
  44. self.remark = nil;
  45. self.isVideo = nil;
  46. self.isDelete = nil;
  47. self.timeLen = nil;
  48. self.createTime = nil;
  49. self.url = nil;
  50. // [super dealloc];
  51. }
  52. -(BOOL)insert
  53. {
  54. NSString* myUserId = MY_USER_ID;
  55. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  56. [self checkTableCreatedInDb:db];
  57. if (!self.createTime) {
  58. self.createTime = [NSDate date];
  59. }
  60. NSString *sql=[NSString stringWithFormat:@"INSERT INTO '%@' (userId,fileName,createTime,name,remark,timeLen,isVideo,url,photoPath,isDelete) VALUES (?,?,?,?,?,?,?,?,?,?)",_tableName];
  61. BOOL worked = [db executeUpdate:sql,self.userId,self.fileName,self.createTime,self.name,self.remark,self.timeLen,self.isVideo,self.url,self.photoPath,self.isDelete];
  62. // FMDBQuickCheck(worked);
  63. if(!worked)
  64. worked = [self update];
  65. return worked;
  66. }
  67. -(BOOL)update
  68. {
  69. NSString* myUserId = MY_USER_ID;
  70. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  71. [self checkTableCreatedInDb:db];
  72. NSString *sql=[NSString stringWithFormat:@"update '%@' set url=?,name=?,remark=? where mediaId=?",_tableName];
  73. BOOL worked = [db executeUpdate:sql,self.url,self.name,self.remark,self.mediaId];
  74. // FMDBQuickCheck(worked);
  75. return worked;
  76. }
  77. -(BOOL)delete
  78. {
  79. NSString* myUserId = MY_USER_ID;
  80. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  81. [self checkTableCreatedInDb:db];
  82. if (self.photoPath.length > 0) { // 当是手机中的视频时,更新isDelete = YES,以便删除时不显示
  83. self.isDelete = [NSNumber numberWithBool:YES];
  84. BOOL worked=[db executeUpdate:[NSString stringWithFormat:@"update '%@' set isDelete=? where mediaId=?",_tableName],self.isDelete,self.mediaId];
  85. return worked;
  86. }
  87. BOOL worked=[db executeUpdate:[NSString stringWithFormat:@"delete from %@ where mediaId=?",_tableName],self.mediaId];
  88. return worked;
  89. }
  90. // 清除缓存后删除所有
  91. -(BOOL)deleteAll {
  92. NSString* myUserId = MY_USER_ID;
  93. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  94. [self checkTableCreatedInDb:db];
  95. BOOL worked=[db executeUpdate:[NSString stringWithFormat:@"delete from %@",_tableName]];
  96. return worked;
  97. }
  98. -(void)fromDataset:(JXMediaObject*)obj rs:(FMResultSet*)rs{
  99. obj.userId=[rs stringForColumn:kMedia_userId];
  100. obj.fileName=[rs stringForColumn:kMedia_FileName];
  101. obj.photoPath=[rs stringForColumn:kMedia_PhotoPath];
  102. obj.remark=[rs stringForColumn:kMedia_Remark];
  103. obj.name=[rs stringForColumn:kMedia_Name];
  104. obj.url=[rs stringForColumn:kMedia_url];
  105. obj.timeLen=[rs objectForColumnName:kMedia_timeLen];
  106. obj.createTime=[rs dateForColumn:kMedia_Time];
  107. obj.isVideo=[rs objectForColumnName:kMedia_IsVideo];
  108. obj.isDelete=[rs objectForColumnName:kMedia_IsDelete];
  109. obj.mediaId=[rs objectForColumnName:kMedia_ID];
  110. }
  111. -(void)fromDictionary:(JXMediaObject*)obj dict:(NSDictionary*)aDic
  112. {
  113. // obj.userId = [aDic objectForKey:kUSER_ID];
  114. }
  115. -(NSDictionary*)toDictionary
  116. {
  117. // NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:userId,kUSER_ID,msgId,kMedia_MsgID,time,kMedia_Time, nil];
  118. // return dic;
  119. return nil;
  120. }
  121. -(BOOL)checkTableCreatedInDb:(FMDatabase *)db
  122. {
  123. NSString *createStr=[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS '%@' ('mediaId' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE ,'userId' VARCHAR,'createTime' DATETIME,'name' VARCHAR,'remark' VARCHAR,'fileName' VARCHAR,'url' VARCHAR,'isVideo' INTEGER,'timeLen' INTEGER,'photoPath' INTEGER,'isDelete' INTEGER)",_tableName];
  124. BOOL worked = [db executeUpdate:createStr];
  125. // FMDBQuickCheck(worked);
  126. return worked;
  127. }
  128. -(NSMutableArray*)fetch
  129. {
  130. NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  131. NSString* myUserId = MY_USER_ID;
  132. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  133. [self checkTableCreatedInDb:db];
  134. NSString *sql=[NSString stringWithFormat:@"select * from media where isDelete<>1 order by mediaId desc"];
  135. FMResultSet *rs=[db executeQuery:sql];
  136. while ([rs next]) {
  137. JXMediaObject *user=[[JXMediaObject alloc] init];
  138. [self fromDataset:user rs:rs];
  139. [resultArr addObject:user];
  140. // [user release];
  141. }
  142. [rs close];
  143. // if([resultArr count]==0){
  144. //// [resultArr release];
  145. // resultArr = nil;
  146. // }
  147. return resultArr;
  148. }
  149. - (BOOL)haveTheMediaWithPhotoPath:(NSString *)photoPath {
  150. NSString* myUserId = MY_USER_ID;
  151. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  152. [self checkTableCreatedInDb:db];
  153. NSString *sql=[NSString stringWithFormat:@"select * from media where photoPath=?"];
  154. FMResultSet *rs=[db executeQuery:sql,photoPath];
  155. while ([rs next]) {
  156. return YES;
  157. }
  158. return NO;
  159. }
  160. @end