Skip to content

Commit e6c7742

Browse files
authored
Merge pull request #389 from Backendless/mkhobotin/19139/replace_relation_parent_object_with_id
[BKNDLSS-19139] Relations: change parent argument to ID
2 parents 14a36c5 + a417c3f commit e6c7742

File tree

3 files changed

+280
-94
lines changed

3 files changed

+280
-94
lines changed

src/com/backendless/DataStoreFactory.java

Lines changed: 142 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
package com.backendless;
2020

21+
import android.support.annotation.NonNull;
22+
2123
import com.backendless.async.callback.AsyncCallback;
2224
import com.backendless.exceptions.BackendlessException;
2325
import com.backendless.persistence.BackendlessSerializer;
@@ -383,166 +385,250 @@ public void getObjectCount( DataQueryBuilder dataQueryBuilder, AsyncCallback<Int
383385
@Override
384386
public <R> int addRelation( E parent, String relationColumnName, Collection<R> children )
385387
{
386-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
387-
388388
String parentObjectId = Persistence.getEntityId( parent );
389-
Collection<String> childObjectIds = new ArrayList<>();
389+
390+
Collection<String> childrenObjectIds = new ArrayList<>();
390391
for( R child : children )
391392
{
392393
String childObjectId = Persistence.getEntityId( child );
393-
childObjectIds.add( childObjectId );
394+
childrenObjectIds.add( childObjectId );
394395
}
395396

396-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childObjectIds };
397-
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "addRelation", args );
397+
return addRelation( parentObjectId, relationColumnName, childrenObjectIds );
398398
}
399399

400400
@Override
401401
public <R> void addRelation( E parent, String relationColumnName, Collection<R> children, AsyncCallback<Integer> callback )
402402
{
403-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
404-
405403
String parentObjectId = Persistence.getEntityId( parent );
406-
Collection<String> childObjectIds = new ArrayList<>();
404+
405+
Collection<String> childrenObjectIds = new ArrayList<>();
407406
for( R child : children )
408407
{
409408
String childObjectId = Persistence.getEntityId( child );
410-
childObjectIds.add( childObjectId );
409+
childrenObjectIds.add( childObjectId );
411410
}
412411

413-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childObjectIds };
414-
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "addRelation", args, callback );
412+
addRelation( parentObjectId, relationColumnName, childrenObjectIds, callback );
415413
}
416414

417415
@Override
418416
public int addRelation( E parent, String relationColumnName, String whereClause )
419417
{
420-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
421-
422418
String parentObjectId = Persistence.getEntityId( parent );
423419

424-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
425-
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "addRelation", args );
420+
return addRelation( parentObjectId, relationColumnName, whereClause );
426421
}
427422

428423
@Override
429424
public void addRelation( E parent, String relationColumnName, String whereClause, AsyncCallback<Integer> callback )
430425
{
431-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
432-
433426
String parentObjectId = Persistence.getEntityId( parent );
434427

435-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
436-
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "addRelation", args, callback );
428+
addRelation( parentObjectId, relationColumnName, whereClause, callback );
437429
}
438430

439431
@Override
440432
public <R> int setRelation( E parent, String relationColumnName, Collection<R> children )
441433
{
442-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
443-
444434
String parentObjectId = Persistence.getEntityId( parent );
445-
Collection<String> childObjectIds = new ArrayList<>();
435+
436+
Collection<String> childrenObjectIds = new ArrayList<>();
446437
for( R child : children )
447438
{
448439
String childObjectId = Persistence.getEntityId( child );
449-
childObjectIds.add( childObjectId );
440+
childrenObjectIds.add( childObjectId );
450441
}
451442

452-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childObjectIds };
453-
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "setRelation", args );
443+
return setRelation( parentObjectId, relationColumnName, childrenObjectIds );
454444
}
455445

456446
@Override
457447
public <R> void setRelation( E parent, String relationColumnName, Collection<R> children, AsyncCallback<Integer> callback )
458448
{
459-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
460-
461449
String parentObjectId = Persistence.getEntityId( parent );
462-
Collection<String> childObjectIds = new ArrayList<>();
450+
451+
Collection<String> childrenObjectIds = new ArrayList<>();
463452
for( R child : children )
464453
{
465454
String childObjectId = Persistence.getEntityId( child );
466-
childObjectIds.add( childObjectId );
455+
childrenObjectIds.add( childObjectId );
467456
}
468457

469-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childObjectIds };
470-
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "setRelation", args, callback );
458+
setRelation( parentObjectId, relationColumnName, childrenObjectIds, callback );
471459
}
472460

473461
@Override
474462
public int setRelation( E parent, String relationColumnName, String whereClause )
475463
{
476-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
477-
478464
String parentObjectId = Persistence.getEntityId( parent );
479465

480-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
481-
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "setRelation", args );
466+
return setRelation( parentObjectId, relationColumnName, whereClause );
482467
}
483468

484469
@Override
485470
public void setRelation( E parent, String relationColumnName, String whereClause, AsyncCallback<Integer> callback )
486471
{
487-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
488-
489472
String parentObjectId = Persistence.getEntityId( parent );
490473

491-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
492-
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "addRelation", args, callback );
474+
setRelation( parentObjectId, relationColumnName, whereClause, callback );
493475
}
494476

495477
@Override
496478
public <R> int deleteRelation( E parent, String relationColumnName, Collection<R> children )
497479
{
498-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
499-
500480
String parentObjectId = Persistence.getEntityId( parent );
501-
Collection<String> childObjectIds = new ArrayList<>();
481+
482+
Collection<String> childrenObjectIds = new ArrayList<>();
502483
for( R child : children )
503484
{
504485
String childObjectId = Persistence.getEntityId( child );
505-
childObjectIds.add( childObjectId );
486+
childrenObjectIds.add( childObjectId );
506487
}
507488

508-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childObjectIds };
509-
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "deleteRelation", args );
489+
return deleteRelation( parentObjectId, relationColumnName, childrenObjectIds );
510490
}
511491

512492
@Override
513493
public <R> void deleteRelation( E parent, String relationColumnName, Collection<R> children, AsyncCallback<Integer> callback )
514494
{
515-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
516-
517495
String parentObjectId = Persistence.getEntityId( parent );
518-
Collection<String> childObjectIds = new ArrayList<>();
496+
497+
Collection<String> childrenObjectIds = new ArrayList<>();
519498
for( R child : children )
520499
{
521500
String childObjectId = Persistence.getEntityId( child );
522-
childObjectIds.add( childObjectId );
501+
childrenObjectIds.add( childObjectId );
523502
}
524503

525-
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childObjectIds };
526-
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "deleteRelation", args, callback );
504+
deleteRelation( parentObjectId, relationColumnName, childrenObjectIds, callback );
527505
}
528506

529507
@Override
530508
public int deleteRelation( E parent, String relationColumnName, String whereClause )
531509
{
532-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
510+
String parentObjectId = Persistence.getEntityId( parent );
533511

512+
return deleteRelation( parentObjectId, relationColumnName, whereClause );
513+
}
514+
515+
@Override
516+
public void deleteRelation( E parent, String relationColumnName, String whereClause, AsyncCallback<Integer> callback )
517+
{
534518
String parentObjectId = Persistence.getEntityId( parent );
535519

520+
deleteRelation( parentObjectId, relationColumnName, whereClause, callback );
521+
}
522+
523+
@Override
524+
public <R> int addRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds )
525+
{
526+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
527+
528+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childrenObjectIds };
529+
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "addRelation", args );
530+
}
531+
532+
@Override
533+
public <R> void addRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds, AsyncCallback<Integer> callback )
534+
{
535+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
536+
537+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childrenObjectIds };
538+
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "addRelation", args, callback );
539+
}
540+
541+
@Override
542+
public int addRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause )
543+
{
544+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
545+
546+
536547
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
548+
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "addRelation", args );
549+
}
550+
551+
@Override
552+
public void addRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause, AsyncCallback<Integer> callback )
553+
{
554+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
555+
556+
557+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
558+
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "addRelation", args, callback );
559+
}
560+
561+
@Override
562+
public <R> int setRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds )
563+
{
564+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
565+
566+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childrenObjectIds };
567+
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "setRelation", args );
568+
}
569+
570+
@Override
571+
public <R> void setRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds, AsyncCallback<Integer> callback )
572+
{
573+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
574+
575+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childrenObjectIds };
576+
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "setRelation", args, callback );
577+
}
578+
579+
@Override
580+
public int setRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause )
581+
{
582+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
583+
584+
585+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
586+
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "setRelation", args );
587+
}
588+
589+
@Override
590+
public void setRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause, AsyncCallback<Integer> callback )
591+
{
592+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
593+
594+
595+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
596+
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "setRelation", args, callback );
597+
}
598+
599+
@Override
600+
public <R> int deleteRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds )
601+
{
602+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
603+
604+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childrenObjectIds };
537605
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "deleteRelation", args );
538606
}
539607

540608
@Override
541-
public void deleteRelation( E parent, String relationColumnName, String whereClause, AsyncCallback<Integer> callback )
609+
public <R> void deleteRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds, AsyncCallback<Integer> callback )
542610
{
543-
String parentTableName = BackendlessSerializer.getSimpleName( parent.getClass() );
611+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
612+
613+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, childrenObjectIds };
614+
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "deleteRelation", args, callback );
615+
}
616+
617+
@Override
618+
public int deleteRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause )
619+
{
620+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
621+
622+
623+
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
624+
return Invoker.invokeSync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "deleteRelation", args );
625+
}
626+
627+
@Override
628+
public void deleteRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause, AsyncCallback<Integer> callback )
629+
{
630+
String parentTableName = BackendlessSerializer.getSimpleName( entityClass );
544631

545-
String parentObjectId = Persistence.getEntityId( parent );
546632

547633
Object[] args = new Object[] { parentTableName, relationColumnName, parentObjectId, whereClause };
548634
Invoker.invokeAsync( Persistence.PERSISTENCE_MANAGER_SERVER_ALIAS, "deleteRelation", args, callback );

src/com/backendless/IDataStore.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
package com.backendless;
2020

21+
import android.support.annotation.NonNull;
22+
2123
import com.backendless.async.callback.AsyncCallback;
2224
import com.backendless.exceptions.BackendlessException;
2325
import com.backendless.persistence.DataQueryBuilder;
@@ -179,5 +181,29 @@ public interface IDataStore<E>
179181

180182
void deleteRelation( E parent, String relationColumnName, String whereClause, AsyncCallback<Integer> callback );
181183

184+
<R> int addRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds );
185+
186+
<R> void addRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds, AsyncCallback<Integer> callback );
187+
188+
int addRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause );
189+
190+
void addRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause, AsyncCallback<Integer> callback );
191+
192+
<R> int setRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds );
193+
194+
<R> void setRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds, AsyncCallback<Integer> callback );
195+
196+
int setRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause );
197+
198+
void setRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause, AsyncCallback<Integer> callback );
199+
200+
<R> int deleteRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds );
201+
202+
<R> void deleteRelation(@NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull Collection<String> childrenObjectIds, AsyncCallback<Integer> callback );
203+
204+
int deleteRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause );
205+
206+
void deleteRelation( @NonNull String parentObjectId, @NonNull String relationColumnName, @NonNull String whereClause, AsyncCallback<Integer> callback );
207+
182208
EventHandler<E> rt();
183209
}

0 commit comments

Comments
 (0)