@@ -37,10 +37,27 @@ public OpResult addOperation( OperationType operationType, String parentTable, M
3737
3838 @ Override
3939 public <E > OpResult addOperation ( OperationType operationType , String parentTable ,
40- Map <String , Object > parentObject , String columnName , List < E > children )
40+ Map <String , Object > parentObject , String columnName , E [] childrenInstances )
4141 {
42+ if ( childrenInstances == null || childrenInstances .length == 0 )
43+ throw new IllegalArgumentException ( ExceptionMessage .NULL_EMPTY_BULK );
44+
45+ if ( childrenInstances [ 0 ] instanceof String )
46+ {
47+ String [] childrenObjectIds = (String []) childrenInstances ;
48+ return addOperation ( operationType , parentTable , parentObject , columnName , childrenObjectIds );
49+ }
50+
4251 String parentObjectId = TransactionHelper .convertObjectMapToObjectId ( parentObject );
43- return addOperation ( operationType , parentTable , parentObjectId , columnName , children );
52+ return addOperation ( operationType , parentTable , parentObjectId , columnName , childrenInstances );
53+ }
54+
55+ @ Override
56+ public OpResult addOperation ( OperationType operationType , String parentTable ,
57+ Map <String , Object > parentObject , String columnName , List <Map <String , Object >> childrenMaps )
58+ {
59+ String parentObjectId = TransactionHelper .convertObjectMapToObjectId ( parentObject );
60+ return addOperation ( operationType , parentTable , parentObjectId , columnName , childrenMaps );
4461 }
4562
4663 @ Override
@@ -71,9 +88,28 @@ public OpResult addOperation( OperationType operationType, String parentTable, S
7188
7289 @ Override
7390 public <E > OpResult addOperation ( OperationType operationType , String parentTable , String parentObjectId ,
74- String columnName , List <E > children )
91+ String columnName , E [] childrenInstances )
92+ {
93+ if ( childrenInstances == null || childrenInstances .length == 0 )
94+ throw new IllegalArgumentException ( ExceptionMessage .NULL_EMPTY_BULK );
95+
96+ if ( childrenInstances [ 0 ] instanceof String )
97+ {
98+ String [] childrenObjectIds = (String []) childrenInstances ;
99+ return addOperation ( operationType , parentTable , parentObjectId , columnName , childrenObjectIds );
100+ }
101+
102+ List <String > childrenIds = getChildrenFromArrayInstances ( childrenInstances );
103+
104+ return addOperation ( operationType , parentTable , parentObjectId , columnName ,
105+ null , childrenIds );
106+ }
107+
108+ @ Override
109+ public OpResult addOperation ( OperationType operationType , String parentTable , String parentObjectId ,
110+ String columnName , List <Map <String , Object >> childrenMaps )
75111 {
76- List <Object > childrenIds = getChildrenFromList ( children );
112+ List <Object > childrenIds = getChildrenFromListMap ( childrenMaps );
77113
78114 return addOperation ( operationType , parentTable , parentObjectId , columnName ,
79115 null , childrenIds );
@@ -111,13 +147,32 @@ public <E> OpResult addOperation( OperationType operationType, E parentObject, S
111147 }
112148
113149 @ Override
114- public <E , U > OpResult addOperation ( OperationType operationType , E parentObject , String columnName ,
115- List <U > children )
150+ public <E , U > OpResult addOperation ( OperationType operationType , E parentObject , String columnName , U [] childrenInstances )
116151 {
152+ if ( childrenInstances == null || childrenInstances .length == 0 )
153+ throw new IllegalArgumentException ( ExceptionMessage .NULL_EMPTY_BULK );
154+
155+ if ( childrenInstances [ 0 ] instanceof String )
156+ {
157+ String [] childrenObjectIds = (String []) childrenInstances ;
158+ return addOperation ( operationType , parentObject , columnName , childrenObjectIds );
159+ }
160+
117161 String parentObjectId = getParentObjectIdFromInstance ( parentObject );
118162 String parentTable = BackendlessSerializer .getSimpleName ( parentObject .getClass () );
119163
120- List <Object > childrenIds = getChildrenFromList ( children );
164+ List <String > childrenIds = getChildrenFromArrayInstances ( childrenInstances );
165+
166+ return addOperation ( operationType , parentTable , parentObjectId , columnName , null , childrenIds );
167+ }
168+
169+ @ Override
170+ public <E > OpResult addOperation ( OperationType operationType , E parentObject , String columnName , List <Map <String , Object >> childrenMaps )
171+ {
172+ String parentObjectId = getParentObjectIdFromInstance ( parentObject );
173+ String parentTable = BackendlessSerializer .getSimpleName ( parentObject .getClass () );
174+
175+ List <Object > childrenIds = getChildrenFromListMap ( childrenMaps );
121176
122177 return addOperation ( operationType , parentTable , parentObjectId , columnName , null , childrenIds );
123178 }
@@ -158,12 +213,33 @@ public OpResult addOperation( OperationType operationType, OpResult parentObject
158213 }
159214
160215 @ Override
161- public <E > OpResult addOperation ( OperationType operationType , OpResult parentObject ,
162- String columnName , List <E > children )
216+ public <E > OpResult addOperation ( OperationType operationType , OpResult parentObject , String columnName , E [] childrenInstances )
163217 {
218+ if ( childrenInstances == null || childrenInstances .length == 0 )
219+ throw new IllegalArgumentException ( ExceptionMessage .NULL_EMPTY_BULK );
220+
221+ if ( childrenInstances [ 0 ] instanceof String )
222+ {
223+ String [] childrenObjectIds = (String []) childrenInstances ;
224+ return addOperation ( operationType , parentObject , columnName , childrenObjectIds );
225+ }
226+
164227 checkOpResultFoParent ( parentObject );
165228
166- List <Object > childrenIds = getChildrenFromList ( children );
229+ List <String > childrenIds = getChildrenFromArrayInstances ( childrenInstances );
230+
231+ return addOperation ( operationType , parentObject .getTableName (),
232+ parentObject .resolveTo ( Persistence .DEFAULT_OBJECT_ID_FIELD ).makeReference (),
233+ columnName , null , childrenIds );
234+ }
235+
236+ @ Override
237+ public OpResult addOperation ( OperationType operationType , OpResult parentObject ,
238+ String columnName , List <Map <String , Object >> childrenMaps )
239+ {
240+ checkOpResultFoParent ( parentObject );
241+
242+ List <Object > childrenIds = getChildrenFromListMap ( childrenMaps );
167243
168244 return addOperation ( operationType , parentObject .getTableName (),
169245 parentObject .resolveTo ( Persistence .DEFAULT_OBJECT_ID_FIELD ).makeReference (),
@@ -209,11 +285,32 @@ public OpResult addOperation( OperationType operationType, OpResultValueReferenc
209285
210286 @ Override
211287 public <E > OpResult addOperation ( OperationType operationType , OpResultValueReference parentObject ,
212- String columnName , List <E > children )
288+ String columnName , E [] childrenInstances )
289+ {
290+ if ( childrenInstances == null || childrenInstances .length == 0 )
291+ throw new IllegalArgumentException ( ExceptionMessage .NULL_EMPTY_BULK );
292+
293+ if ( childrenInstances [ 0 ] instanceof String )
294+ {
295+ String [] childrenObjectIds = (String []) childrenInstances ;
296+ return addOperation ( operationType , parentObject , columnName , childrenObjectIds );
297+ }
298+
299+ Map <String , Object > referenceToObjectId = getReferenceToParentFromOpResultValue ( parentObject );
300+
301+ List <String > childrenIds = getChildrenFromArrayInstances ( childrenInstances );
302+
303+ return addOperation ( operationType , parentObject .getOpResult ().getTableName (), referenceToObjectId , columnName ,
304+ null , childrenIds );
305+ }
306+
307+ @ Override
308+ public OpResult addOperation ( OperationType operationType , OpResultValueReference parentObject ,
309+ String columnName , List <Map <String , Object >> childrenMaps )
213310 {
214311 Map <String , Object > referenceToObjectId = getReferenceToParentFromOpResultValue ( parentObject );
215312
216- List <Object > childrenIds = getChildrenFromList ( children );
313+ List <Object > childrenIds = getChildrenFromListMap ( childrenMaps );
217314
218315 return addOperation ( operationType , parentObject .getOpResult ().getTableName (), referenceToObjectId , columnName ,
219316 null , childrenIds );
@@ -313,14 +410,19 @@ private void checkOpResultForChildren( OpResult children )
313410 throw new IllegalArgumentException ( ExceptionMessage .REF_TYPE_NOT_SUPPORT );
314411 }
315412
316- private < E > List <Object > getChildrenFromList ( List <E > children )
413+ private List <Object > getChildrenFromListMap ( List <Map < String , Object >> childrenMaps )
317414 {
318-
319- if ( children == null || children .isEmpty () )
415+ if ( childrenMaps == null || childrenMaps .isEmpty () )
320416 throw new IllegalArgumentException ( ExceptionMessage .NULL_EMPTY_BULK );
321417
322- TransactionHelper .makeReferenceToObjectIdFromOpResult ( (List <Object >) children );
418+ return TransactionHelper .convertMapsToObjectIds ( childrenMaps );
419+ }
420+
421+ private <E > List <String > getChildrenFromArrayInstances ( E [] children )
422+ {
423+ if ( children == null || children .length == 0 )
424+ throw new IllegalArgumentException ( ExceptionMessage .NULL_EMPTY_BULK );
323425
324- return TransactionHelper .getObjectIdsFromUnknownList ( children );
426+ return TransactionHelper .getObjectIdsFromListInstances ( children );
325427 }
326428}
0 commit comments