/** * @param array $data * @param Document $document */ public function __construct(array $data = [], Document $document = null) { $this->data = $data; if ($document !== null) { $this->setStructure($document->getStructure()); $this->setDocument($document); } }
/** * @param ResourceModel\Document $sourceDocument * @param ResourceModel\Document $destDocument * @return bool */ protected function haveEqualStructure(ResourceModel\Document $sourceDocument, ResourceModel\Document $destDocument) { $diff = array_diff_key($sourceDocument->getStructure()->getFields(), $destDocument->getStructure()->getFields()); return empty($diff); }
/** * @param ResourceModel\Document $sourceDocument * @param ResourceModel\Document $destinationDocument * @param string $type * @return void */ protected function verifyFields($sourceDocument, $destinationDocument, $type) { $sourceFields = $sourceDocument->getStructure()->getFields(); $destFields = $destinationDocument->getStructure()->getFields(); foreach ($sourceFields as $sourceField => $sourceFieldMetaData) { $mappedField = $this->map->getFieldMap($sourceDocument->getName(), $sourceField, $type); if ($mappedField) { if (!isset($destFields[$mappedField])) { $this->notMappedDocumentFields[$type][$sourceDocument->getName()][] = $mappedField; } else { if ($sourceFieldMetaData['DATA_TYPE'] != $destFields[$mappedField]['DATA_TYPE'] && !$this->map->isFieldDataTypeIgnored($sourceDocument->getName(), $sourceField, $type)) { $this->mismatchDocumentFieldDataTypes[$type][$sourceDocument->getName()][] = $sourceField; } } } } }
/** * @param Document $document * @param string $type * @return bool */ protected function hasHandlers(Document $document, $type) { $result = false; foreach (array_keys($document->getStructure()->getFields()) as $fieldName) { $handlerConfig = $this->map->getHandlerConfig($document->getName(), $fieldName, $type); if (!empty($handlerConfig)) { $result = true; break; } } return $result; }
/** * @return void */ public function testGetStructure() { $this->assertSame($this->structure, $this->document->getStructure()); }