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