Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/origin/master' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
rgrebenchuk committed Feb 21, 2014
2 parents 29a4b5b + 76d954b commit eca2562
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

namespace OroCRM\Bundle\MagentoBundle\ImportExport\Strategy;

use Doctrine\Common\Persistence\ManagerRegistry;
use Doctrine\Common\Util\ClassUtils;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Mapping\ClassMetadataInfo;
use Doctrine\ORM\UnitOfWork;

use Oro\Bundle\AddressBundle\Entity\AbstractAddress;
Expand All @@ -22,6 +24,9 @@ abstract class BaseStrategy implements StrategyInterface, ContextAwareInterface
/** @var ImportStrategyHelper */
protected $strategyHelper;

/** @var ManagerRegistry */
protected $managerRegistry;

/** @var ContextInterface */
protected $context;

Expand All @@ -36,10 +41,14 @@ abstract class BaseStrategy implements StrategyInterface, ContextAwareInterface

/**
* @param ImportStrategyHelper $strategyHelper
* @param ManagerRegistry $managerRegistry
*/
public function __construct(ImportStrategyHelper $strategyHelper)
{
$this->strategyHelper = $strategyHelper;
public function __construct(
ImportStrategyHelper $strategyHelper,
ManagerRegistry $managerRegistry
) {
$this->strategyHelper = $strategyHelper;
$this->managerRegistry = $managerRegistry;
}

/**
Expand All @@ -51,10 +60,10 @@ public function setImportExportContext(ContextInterface $context)
}

/**
* @param mixed $entity
* @param string $entityName
* @param string|array $criteria
* @param array $excludedProperties
* @param mixed $entity New entity
* @param string $entityName Class name
* @param string|array $criteria Fieldname to find existing entity
* @param array $excludedProperties Excluded properties
*
* @return mixed
*/
Expand All @@ -70,7 +79,13 @@ protected function findAndReplaceEntity($entity, $entityName, $criteria = 'id',
$this->strategyHelper->importEntity($existingEntity, $entity, $excludedProperties);
$entity = $existingEntity;
} else {
$identifier = is_array($criteria) ? 'id' : $criteria;
/* @var ClassMetadataInfo $metadata */
$metadata = $this
->managerRegistry
->getManagerForClass($entityName)
->getClassMetadata($entityName);

$identifier = $metadata->getSingleIdentifierFieldName();
$setterMethod = 'set' . ucfirst($identifier);
if (method_exists($entity, $setterMethod)) {
$entity->$setterMethod(null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
use OroCRM\Bundle\MagentoBundle\Entity\Cart;
use OroCRM\Bundle\MagentoBundle\Entity\CartAddress;
use OroCRM\Bundle\MagentoBundle\Entity\Customer;
use Oro\Bundle\ImportExportBundle\Strategy\Import\ImportStrategyHelper;

class CartStrategy extends BaseStrategy
{
Expand All @@ -16,9 +15,11 @@ class CartStrategy extends BaseStrategy
/** @var StoreStrategy */
protected $storeStrategy;

public function __construct(ImportStrategyHelper $strategyHelper, StoreStrategy $storeStrategy)
/**
* @param StoreStrategy $storeStrategy
*/
public function setStoreStrategy(StoreStrategy $storeStrategy)
{
parent::__construct($strategyHelper);
$this->storeStrategy = $storeStrategy;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

namespace OroCRM\Bundle\MagentoBundle\ImportExport\Strategy;

use Oro\Bundle\ImportExportBundle\Strategy\Import\ImportStrategyHelper;

use OroCRM\Bundle\MagentoBundle\Entity\Cart;
use OroCRM\Bundle\MagentoBundle\Entity\Customer;
use OroCRM\Bundle\MagentoBundle\Entity\Order;
Expand All @@ -19,9 +17,11 @@ class OrderStrategy extends BaseStrategy
/** @var StoreStrategy */
protected $storeStrategy;

public function __construct(ImportStrategyHelper $strategyHelper, StoreStrategy $storeStrategy)
/**
* @param StoreStrategy $storeStrategy
*/
public function setStoreStrategy(StoreStrategy $storeStrategy)
{
parent::__construct($strategyHelper);
$this->storeStrategy = $storeStrategy;
}

Expand Down
31 changes: 17 additions & 14 deletions src/OroCRM/Bundle/MagentoBundle/Resources/config/importexport.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ parameters:
orocrm_magento.importexport.denormalizer.order_item.class: OroCRM\Bundle\MagentoBundle\ImportExport\Serializer\OrderItemCompositeDenormalizer

# strategies
orocrm_magento.import_strategy.customer.base_strategy.class: OroCRM\Bundle\MagentoBundle\ImportExport\Strategy\BaseStrategy
orocrm_magento.import_strategy.customer.add_or_update.class: OroCRM\Bundle\MagentoBundle\ImportExport\Strategy\CustomerStrategy
orocrm_magento.import_strategy.region.add_or_update.class: OroCRM\Bundle\MagentoBundle\ImportExport\Strategy\RegionStrategy
orocrm_magento.import_strategy.cart.add_or_update.class: OroCRM\Bundle\MagentoBundle\ImportExport\Strategy\CartStrategy
Expand Down Expand Up @@ -161,34 +162,36 @@ services:
- { name: oro_importexport.normalizer }

# Strategies
orocrm_magento.import.strategy.customer.add_or_update:
class: %orocrm_magento.import_strategy.customer.add_or_update.class%
orocrm_magento.import.strategy.base_strategy:
class: %orocrm_magento.import_strategy.customer.base_strategy.class%
abstract: true
arguments:
- @oro_importexport.strategy.import.helper
- @doctrine

orocrm_magento.import.strategy.customer.add_or_update:
class: %orocrm_magento.import_strategy.customer.add_or_update.class%
parent: orocrm_magento.import.strategy.base_strategy

orocrm_magento.import.strategy.region.add_or_update:
class: %orocrm_magento.import_strategy.region.add_or_update.class%
arguments:
- @oro_importexport.strategy.import.helper
parent: orocrm_magento.import.strategy.base_strategy

orocrm_magento.import.strategy.store:
class: %orocrm_magento.import_strategy.store.class%
arguments:
- @oro_importexport.strategy.import.helper
parent: orocrm_magento.import.strategy.base_strategy

orocrm_magento.import.strategy.cart.add_or_update:
class: %orocrm_magento.import_strategy.cart.add_or_update.class%
arguments:
- @oro_importexport.strategy.import.helper
arguments:
- @oro_importexport.strategy.import.helper
- @orocrm_magento.import.strategy.store
parent: orocrm_magento.import.strategy.base_strategy
calls:
- [setStoreStrategy, [@orocrm_magento.import.strategy.store]]

orocrm_magento.import.strategy.order.add_or_update:
class: %orocrm_magento.import_strategy.order.add_or_update.class%
arguments:
- @oro_importexport.strategy.import.helper
- @orocrm_magento.import.strategy.store
parent: orocrm_magento.import.strategy.base_strategy
calls:
- [setStoreStrategy, [@orocrm_magento.import.strategy.store]]

# Processors
orocrm_magento.importexport.processor.import_customer:
Expand Down

0 comments on commit eca2562

Please sign in to comment.