Revision fb27f368 pithos-macos/PithosAccountNode.m

b/pithos-macos/PithosAccountNode.m
2 2
//  PithosAccountNode.m
3 3
//  pithos-macos
4 4
//
5
// Copyright 2011-2012 GRNET S.A. All rights reserved.
5
// Copyright 2011-2013 GRNET S.A. All rights reserved.
6 6
//
7 7
// Redistribution and use in source and binary forms, with or
8 8
// without modification, are permitted provided that the following
......
49 49
static NSImage *sharedIcon = nil;
50 50

  
51 51
@implementation PithosAccountNode
52
@synthesize pithos, pithosAccount, accountRequest, applyMetadataAccountRequest, refreshMetadataAccountRequest, translatedGroups;
52
@synthesize pithosAccount, accountRequest, applyMetadataAccountRequest, refreshMetadataAccountRequest, translatedGroups;
53 53

  
54 54
+ (void)initialize {
55 55
	if (self == [PithosAccountNode class])
......
59 59
#pragma mark -
60 60
#pragma mark Object Lifecycle
61 61

  
62
- (id)initWithPithosAccountManager:(PithosAccount *)aPithosAccountManager andPithos:(ASIPithos *)aPithos {
63
    if ((self = [super initWithPithosAccountManager:aPithosAccountManager])) {
64
        pithos = aPithos;
65
    }
66
    return self;
67
}
68

  
69 62
- (void)dealloc {
70 63
    [accountRequest clearDelegatesAndCancel];
71 64
    [refreshMetadataAccountRequest clearDelegatesAndCancel];
......
104 97
}
105 98

  
106 99
#pragma mark -
107
#pragma mark Properties
100
#pragma mark Actions
108 101

  
109
- (void)setPithos:(ASIPithos *)aPithos {
110
    if (aPithos && ![aPithos isEqualTo:pithos]) {
111
        pithos = aPithos;
112
        url = nil;
113
        [accountRequest clearDelegatesAndCancel];
114
        self.accountRequest = nil;
115
        [refreshMetadataAccountRequest clearDelegatesAndCancel];
116
        self.refreshMetadataAccountRequest = nil;
117
        [applyMetadataAccountRequest clearDelegatesAndCancel];
118
        self.applyMetadataAccountRequest = nil;
119
        reset = YES;
120
    }
102
- (void)reset {
103
    [accountRequest clearDelegatesAndCancel];
104
    self.accountRequest = nil;
105
    [refreshMetadataAccountRequest clearDelegatesAndCancel];
106
    self.refreshMetadataAccountRequest = nil;
107
    [applyMetadataAccountRequest clearDelegatesAndCancel];
108
    self.applyMetadataAccountRequest = nil;
109
    children = nil;
110
    newChildren = nil;
111
    self.pithosAccount = nil;
112
    freshness = PithosNodeStateRefreshNeeded;
113
    forcedRefresh = YES;
114
    [self postChildrenUpdatedNotificationName];
115
    [self children];
121 116
}
122 117

  
118
#pragma mark -
119
#pragma mark Properties
120

  
123 121
- (void)setPithosAccount:(ASIPithosAccount *)aPithosAccount {
124 122
    if (![pithosAccount isEqualTo:aPithosAccount]) {
125 123
        pithosAccount = aPithosAccount;
......
128 126
}
129 127

  
130 128
- (NSString *)url {
131
    if (url == nil)
132
        url = [[NSString alloc] initWithFormat:@"%@%@", 
133
               (sharingAccount ? [pithos storageURLWithAuthUser:sharingAccount] : pithos.storageURL),
134
               (shared ? @"?shared" : @"")];
135
    return url;
129
    return [NSString stringWithFormat:@"@account@%@%@",
130
            (sharingAccount ? sharingAccount : pithosAccountManager.pithos.authUser),
131
            (shared ? @"?shared" : @"")];
136 132
}
137 133

  
138 134
- (NSArray *)children {
139 135
    @synchronized(self) {
140
        if (reset) {
141
            [accountRequest clearDelegatesAndCancel];
142
            self.accountRequest = nil;
143
            [refreshMetadataAccountRequest clearDelegatesAndCancel];
144
            self.refreshMetadataAccountRequest = nil;
145
            [applyMetadataAccountRequest clearDelegatesAndCancel];
146
            self.applyMetadataAccountRequest = nil;
147
            children = nil;
148
            newChildren = nil;
149
            self.pithosAccount = nil;
150
            freshness = PithosNodeStateRefreshNeeded;
151
            forcedRefresh = YES;
152
            reset = NO;
153
            [self postChildrenUpdatedNotificationName];
154
        }
155 136
        switch (freshness) {
156 137
            case PithosNodeStateFresh:
157 138
                break;
158 139
            case PithosNodeStateRefreshNeeded:
159 140
                freshness = PithosNodeStateRefreshing;
160
                self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos
141
                self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithosAccountManager.pithos
161 142
                                                                                         limit:0
162 143
                                                                                        marker:nil
163 144
                                                                                        shared:shared
164 145
                                                                                         until:nil];
165 146
                if (sharingAccount)
166
                    [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
147
                    [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithosAccountManager.pithos];
167 148
                else if (!forcedRefresh)
168 149
                    accountRequest.downloadCache = [ASIDownloadCache sharedCache];
169 150
                accountRequest.delegate = self;
......
265 246
                    NSMutableIndexSet *keptNodes = [NSMutableIndexSet indexSet];
266 247
                    for (ASIPithosContainer *container in containers) {
267 248
                        PithosContainerNode *node = [[PithosContainerNode alloc] initWithPithosAccountManager:pithosAccountManager
268
                                                                                                    andPithos:pithos
269 249
                                                                                              pithosContainer:container];
270 250
                        node.parent = self;
271 251
                        node.shared = shared;
......
299 279
                [self postChildrenUpdatedNotificationName];
300 280
            } else {
301 281
                // Do an additional request to fetch more objects
302
                self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos
282
                self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithosAccountManager.pithos
303 283
                                                                                         limit:0
304 284
                                                                                        marker:[[someContainers lastObject] name]
305 285
                                                                                        shared:shared
306 286
                                                                                         until:nil];
307 287
                if (sharingAccount)
308
                    [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
288
                    [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithosAccountManager.pithos];
309 289
                else if (!forcedRefresh)
310 290
                    accountRequest.downloadCache = [ASIDownloadCache sharedCache];
311 291
                accountRequest.delegate = self;
......
485 465
                [groups setObject:[NSArray arrayWithObject:@""] forKey:@"group"];
486 466
            }
487 467
            
488
            self.applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithos
468
            self.applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithosAccountManager.pithos
489 469
                                                                                                        groups:groups
490 470
                                                                                                      metadata:pithosAccount.metadata
491 471
                                                                                                        update:NO];
......
506 486
- (void)refreshInfo {
507 487
    @synchronized(self) {
508 488
        if (refreshMetadataAccountRequest == nil) {
509
            self.refreshMetadataAccountRequest = [ASIPithosAccountRequest accountMetadataRequestWithPithos:pithos];
489
            self.refreshMetadataAccountRequest = [ASIPithosAccountRequest accountMetadataRequestWithPithos:pithosAccountManager.pithos];
510 490
            refreshMetadataAccountRequest.delegate = self;
511 491
            refreshMetadataAccountRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
512 492
            refreshMetadataAccountRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);

Also available in: Unified diff