/** * Initializes the attribute cache * * @param array $data */ protected function initializeAttributes($data) { $labels = array_diff(array_keys($data), $this->readLabels); if (!count($labels)) { return; } $class = $this->productManager->getProductName(); $columnsInfo = $this->colInfoTransformer->transform($class, $labels); $this->attributes += $this->attributeCache->getAttributes($columnsInfo); foreach ($columnsInfo as $columnInfo) { $this->readLabels[] = $columnInfo->getLabel(); $columnName = $columnInfo->getName(); $suffixes = $columnInfo->getSuffixes(); $lastSuffix = array_pop($suffixes); if (in_array($lastSuffix, array('groups', 'products'))) { $this->assocColumnsInfo[] = $columnInfo; } elseif (isset($this->attributes[$columnName])) { $attribute = $this->attributes[$columnName]; $columnInfo->setAttribute($attribute); $this->attributeColumnsInfo[] = $columnInfo; if (static::IDENTIFIER_ATTRIBUTE_TYPE == $attribute->getAttributeType()) { $this->identifierAttribute = $attribute; } } else { $columnInfo->setAttribute(null); $this->propertyColumnsInfo[] = $columnInfo; } } $this->initialized = true; }