コード例 #1
0
 private function buildSubclassesForModel($formSubclasses, CeModelInterface $model)
 {
     $subclasses = array();
     foreach ($model->getChildren() as $childModel) {
         foreach ($childModel->getModelEntities() as $modelEntity) {
             /** @var $subclass Subclass */
             $subclass = $modelEntity->getSubclass();
             if (!isset($subclasses[$subclass->getSource()->getId()])) {
                 foreach ($formSubclasses as $formSubclass) {
                     if ($formSubclass->getSource()->getId() == $subclass->getSource()->getId()) {
                         $subclass->setExpectedPerformance($formSubclass->getExpectedPerformance());
                         $subclass->setAccountType($formSubclass->getAccountType());
                         break;
                     }
                 }
                 $subclasses[$subclass->getSource()->getId()] = $subclass;
             }
         }
     }
     foreach ($formSubclasses as $formSubclass) {
         $sourceId = $formSubclass->getSource()->getId();
         if (!isset($subclasses[$sourceId])) {
             $formAsset = $formSubclass->getAssetClass();
             $identicalSourceId = null;
             foreach ($formSubclasses as $tmpFormSubclass) {
                 $tmpFormAsset = $tmpFormSubclass->getAssetClass();
                 $tmpSourceId = $tmpFormSubclass->getSource()->getId();
                 if (isset($subclasses[$tmpSourceId]) && $formAsset === $tmpFormAsset) {
                     $identicalSourceId = $tmpSourceId;
                     break;
                 }
             }
             if ($identicalSourceId) {
                 $asset = $subclasses[$identicalSourceId]->getAssetClass();
                 $formSubclass->setAssetClass($asset);
                 $this->em->persist($formSubclass);
             } else {
                 $oldAsset = $formSubclass->getAssetClass();
                 $newAsset = $oldAsset->getCopy();
                 $oldAsset->removeSubclasse($formSubclass);
                 $newAsset->addSubclasse($formSubclass);
                 $formSubclass->setAssetClass($newAsset);
                 $subclasses[$sourceId] = $formSubclass;
             }
         }
     }
 }