@@ -65,13 +65,11 @@ public function __construct($dependentEntities = null)
65
65
* @param boolean $fromArray
66
66
* @return array
67
67
* @throws \Exception
68
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
69
68
* @SuppressWarnings(PHPMD.NPathComplexity)
70
69
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
71
70
*/
72
71
public function resolveOperationDataArray ($ entityObject , $ operationMetadata , $ operation , $ fromArray = false )
73
72
{
74
- //TODO: Refactor to reduce Cyclomatic Complexity, remove SupressWarning accordingly.
75
73
$ operationDataArray = [];
76
74
self ::incrementSequence ($ entityObject ->getName ());
77
75
@@ -105,80 +103,9 @@ public function resolveOperationDataArray($entityObject, $operationMetadata, $op
105
103
$ operationElementType = $ operationElement ->getValue ();
106
104
107
105
if (in_array ($ operationElementType , self ::PRIMITIVE_TYPES )) {
108
- $ elementData = $ this ->resolvePrimitiveReference (
109
- $ entityObject ,
110
- $ operationElement ->getKey (),
111
- $ operationElement ->getType ()
112
- );
113
-
114
- // If data was defined at all, attempt to put it into operation data array
115
- // If data was not defined, and element is required, throw exception
116
- // If no data is defined, don't input defaults per primitive into operation data array
117
- if ($ elementData != null ) {
118
- if (array_key_exists ($ operationElement ->getKey (), $ entityObject ->getUniquenessData ())) {
119
- $ uniqueData = $ entityObject ->getUniquenessDataByName ($ operationElement ->getKey ());
120
- if ($ uniqueData === 'suffix ' ) {
121
- $ elementData .= (string )self ::getSequence ($ entityObject ->getName ());
122
- } else {
123
- $ elementData = (string )self ::getSequence ($ entityObject ->getName ()) . $ elementData ;
124
- }
125
- }
126
- $ operationDataArray [$ operationElement ->getKey ()] = $ this ->castValue (
127
- $ operationElementType ,
128
- $ elementData
129
- );
130
- } elseif ($ operationElement ->isRequired ()) {
131
- throw new \Exception (sprintf (
132
- self ::EXCEPTION_REQUIRED_DATA ,
133
- $ operationElement ->getType (),
134
- $ operationElement ->getKey (),
135
- $ entityObject ->getName ()
136
- ));
137
- }
106
+ $ this ->resolvePrimitiveReferenceElement ($ entityObject , $ operationElement , $ operationElementType , $ operationDataArray );
138
107
} else {
139
- $ operationElementProperty = null ;
140
- if (strpos ($ operationElementType , '. ' ) !== false ) {
141
- $ operationElementComponents = explode ('. ' , $ operationElementType );
142
- $ operationElementType = $ operationElementComponents [0 ];
143
- $ operationElementProperty = $ operationElementComponents [1 ];
144
- }
145
-
146
- $ entityNamesOfType = $ entityObject ->getLinkedEntitiesOfType ($ operationElementType );
147
-
148
- // If an element is required by metadata, but was not provided in the entity, throw an exception
149
- if ($ operationElement ->isRequired () && $ entityNamesOfType == null ) {
150
- throw new \Exception (sprintf (
151
- self ::EXCEPTION_REQUIRED_DATA ,
152
- $ operationElement ->getType (),
153
- $ operationElement ->getKey (),
154
- $ entityObject ->getName ()
155
- ));
156
- }
157
- foreach ($ entityNamesOfType as $ entityName ) {
158
- if ($ operationElementProperty === null ) {
159
- $ operationDataSubArray = $ this ->resolveNonPrimitiveElement (
160
- $ entityName ,
161
- $ operationElement ,
162
- $ operation ,
163
- $ fromArray
164
- );
165
- } else {
166
- $ linkedEntityObj = $ this ->resolveLinkedEntityObject ($ entityName );
167
- $ operationDataSubArray = $ linkedEntityObj ->getDataByName ($ operationElementProperty , 0 );
168
-
169
- if ($ operationDataSubArray === null ) {
170
- throw new \Exception (
171
- sprintf ('Property %s not found in entity %s \n ' , $ operationElementProperty , $ entityName )
172
- );
173
- }
174
- }
175
-
176
- if ($ operationElement ->getType () == OperationDefinitionObjectHandler::ENTITY_OPERATION_ARRAY ) {
177
- $ operationDataArray [$ operationElement ->getKey ()][] = $ operationDataSubArray ;
178
- } else {
179
- $ operationDataArray [$ operationElement ->getKey ()] = $ operationDataSubArray ;
180
- }
181
- }
108
+ $ this ->resolveNonPrimitiveReferenceElement ($ entityObject , $ operation , $ fromArray , $ operationElementType , $ operationElement , $ operationDataArray );
182
109
}
183
110
}
184
111
@@ -394,5 +321,102 @@ private function castValue($type, $value)
394
321
395
322
return $ newVal ;
396
323
}
324
+
325
+ /**
326
+ * @param EntityDataObject $entityObject
327
+ * @param $operationElement
328
+ * @param $operationElementType
329
+ * @param array $operationDataArray
330
+ * @throws TestFrameworkException
331
+ */
332
+ private function resolvePrimitiveReferenceElement ($ entityObject , $ operationElement , $ operationElementType , array &$ operationDataArray )
333
+ {
334
+ $ elementData = $ this ->resolvePrimitiveReference (
335
+ $ entityObject ,
336
+ $ operationElement ->getKey (),
337
+ $ operationElement ->getType ()
338
+ );
339
+
340
+ // If data was defined at all, attempt to put it into operation data array
341
+ // If data was not defined, and element is required, throw exception
342
+ // If no data is defined, don't input defaults per primitive into operation data array
343
+ if ($ elementData != null ) {
344
+ if (array_key_exists ($ operationElement ->getKey (), $ entityObject ->getUniquenessData ())) {
345
+ $ uniqueData = $ entityObject ->getUniquenessDataByName ($ operationElement ->getKey ());
346
+ if ($ uniqueData === 'suffix ' ) {
347
+ $ elementData .= (string )self ::getSequence ($ entityObject ->getName ());
348
+ } else {
349
+ $ elementData = (string )self ::getSequence ($ entityObject ->getName ()) . $ elementData ;
350
+ }
351
+ }
352
+ $ operationDataArray [$ operationElement ->getKey ()] = $ this ->castValue (
353
+ $ operationElementType ,
354
+ $ elementData
355
+ );
356
+ } elseif ($ operationElement ->isRequired ()) {
357
+ throw new \Exception (sprintf (
358
+ self ::EXCEPTION_REQUIRED_DATA ,
359
+ $ operationElement ->getType (),
360
+ $ operationElement ->getKey (),
361
+ $ entityObject ->getName ()
362
+ ));
363
+ }
364
+ }
365
+
366
+ /**
367
+ * @param $entityObject
368
+ * @param $operation
369
+ * @param $fromArray
370
+ * @param $operationElementType
371
+ * @param $operationElement
372
+ * @param array $operationDataArray
373
+ * @throws TestFrameworkException
374
+ */
375
+ private function resolveNonPrimitiveReferenceElement ($ entityObject , $ operation , $ fromArray , &$ operationElementType , $ operationElement , array &$ operationDataArray )
376
+ {
377
+ $ operationElementProperty = null ;
378
+ if (strpos ($ operationElementType , '. ' ) !== false ) {
379
+ $ operationElementComponents = explode ('. ' , $ operationElementType );
380
+ $ operationElementType = $ operationElementComponents [0 ];
381
+ $ operationElementProperty = $ operationElementComponents [1 ];
382
+ }
383
+
384
+ $ entityNamesOfType = $ entityObject ->getLinkedEntitiesOfType ($ operationElementType );
385
+
386
+ // If an element is required by metadata, but was not provided in the entity, throw an exception
387
+ if ($ operationElement ->isRequired () && $ entityNamesOfType == null ) {
388
+ throw new \Exception (sprintf (
389
+ self ::EXCEPTION_REQUIRED_DATA ,
390
+ $ operationElement ->getType (),
391
+ $ operationElement ->getKey (),
392
+ $ entityObject ->getName ()
393
+ ));
394
+ }
395
+ foreach ($ entityNamesOfType as $ entityName ) {
396
+ if ($ operationElementProperty === null ) {
397
+ $ operationDataSubArray = $ this ->resolveNonPrimitiveElement (
398
+ $ entityName ,
399
+ $ operationElement ,
400
+ $ operation ,
401
+ $ fromArray
402
+ );
403
+ } else {
404
+ $ linkedEntityObj = $ this ->resolveLinkedEntityObject ($ entityName );
405
+ $ operationDataSubArray = $ linkedEntityObj ->getDataByName ($ operationElementProperty , 0 );
406
+
407
+ if ($ operationDataSubArray === null ) {
408
+ throw new \Exception (
409
+ sprintf ('Property %s not found in entity %s \n ' , $ operationElementProperty , $ entityName )
410
+ );
411
+ }
412
+ }
413
+
414
+ if ($ operationElement ->getType () == OperationDefinitionObjectHandler::ENTITY_OPERATION_ARRAY ) {
415
+ $ operationDataArray [$ operationElement ->getKey ()][] = $ operationDataSubArray ;
416
+ } else {
417
+ $ operationDataArray [$ operationElement ->getKey ()] = $ operationDataSubArray ;
418
+ }
419
+ }
420
+ }
397
421
// @codingStandardsIgnoreEnd
398
422
}
0 commit comments