private function updateItemFilterTypes($connection, $typeArray, $fittingRuleRow)
 {
     $itemFilterTypeDict = array();
     foreach ($fittingRuleRow->getItemFilterTypes() as $itemFilterType) {
         $itemFilterTypeDict[$itemFilterType->getItemId()] = $itemFilterType;
     }
     foreach ($typeArray as $dataTypeId) {
         $itemFilterTypeExists = array_key_exists($dataTypeId, $itemFilterTypeDict);
         $itemFilterType = null;
         if ($itemFilterTypeExists) {
             $itemFilterType = $itemFilterTypeDict[$dataTypeId];
         } else {
             $itemFilterType = new ECP\ItemFilterType();
             $itemFilterType->setItemId($dataTypeId);
         }
         $this->prepareSubentitySave2($connection, $fittingRuleRow, 'ItemFilterType', $itemFilterType, !$itemFilterTypeExists);
     }
     foreach ($itemFilterTypeDict as $itemId => $itemFilterType) {
         if (!in_array($itemId, $typeArray)) {
             $fittingRuleRow->removeItemFilterType($itemFilterType);
         }
     }
     $fittingRuleRow->save($connection);
 }