X-Git-Url: https://code.grnet.gr/git/pithos-macos/blobdiff_plain/baaf13974a1e36994df4f904e11c674544d286d6..fb27f36872b58b7d74ac693639072daeebfd120b:/pithos-macos/PithosAccountNode.m diff --git a/pithos-macos/PithosAccountNode.m b/pithos-macos/PithosAccountNode.m index 69029b5..a9d3a18 100644 --- a/pithos-macos/PithosAccountNode.m +++ b/pithos-macos/PithosAccountNode.m @@ -2,7 +2,7 @@ // PithosAccountNode.m // pithos-macos // -// Copyright 2011-2012 GRNET S.A. All rights reserved. +// Copyright 2011-2013 GRNET S.A. All rights reserved. // // Redistribution and use in source and binary forms, with or // without modification, are permitted provided that the following @@ -49,7 +49,7 @@ static NSImage *sharedIcon = nil; @implementation PithosAccountNode -@synthesize pithos, pithosAccount, accountRequest, applyMetadataAccountRequest, refreshMetadataAccountRequest, translatedGroups; +@synthesize pithosAccount, accountRequest, applyMetadataAccountRequest, refreshMetadataAccountRequest, translatedGroups; + (void)initialize { if (self == [PithosAccountNode class]) @@ -59,13 +59,6 @@ static NSImage *sharedIcon = nil; #pragma mark - #pragma mark Object Lifecycle -- (id)initWithPithosAccountManager:(PithosAccount *)aPithosAccountManager andPithos:(ASIPithos *)aPithos { - if ((self = [super initWithPithosAccountManager:aPithosAccountManager])) { - pithos = aPithos; - } - return self; -} - - (void)dealloc { [accountRequest clearDelegatesAndCancel]; [refreshMetadataAccountRequest clearDelegatesAndCancel]; @@ -104,22 +97,27 @@ static NSImage *sharedIcon = nil; } #pragma mark - -#pragma mark Properties +#pragma mark Actions -- (void)setPithos:(ASIPithos *)aPithos { - if (aPithos && ![aPithos isEqualTo:pithos]) { - pithos = aPithos; - url = nil; - [accountRequest clearDelegatesAndCancel]; - self.accountRequest = nil; - [refreshMetadataAccountRequest clearDelegatesAndCancel]; - self.refreshMetadataAccountRequest = nil; - [applyMetadataAccountRequest clearDelegatesAndCancel]; - self.applyMetadataAccountRequest = nil; - reset = YES; - } +- (void)reset { + [accountRequest clearDelegatesAndCancel]; + self.accountRequest = nil; + [refreshMetadataAccountRequest clearDelegatesAndCancel]; + self.refreshMetadataAccountRequest = nil; + [applyMetadataAccountRequest clearDelegatesAndCancel]; + self.applyMetadataAccountRequest = nil; + children = nil; + newChildren = nil; + self.pithosAccount = nil; + freshness = PithosNodeStateRefreshNeeded; + forcedRefresh = YES; + [self postChildrenUpdatedNotificationName]; + [self children]; } +#pragma mark - +#pragma mark Properties + - (void)setPithosAccount:(ASIPithosAccount *)aPithosAccount { if (![pithosAccount isEqualTo:aPithosAccount]) { pithosAccount = aPithosAccount; @@ -128,42 +126,25 @@ static NSImage *sharedIcon = nil; } - (NSString *)url { - if (url == nil) - url = [[NSString alloc] initWithFormat:@"%@%@", - (sharingAccount ? [pithos storageURLWithAuthUser:sharingAccount] : pithos.storageURL), - (shared ? @"?shared" : @"")]; - return url; + return [NSString stringWithFormat:@"@account@%@%@", + (sharingAccount ? sharingAccount : pithosAccountManager.pithos.authUser), + (shared ? @"?shared" : @"")]; } - (NSArray *)children { @synchronized(self) { - if (reset) { - [accountRequest clearDelegatesAndCancel]; - self.accountRequest = nil; - [refreshMetadataAccountRequest clearDelegatesAndCancel]; - self.refreshMetadataAccountRequest = nil; - [applyMetadataAccountRequest clearDelegatesAndCancel]; - self.applyMetadataAccountRequest = nil; - children = nil; - newChildren = nil; - self.pithosAccount = nil; - freshness = PithosNodeStateRefreshNeeded; - forcedRefresh = YES; - reset = NO; - [self postChildrenUpdatedNotificationName]; - } switch (freshness) { case PithosNodeStateFresh: break; case PithosNodeStateRefreshNeeded: freshness = PithosNodeStateRefreshing; - self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos + self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithosAccountManager.pithos limit:0 marker:nil shared:shared until:nil]; if (sharingAccount) - [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos]; + [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithosAccountManager.pithos]; else if (!forcedRefresh) accountRequest.downloadCache = [ASIDownloadCache sharedCache]; accountRequest.delegate = self; @@ -265,7 +246,6 @@ static NSImage *sharedIcon = nil; NSMutableIndexSet *keptNodes = [NSMutableIndexSet indexSet]; for (ASIPithosContainer *container in containers) { PithosContainerNode *node = [[PithosContainerNode alloc] initWithPithosAccountManager:pithosAccountManager - andPithos:pithos pithosContainer:container]; node.parent = self; node.shared = shared; @@ -299,13 +279,13 @@ static NSImage *sharedIcon = nil; [self postChildrenUpdatedNotificationName]; } else { // Do an additional request to fetch more objects - self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos + self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithosAccountManager.pithos limit:0 marker:[[someContainers lastObject] name] shared:shared until:nil]; if (sharingAccount) - [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos]; + [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithosAccountManager.pithos]; else if (!forcedRefresh) accountRequest.downloadCache = [ASIDownloadCache sharedCache]; accountRequest.delegate = self; @@ -485,7 +465,7 @@ static NSImage *sharedIcon = nil; [groups setObject:[NSArray arrayWithObject:@""] forKey:@"group"]; } - self.applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithos + self.applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithosAccountManager.pithos groups:groups metadata:pithosAccount.metadata update:NO]; @@ -506,7 +486,7 @@ static NSImage *sharedIcon = nil; - (void)refreshInfo { @synchronized(self) { if (refreshMetadataAccountRequest == nil) { - self.refreshMetadataAccountRequest = [ASIPithosAccountRequest accountMetadataRequestWithPithos:pithos]; + self.refreshMetadataAccountRequest = [ASIPithosAccountRequest accountMetadataRequestWithPithos:pithosAccountManager.pithos]; refreshMetadataAccountRequest.delegate = self; refreshMetadataAccountRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:); refreshMetadataAccountRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);