Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
openbis
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
sispub
openbis
Commits
72d0ba6b
Commit
72d0ba6b
authored
12 years ago
by
cramakri
Browse files
Options
Downloads
Patches
Plain Diff
MINOR: Factored out data pruning from data synchronizing.
SVN: 28269
parent
0c433084
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m
+36
-26
36 additions, 26 deletions
openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m
with
36 additions
and
26 deletions
openbis-ipad/BisKit/Classes/CISDOBIpadServiceManager.m
+
36
−
26
View file @
72d0ba6b
...
...
@@ -72,9 +72,8 @@ NSString *const CISDOBIpadServiceManagerErrorDomain = @"CISDOBIpadServiceManager
@
property
(
strong
,
readonly
)
NSManagedObjectContext
*
managedObjectContext
;
@
property
(
copy
,
nonatomic
)
NSError
*
error
;
@
property
(
nonatomic
)
BOOL
prune
;
@
property
(
strong
,
nonatomic
)
NSDate
*
pruneCutoffDate
;
@
property
(
readonly
)
NSArray
*
deletedEntit
ie
s
;
@
property
(
readonly
)
NSArray
*
deletedEntit
yPermId
s
;
//
Initialization
-
(
id
)
initWithServiceManager
:(
CISDOBIpadServiceManager
*
)
serviceManager
;
...
...
@@ -159,6 +158,13 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl
return
((
CISDOBLiveConnection
*
)(
self
.
service
.
connection
))
.
sessionToken
;
}
//
Save
the
MOC
.
The
deletedEntities
array
should
be
non
-
nil
-
(
BOOL
)
saveManagedObjectContextDeleting
:(
NSArray
*
)
deletedEntities
error
:(
NSError
**
)
error
{
if
(
self
.
mocSaveBlock
)
self
.
mocSaveBlock
(
self
,
deletedEntities
);
return
[
self
.
managedObjectContext
save
:
error
];
}
-
(
void
)
syncEntities
:(
NSArray
*
)
rawEntities
pruning
:(
BOOL
)
prune
notifying
:(
CISDOBIpadServiceManagerCall
*
)
managerCall
{
void
(
^
syncBlock
)(
void
)
=
^
{
...
...
@@ -170,17 +176,21 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl
synchronizer
.
pruneCutoffDate
=
self
.
lastRootSetUpdateDate
;
[
synchronizer
run
];
if
(
prune
)
{
CISDOBBackgroundDataPruner
*
pruner
=
[[
CISDOBBackgroundDataPruner
alloc
]
initWithServiceManager
:
self
];
pruner
.
pruneCutoffDate
=
self
.
lastRootSetUpdateDate
;
[
pruner
run
];
}
[[
NSNotificationCenter
defaultCenter
]
postNotificationName
:
CISDOBIpadServiceDidSynchEntitiesNotification
object
:
self
];
void
(
^
notifyBlock
)(
void
)
=
^
{
//
Save
the
MOC
and
notifiy
the
client
on
the
main
thread
CISDOBBackgroundDataSynchronizer
*
notifySynchronizer
=
synchronizer
;
if
(
!
notifySynchronizer
.
error
)
{
NSError
*
error
;
if
(
self
.
mocSaveBlock
)
self
.
mocSaveBlock
(
self
,
notifySynchronizer
.
deletedEntities
);
if
(
!
[
self
.
managedObjectContext
save
:
&
error
])
{
notifySynchronizer
.
error
=
error
;
}
NSError
*
error
=
nil
;
[
self
saveManagedObjectContextDeleting
:
notifySynchronizer
.
deletedEntities
error
:
&
error
];
notifySynchronizer
.
error
=
error
;
}
[
notifySynchronizer
notifyCallOfResult
];
};
...
...
@@ -543,15 +553,15 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl
}
}
//
If
pruning
is
requested
,
remove
entities
that
were
not
updated
since
the
prune
cutoff
date
if
(
_
prune
&&
self
.
pruneCutoffDate
)
{
//
Remove
all
entities
that
were
not
mentioned
NSFetchRequest
*
fetchRequest
=
[
self
.
serviceManager
fetchRequestForEntitiesNotUpdatedSince
:
self
.
pruneCutoffDate
];
NSArray
*
entitiesToDelete
=
[
self
.
managedObjectContext
executeFetchRequest
:
fetchRequest
error
:
&
error
];
for
(
CISDOBIpadEntity
*
entity
in
entitiesToDelete
)
{
[(
NSMutableArray
*
)
_
deletedEntities
addObject
:
entity
.
permId
];
[
self
.
managedObjectContext
deleteObject
:
entity
];
}
}
//
if
(
_
prune
&&
self
.
pruneCutoffDate
)
{
//
//
Remove
all
entities
that
were
not
mentioned
//
NSFetchRequest
*
fetchRequest
=
[
self
.
serviceManager
fetchRequestForEntitiesNotUpdatedSince
:
self
.
pruneCutoffDate
];
//
NSArray
*
entitiesToDelete
=
[
self
.
managedObjectContext
executeFetchRequest
:
fetchRequest
error
:
&
error
];
//
for
(
CISDOBIpadEntity
*
entity
in
entitiesToDelete
)
{
//
[(
NSMutableArray
*
)
_
deletedEntities
addObject
:
entity
.
permId
];
//
[
self
.
managedObjectContext
deleteObject
:
entity
];
//
}
//
}
success
=
[
self
.
managedObjectContext
save
:
&
error
];
if
(
!
success
)
{
...
...
@@ -586,7 +596,7 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl
_
managedObjectContext
=
[[
NSManagedObjectContext
alloc
]
initWithConcurrencyType
:
NSConfinementConcurrencyType
];
_
managedObjectContext
.
parentContext
=
_
serviceManager
.
managedObjectContext
;
_
error
=
nil
;
_
deletedEntit
ie
s
=
[
NSMutableArray
array
];
_
deletedEntit
yPermId
s
=
[
NSMutableArray
array
];
return
self
;
}
...
...
@@ -594,17 +604,17 @@ static NSManagedObjectContext* GetMainThreadManagedObjectContext(NSURL* storeUrl
//
Actions
-
(
void
)
run
{
if
(
!
self
.
pruneCutoffDate
)
return
;
BOOL
success
;
NSError
*
error
;
//
If
pruning
is
requested
,
remove
entities
that
were
not
updated
since
the
prune
cutoff
date
if
(
_
prune
&&
self
.
pruneCutoffDate
)
{
//
Remove
all
entities
that
were
not
mentioned
NSFetchRequest
*
fetchRequest
=
[
self
.
serviceManager
fetchRequestForEntitiesNotUpdatedSince
:
self
.
pruneCutoffDate
];
NSArray
*
entitiesToDelete
=
[
self
.
managedObjectContext
executeFetchRequest
:
fetchRequest
error
:
&
error
];
for
(
CISDOBIpadEntity
*
entity
in
entitiesToDelete
)
{
[(
NSMutableArray
*
)
_
deletedEntities
addObject
:
entity
.
permId
];
[
self
.
managedObjectContext
deleteObject
:
entity
];
}
//
Remove
entities
that
were
not
updated
since
the
prune
cutoff
date
//
Remove
all
entities
that
were
not
mentioned
NSFetchRequest
*
fetchRequest
=
[
self
.
serviceManager
fetchRequestForEntitiesNotUpdatedSince
:
self
.
pruneCutoffDate
];
NSArray
*
entitiesToDelete
=
[
self
.
managedObjectContext
executeFetchRequest
:
fetchRequest
error
:
&
error
];
for
(
CISDOBIpadEntity
*
entity
in
entitiesToDelete
)
{
[(
NSMutableArray
*
)
_
deletedEntityPermIds
addObject
:
entity
.
permId
];
[
self
.
managedObjectContext
deleteObject
:
entity
];
}
success
=
[
self
.
managedObjectContext
save
:
&
error
];
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment