/**
  * Set a product value
  *
  * @param ProductInterface      $product
  * @param ProductValueInterface $value
  */
 protected function setProductValue(ProductInterface $product, ProductValueInterface $value)
 {
     if (null === ($productValue = $this->getProductValue($product, $value))) {
         $productValue = $this->productBuilder->addProductValue($product, $value->getAttribute(), $value->getLocale(), $value->getScope());
     }
     switch ($value->getAttribute()->getAttributeType()) {
         case 'pim_catalog_price_collection':
             $this->setProductPrice($productValue, $value);
             break;
         case 'pim_catalog_multiselect':
             $this->setProductOption($productValue, $value);
             break;
         case 'pim_catalog_file':
         case 'pim_catalog_image':
             $this->setProductFile($productValue, $value);
             break;
         case 'pim_catalog_metric':
             $this->setProductMetric($productValue, $value);
             break;
         default:
             $productValue->setData($value->getData());
     }
 }