summaryrefslogtreecommitdiffstats
path: root/library/Director/Objects/ImportRowModifier.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/Director/Objects/ImportRowModifier.php')
-rw-r--r--library/Director/Objects/ImportRowModifier.php91
1 files changed, 91 insertions, 0 deletions
diff --git a/library/Director/Objects/ImportRowModifier.php b/library/Director/Objects/ImportRowModifier.php
new file mode 100644
index 0000000..76982c2
--- /dev/null
+++ b/library/Director/Objects/ImportRowModifier.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace Icinga\Module\Director\Objects;
+
+use Icinga\Module\Director\Data\Db\DbObjectWithSettings;
+use Icinga\Module\Director\Hook\PropertyModifierHook;
+use Icinga\Module\Director\Objects\Extension\PriorityColumn;
+use RuntimeException;
+
+class ImportRowModifier extends DbObjectWithSettings implements InstantiatedViaHook
+{
+ use PriorityColumn;
+
+ protected $table = 'import_row_modifier';
+
+ protected $keyName = 'id';
+
+ protected $autoincKeyName = 'id';
+
+ protected $defaultProperties = [
+ 'id' => null,
+ 'source_id' => null,
+ 'property_name' => null,
+ 'provider_class' => null,
+ 'target_property' => null,
+ 'priority' => null,
+ 'description' => null,
+ ];
+
+ protected $settingsTable = 'import_row_modifier_setting';
+
+ protected $settingsRemoteId = 'row_modifier_id';
+
+ private $hookInstance;
+
+ public function getInstance()
+ {
+ if ($this->hookInstance === null) {
+ $class = $this->get('provider_class');
+ /** @var PropertyModifierHook $obj */
+ if (! class_exists($class)) {
+ throw new RuntimeException(sprintf(
+ 'Cannot instantiate Property modifier %s',
+ $class
+ ));
+ }
+ $obj = new $class;
+ $obj->setSettings($this->getSettings());
+ $obj->setPropertyName($this->get('property_name'));
+ $obj->setTargetProperty($this->get('target_property'));
+ $obj->setDb($this->connection);
+ $this->hookInstance = $obj;
+ }
+
+ return $this->hookInstance;
+ }
+
+ /**
+ * @deprecated please use \Icinga\Module\Director\Data\Exporter
+ * @return \stdClass
+ */
+ public function export()
+ {
+ $properties = $this->getProperties();
+ unset($properties['id']);
+ unset($properties['source_id']);
+ $properties['settings'] = $this->getInstance()->exportSettings();
+ ksort($properties);
+
+ return (object) $properties;
+ }
+
+ public function setSettings($settings)
+ {
+ $settings = $this->getInstance()->setSettings((array) $settings)->getSettings();
+
+ return parent::setSettings($settings); // TODO: Change the autogenerated stub
+ }
+
+ protected function beforeStore()
+ {
+ if (! $this->hasBeenLoadedFromDb() && $this->get('priority') === null) {
+ $this->setNextPriority('source_id');
+ }
+ }
+
+ protected function onInsert()
+ {
+ $this->refreshPriortyProperty();
+ }
+}