@ -37,6 +37,7 @@ import com.todoroo.astrid.gtasks.api.GtasksInvoker;
import com.todoroo.astrid.gtasks.auth.GtasksTokenValidator ;
import com.todoroo.astrid.gtasks.auth.GtasksTokenValidator ;
import com.todoroo.astrid.service.AstridDependencyInjector ;
import com.todoroo.astrid.service.AstridDependencyInjector ;
import com.todoroo.astrid.service.MetadataService ;
import com.todoroo.astrid.service.MetadataService ;
import com.todoroo.astrid.service.SyncResultCallbackWrapper ;
import com.todoroo.astrid.service.TaskService ;
import com.todoroo.astrid.service.TaskService ;
import com.todoroo.astrid.sync.SyncResultCallback ;
import com.todoroo.astrid.sync.SyncResultCallback ;
import com.todoroo.astrid.sync.SyncV2Provider ;
import com.todoroo.astrid.sync.SyncV2Provider ;
@ -106,7 +107,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
final boolean isImport = false ;
final boolean isImport = false ;
callback . started ( ) ;
callback . started ( ) ;
callback . incrementMax ( 10 0) ;
callback . incrementMax ( 2 0) ;
gtasksPreferenceService . recordSyncStart ( ) ;
gtasksPreferenceService . recordSyncStart ( ) ;
@ -114,7 +115,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
new Thread ( new Runnable ( ) {
new Thread ( new Runnable ( ) {
@Override
@Override
public void run ( ) {
public void run ( ) {
callback . incrementProgress ( 50) ;
callback . incrementProgress ( 1) ; // 5%
String authToken = getValidatedAuthToken ( ) ;
String authToken = getValidatedAuthToken ( ) ;
final GtasksInvoker invoker = new GtasksInvoker ( authToken ) ;
final GtasksInvoker invoker = new GtasksInvoker ( authToken ) ;
try {
try {
@ -130,17 +131,29 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
finishSync ( callback ) ;
finishSync ( callback ) ;
return ;
return ;
}
}
callback . incrementMax ( 25 * lists . length ) ;
callback . incrementProgress ( 1 ) ; // 10%
final SyncResultCallbackWrapper . Partial callback0 ;
callback0 = new SyncResultCallbackWrapper . Partial (
callback , 2 , 16
) ;
callback0 . incrementMax ( lists . length * 3 ) ;
final AtomicInteger finisher = new AtomicInteger ( lists . length ) ;
final AtomicInteger finisher = new AtomicInteger ( lists . length ) ;
for ( final StoreObject list : lists ) {
for ( final StoreObject list : lists ) {
new Thread ( new Runnable ( ) {
new Thread ( new Runnable ( ) {
@Override
@Override
public void run ( ) {
public void run ( ) {
synchronizeListHelper ( list , invoker , manual , handler , callback , isImport ) ;
synchronizeListHelper ( list , invoker , manual , handler , callback 0 , isImport ) ;
callback . incrementProgress ( 25 ) ;
callback . incrementProgress ( 3 ) ;
if ( finisher . decrementAndGet ( ) = = 0 ) {
if ( finisher . decrementAndGet ( ) = = 0 ) {
pushUpdated ( invoker , callback ) ;
callback0 . incrementProgress ( 8 ) ;
SyncResultCallback callback1 = new SyncResultCallbackWrapper . Rescaled (
callback0 , 1 , callback0 . getRemainderSize ( )
) ;
pushUpdated ( invoker , callback1 ) ;
callback0 . incrementProgress ( 8 ) ;
finishSync ( callback ) ;
finishSync ( callback ) ;
}
}
}
}
@ -155,7 +168,7 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
TodorooCursor < Task > queued = taskService . query ( Query . select ( Task . PROPERTIES ) .
TodorooCursor < Task > queued = taskService . query ( Query . select ( Task . PROPERTIES ) .
join ( Join . left ( Metadata . TABLE , Criterion . and ( MetadataCriteria . withKey ( GtasksMetadata . METADATA_KEY ) , Task . ID . eq ( Metadata . TASK ) ) ) ) . where (
join ( Join . left ( Metadata . TABLE , Criterion . and ( MetadataCriteria . withKey ( GtasksMetadata . METADATA_KEY ) , Task . ID . eq ( Metadata . TASK ) ) ) ) . where (
Criterion . or ( Task . MODIFICATION_DATE . gt ( GtasksMetadata . LAST_SYNC ) ,
Criterion . or ( Task . MODIFICATION_DATE . gt ( GtasksMetadata . LAST_SYNC ) ,
Criterion . and ( Task . USER_ID . neq ( Task . USER_ID_SELF ) , GtasksMetadata . ID . isNotNull ( ) ) ,
Criterion . and ( Task . USER_ID . neq ( Task . USER_ID_SELF ) , GtasksMetadata . ID . isNotNull ( ) ) ,
Metadata . KEY . isNull ( ) ) ) ) ;
Metadata . KEY . isNull ( ) ) ) ) ;
callback . incrementMax ( queued . getCount ( ) * 10 ) ;
callback . incrementMax ( queued . getCount ( ) * 10 ) ;
try {
try {
@ -191,21 +204,21 @@ public class GtasksSyncV2Provider extends SyncV2Provider {
final boolean isImport = false ;
final boolean isImport = false ;
callback . started ( ) ;
callback . started ( ) ;
callback . incrementMax ( 100 ) ;
callback . incrementMax ( 8 ) ;
new Thread ( new Runnable ( ) {
new Thread ( new Runnable ( ) {
@Override
@Override
public void run ( ) {
public void run ( ) {
callback . incrementProgress ( 50 ) ;
callback . incrementProgress ( 4 ) ;
try {
try {
String authToken = getValidatedAuthToken ( ) ;
String authToken = getValidatedAuthToken ( ) ;
callback . incrementProgress ( 1 2 ) ;
callback . incrementProgress ( 1 ) ;
gtasksSyncService . waitUntilEmpty ( ) ;
gtasksSyncService . waitUntilEmpty ( ) ;
callback . incrementProgress ( 1 3 ) ;
callback . incrementProgress ( 1 ) ;
final GtasksInvoker service = new GtasksInvoker ( authToken ) ;
final GtasksInvoker service = new GtasksInvoker ( authToken ) ;
synchronizeListHelper ( gtasksList , service , manual , null , callback , isImport ) ;
synchronizeListHelper ( gtasksList , service , manual , null , callback , isImport ) ;
} finally {
} finally {
callback . incrementProgress ( 2 5 ) ;
callback . incrementProgress ( 2 ) ;
callback . finished ( ) ;
callback . finished ( ) ;
}
}
}
}