/**
  * @param \Gmorel\StateWorkflowBundle\StateEngine\StateWorkflow $stateWorkflow
  */
 public function __construct(StateWorkflow $stateWorkflow)
 {
     $this->workflowName = $stateWorkflow->getName();
     $availableStates = $stateWorkflow->getAvailableStates();
     if (empty($availableStates)) {
         throw new EmptyWorkflowException(sprintf('Workflow "%s" has no State defined.', $stateWorkflow->getName()));
     }
     $this->createIntrospectedStates($availableStates);
     $this->createIntrospectedTransitions($availableStates);
 }
 /**
  * @return StateWorkflow
  */
 private function createValidStateWorkflow()
 {
     $stateA = new StateA();
     $stateB = new StateB();
     $stateC = new StateC();
     $stateWorkflow = new StateWorkflow('Booking Workflow', 'key');
     $stateWorkflow->addAvailableState($stateA);
     $stateWorkflow->addAvailableState($stateB);
     $stateWorkflow->addAvailableState($stateC);
     $stateWorkflow->setStateAsDefault($stateA->getKey());
     return $stateWorkflow;
 }
 /**
  * {@inheritdoc}
  * @return StateInterface
  */
 public function getState(StateWorkflow $stateWorkflow)
 {
     return $stateWorkflow->getStateFromKey($this->stateKey);
 }
 /**
  * Used by DIC during compiler pass
  * @param StateWorkflow $stateWorkflow
  */
 public function addWorkflow(StateWorkflow $stateWorkflow)
 {
     $this->workflows[$stateWorkflow->getServiceId()] = $stateWorkflow;
 }