> is not implemented in <<".__CLASS__.':'.__FUNCTION__.'>>'); } /** * @param string $actionType * @throws InvalidChoiceTypeException */ private function throwNoValidActionTypeException(string $actionType): void { throw new InvalidChoiceTypeException("The action type <<$actionType>> is not defined and not valid!"); } /** * @param string $actionType * * @return bool */ private function isValidActionType(string $actionType): bool { return in_array($actionType, ActionType::getValues()); } /** * @param string $actionType */ private function validateActionType(string $actionType): void { if (!$this->isValidActionType($actionType)) { $this->throwNoValidActionTypeException($actionType); } } /** * This function describes which data is expected. * * @param string $actionType * @param mixed $data * * @throws ValueInvalidException For false a exception is thrown */ private function validateActionData(string $actionType, $data): void { if (!$this->isValidActionData($actionType, $data)) { throw new ValueInvalidException('Data <<'.gettype($data).(is_object($data) ? ':'.get_class($data) : '').">> is not valid for action type <<$actionType>>!"); } } /** * @param string $actionType * * @throws ContainsElementException */ private function validateNotSet(string $actionType): void { if ($this->isDataStored($actionType)) { throw new ContainsElementException("Data for <<$actionType>> is allready stored."); } } /** * @param string $actionType * * @throws NotSetElementException */ private function validateSet(string $actionType): void { if (!$this->isDataStored($actionType)) { throw new NotSetElementException("No data for <<$actionType>> is stored."); } } public function __construct() { $this->processedData = new ArrayCollection(); } /** * {@inheritdoc} * * @see \Infinito\Domain\DataAccessManagement\ActionsDAOInterface::getAllStoredData() */ public function getAllStoredData(): Collection { return $this->processedData; } /** * {@inheritdoc} * * @see \Infinito\Domain\DataAccessManagement\ActionsResultsDAOServiceInterface::setData() */ public function setData(string $actionType, $data): void { $this->validateActionType($actionType); $this->validateActionData($actionType, $data); $this->validateNotSet($actionType); $this->processedData->set($actionType, $data); } /** * {@inheritdoc} * * @see \Infinito\Domain\DataAccessManagement\ActionsDAOInterface::isDataStored() */ public function isDataStored(string $actionType): bool { return $this->processedData->containsKey($actionType); } /** * {@inheritdoc} * * @see \Infinito\Domain\DataAccessManagement\ActionsDAOInterface::getData() */ public function getData(string $actionType) { $this->validateActionType($actionType); $this->validateSet($actionType); return $this->processedData->get($actionType); } }