/**
  * Aggregates and groups the index results according to the required data result.
  *
  * @param array       $tableIndexRows
  * @param string|null $tableName
  *
  * @return array
  */
 protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
 {
     $result = array();
     foreach ($tableIndexRows as $tableIndex) {
         $indexName = $keyName = $tableIndex['key_name'];
         if ($tableIndex['primary']) {
             $keyName = 'primary';
         }
         $keyName = strtolower($keyName);
         if (!isset($result[$keyName])) {
             $result[$keyName] = array('name' => $indexName, 'columns' => array($tableIndex['column_name']), 'unique' => $tableIndex['non_unique'] ? false : true, 'primary' => $tableIndex['primary'], 'flags' => isset($tableIndex['flags']) ? $tableIndex['flags'] : array());
         } else {
             $result[$keyName]['columns'][] = $tableIndex['column_name'];
         }
     }
     $eventManager = $this->_platform->getEventManager();
     $indexes = array();
     foreach ($result as $indexKey => $data) {
         $index = null;
         $defaultPrevented = false;
         if (null !== $eventManager && $eventManager->hasListeners(Events::onSchemaIndexDefinition)) {
             $eventArgs = new SchemaIndexDefinitionEventArgs($data, $tableName, $this->_conn);
             $eventManager->dispatchEvent(Events::onSchemaIndexDefinition, $eventArgs);
             $defaultPrevented = $eventArgs->isDefaultPrevented();
             $index = $eventArgs->getIndex();
         }
         if (!$defaultPrevented) {
             $index = new Index($data['name'], $data['columns'], $data['unique'], $data['primary'], $data['flags']);
         }
         if ($index) {
             $indexes[$indexKey] = $index;
         }
     }
     return $indexes;
 }
 /**
  * @param mixed            $value
  * @param AbstractPlatform $platform
  *
  * @return null|FamilyInterface
  * @throws MissingFamilyException
  */
 public function convertToPHPValue($value, AbstractPlatform $platform)
 {
     if (null === $value) {
         return null;
     }
     $listeners = $platform->getEventManager()->getListeners('sidus_family_configuration');
     /** @var FamilyConfigurationHandler $familyConfigurationHandler */
     $familyConfigurationHandler = array_shift($listeners);
     return $familyConfigurationHandler->getFamily($value);
 }