diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/public/WorkflowEngine/ICheck.php | 56 | ||||
-rw-r--r-- | lib/public/WorkflowEngine/IManager.php | 48 | ||||
-rw-r--r-- | lib/public/WorkflowEngine/RegisterCheckEvent.php | 79 |
3 files changed, 183 insertions, 0 deletions
diff --git a/lib/public/WorkflowEngine/ICheck.php b/lib/public/WorkflowEngine/ICheck.php new file mode 100644 index 00000000000..7e3d86caad9 --- /dev/null +++ b/lib/public/WorkflowEngine/ICheck.php @@ -0,0 +1,56 @@ +<?php +/** + * @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCP\WorkflowEngine; + + +use OCP\Files\Storage\IStorage; + +/** + * Interface ICheck + * + * @package OCP\WorkflowEngine + * @since 9.1 + */ +interface ICheck { + /** + * @param IStorage $storage + * @param string $path + * @since 9.1 + */ + public function setFileInfo(IStorage $storage, $path); + + /** + * @param string $operator + * @param string $value + * @return bool + * @since 9.1 + */ + public function executeCheck($operator, $value); + + /** + * @param string $operator + * @param string $value + * @throws \UnexpectedValueException + * @since 9.1 + */ + public function validateCheck($operator, $value); +} diff --git a/lib/public/WorkflowEngine/IManager.php b/lib/public/WorkflowEngine/IManager.php new file mode 100644 index 00000000000..e53a06ec929 --- /dev/null +++ b/lib/public/WorkflowEngine/IManager.php @@ -0,0 +1,48 @@ +<?php +/** + * @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCP\WorkflowEngine; + + +use OCP\Files\Storage\IStorage; + +/** + * Interface IManager + * + * @package OCP\WorkflowEngine + * @since 9.1 + */ +interface IManager { + /** + * @param IStorage $storage + * @param string $path + * @since 9.1 + */ + public function setFileInfo(IStorage $storage, $path); + + /** + * @param string $class + * @param bool $returnFirstMatchingOperationOnly + * @return array + * @since 9.1 + */ + public function getMatchingOperations($class, $returnFirstMatchingOperationOnly = true); +} diff --git a/lib/public/WorkflowEngine/RegisterCheckEvent.php b/lib/public/WorkflowEngine/RegisterCheckEvent.php new file mode 100644 index 00000000000..e08aae5fbc0 --- /dev/null +++ b/lib/public/WorkflowEngine/RegisterCheckEvent.php @@ -0,0 +1,79 @@ +<?php +/** + * @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCP\WorkflowEngine; + + +use Symfony\Component\EventDispatcher\Event; + +/** + * Class RegisterCheckEvent + * + * @package OCP\WorkflowEngine + * @since 9.1 + */ +class RegisterCheckEvent extends Event { + + /** @var array[] */ + protected $checks = []; + + /** + * @param string $class + * @param string $name + * @param string[] $operators + * @throws \OutOfBoundsException when the check class is already registered + * @throws \OutOfBoundsException when the provided information is invalid + * @since 9.1 + */ + public function addCheck($class, $name, array $operators) { + if (!is_string($class)) { + throw new \OutOfBoundsException('Given class name is not a string'); + } + + if (isset($this->checks[$class])) { + throw new \OutOfBoundsException('Duplicate check class "' . $class . '"'); + } + + if (!is_string($name)) { + throw new \OutOfBoundsException('Given check name is not a string'); + } + + foreach ($operators as $operator) { + if (!is_string($operator)) { + throw new \OutOfBoundsException('At least one of the operators is not a string'); + } + } + + $this->checks[$class] = [ + 'class' => $class, + 'name' => $name, + 'operators' => $operators, + ]; + } + + /** + * @return array[] + * @since 9.1 + */ + public function getChecks() { + return array_values($this->checks); + } +} |