/**
  * 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;
 }