/DatabasesArrayController.m

http://github.com/bububa/MongoHub-Mac · Objective C · 85 lines · 69 code · 9 blank · 7 comment · 9 complexity · a28fbe587fdc5b95fc534d5f2971f4e9 MD5 · raw file

  1. //
  2. // DatabasesArrayCollection.m
  3. // MongoHub
  4. //
  5. // Created by Syd on 10-4-25.
  6. // Copyright 2010 MusicPeace.ORG. All rights reserved.
  7. //
  8. #import "DatabasesArrayController.h"
  9. #import "Connection.h"
  10. #import "Database.h"
  11. @implementation DatabasesArrayController
  12. - (void)awakeFromNib
  13. {
  14. if ([NSArrayController instancesRespondToSelector:@selector(awakeFromNib)])
  15. {
  16. [super awakeFromNib];
  17. }
  18. [self setClearsFilterPredicateOnInsertion:NO];
  19. }
  20. - (id)newObjectWithConn:(Connection *) conn name:(NSString *)name user:(NSString *)user password:(NSString *)password
  21. {
  22. id newObj = [super newObject];
  23. [newObj setValue:conn forKey:@"connection"];
  24. [newObj setValue:name forKey:@"name"];
  25. [newObj setValue:user forKey:@"user"];
  26. [newObj setValue:password forKey:@"password"];
  27. return newObj;
  28. }
  29. - (void)clean:(Connection *)conn databases:(NSArray *)databases
  30. {
  31. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"connection=%@", conn];
  32. NSArray *dblist = [self itemsUsingFetchPredicate:predicate];
  33. for (Database *db in dblist) {
  34. bool exist = false;
  35. for (NSString *d in databases) {
  36. if (db.name == d) {
  37. exist = true;
  38. break;
  39. }
  40. }
  41. if (!exist) {
  42. [super remove:db];
  43. }
  44. }
  45. }
  46. - (Database *)dbInfo:(Connection *) conn name:(NSString *)name
  47. {
  48. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"connection=%@ AND name=%@", conn, name];
  49. if ([[self itemsUsingFetchPredicate:predicate] count]>0) {
  50. return [[self itemsUsingFetchPredicate:predicate] objectAtIndex:0];
  51. }
  52. return nil;
  53. }
  54. - (BOOL)checkDuplicate:(Connection *) conn name:(NSString *)name
  55. {
  56. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"connection=%@ AND name=%@", conn, name];
  57. if ([[self itemsUsingFetchPredicate:predicate] count]>0) {
  58. return YES;
  59. }else {
  60. return NO;
  61. }
  62. }
  63. - (NSArray *)itemsUsingFetchPredicate:(NSPredicate *)fetchPredicate
  64. {
  65. NSError *error = nil;
  66. NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
  67. [request setEntity:[NSEntityDescription entityForName:[self entityName]
  68. inManagedObjectContext:[self managedObjectContext]]];
  69. NSArray *objects = [[self managedObjectContext]
  70. executeFetchRequest:request error:&error];
  71. if (error) {
  72. NSLog(@"Fetch error! In AWViewPositionArrayController:itemsUseingFetchPredicate");
  73. }
  74. return [objects filteredArrayUsingPredicate:fetchPredicate];
  75. }
  76. @end