public function onStepExecuted(StepExecutedEvent $event)
 {
     $result = $event->getResult();
     if ($event->getResult() === null) {
         throw new \Exception('Received null as step execution event result');
     }
     if (is_object($result) && $result instanceof AbstractCollection) {
         if (count($result) == 0) {
             throw new \Exception('Step execution resulted in an empty collection. Step not applied?');
         }
     }
     self::$executions++;
 }
 public function onStepExecuted(StepExecutedEvent $event)
 {
     $obj = $event->getResult();
     $type = $event->getStep()->type;
     $dsl = $event->getStep()->dsl;
     $action = isset($dsl['mode']) ? $dsl['mode'] . 'd' : 'acted upon';
     switch ($type) {
         case 'content':
         case 'content_type':
         case 'language':
         case 'location':
         case 'object_state':
         case 'object_state_group':
         case 'role':
         case 'tag':
         case 'user':
         case 'user_group':
             $out = $type . ' ' . $this->getObjectIdentifierAsString($obj) . ' has been ' . $action;
             break;
         case 'sql':
             $out = 'sql has been executed';
             break;
         case 'php':
             $out = "class '{$dsl['class']}' has been executed";
             break;
         default:
             // custom migration step types...
             $out = "migration step '{$type}' has been executed";
     }
     if ($this->output) {
         if ($this->output->getVerbosity() >= $this->minVerbosityLevel) {
             $this->output->writeln($out);
         }
     } else {
         echo $out . "\n";
     }
 }