From f80f3c3e077bedad573be3f3b74e531aec77f431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C3=B6hmer?= <daniel.boehmer@jtl-software.com> Date: Thu, 16 Jul 2015 14:17:26 +0200 Subject: [PATCH] push, pull, delete, key mapper, checksum linker and sqlite db --- src/Checksum/ChecksumLoader.php | 25 +++++- src/Connector.php | 3 +- src/Controller/Category.php | 12 +++ src/Controller/Connector.php | 88 +++++++++--------- src/Controller/CrossSelling.php | 12 +++ src/Controller/Customer.php | 12 +++ src/Controller/CustomerOrder.php | 12 +++ src/Controller/DataController.php | 143 ++++++++++++++++++++++++++++++ src/Controller/DeliveryNote.php | 12 +++ src/Controller/Image.php | 12 +++ src/Controller/Manufacturer.php | 12 +++ src/Controller/Product.php | 28 ++---- src/Controller/Specific.php | 12 +++ src/Mapper/Category.php | 12 +++ src/Mapper/CrossSelling.php | 12 +++ src/Mapper/Customer.php | 12 +++ src/Mapper/CustomerOrder.php | 12 +++ src/Mapper/DataMapper.php | 86 ++++++++++++++++++ src/Mapper/DeliveryNote.php | 12 +++ src/Mapper/Image.php | 12 +++ src/Mapper/Manufacturer.php | 12 +++ src/Mapper/PrimaryKeyMapper.php | 43 +++++++-- src/Mapper/Product.php | 12 +++ src/Mapper/Specific.php | 12 +++ src/Utility/Mmc.php | 90 +++++++++++++++++++ 25 files changed, 629 insertions(+), 81 deletions(-) create mode 100644 src/Controller/Category.php create mode 100644 src/Controller/CrossSelling.php create mode 100644 src/Controller/Customer.php create mode 100644 src/Controller/CustomerOrder.php create mode 100644 src/Controller/DataController.php create mode 100644 src/Controller/DeliveryNote.php create mode 100644 src/Controller/Image.php create mode 100644 src/Controller/Manufacturer.php create mode 100644 src/Controller/Specific.php create mode 100644 src/Mapper/Category.php create mode 100644 src/Mapper/CrossSelling.php create mode 100644 src/Mapper/Customer.php create mode 100644 src/Mapper/CustomerOrder.php create mode 100644 src/Mapper/DataMapper.php create mode 100644 src/Mapper/DeliveryNote.php create mode 100644 src/Mapper/Image.php create mode 100644 src/Mapper/Manufacturer.php create mode 100644 src/Mapper/Product.php create mode 100644 src/Mapper/Specific.php create mode 100644 src/Utility/Mmc.php diff --git a/src/Checksum/ChecksumLoader.php b/src/Checksum/ChecksumLoader.php index 5e1f4a0..c021299 100644 --- a/src/Checksum/ChecksumLoader.php +++ b/src/Checksum/ChecksumLoader.php @@ -1,11 +1,28 @@ <?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Checksum + */ namespace jtl\Connector\Example\Checksum; use jtl\Connector\Checksum\IChecksumLoader; +use jtl\Connector\Core\IO\Path; +use jtl\Connector\Database\Sqlite3; class ChecksumLoader implements IChecksumLoader { + protected $db; + + public function __construct() + { + $sqlite3 = Sqlite3::getInstance(); + if (!$sqlite3->isConnected()) { + $sqlite3->connect(array('location' => Path::combine(CONNECTOR_DIR, 'db', 'connector.s3db'))); + } + + $this->db = $sqlite3; + } /** * Loads the checksum @@ -16,7 +33,7 @@ class ChecksumLoader implements IChecksumLoader */ public function read($endpointId, $type) { - // TODO: Implement read() method. + return $this->db->fetchSingle(sprintf('SELECT checksum FROM checksum WHERE endpoint = %s AND type = %s', $endpointId, $type)); } /** @@ -29,7 +46,9 @@ class ChecksumLoader implements IChecksumLoader */ public function write($endpointId, $type, $checksum) { - // TODO: Implement write() method. + $id = $this->db->insert(sprintf('INSERT INTO checksum (endpoint, type, checksum) VALUES (%s, %s, %s)', $endpointId, $type, $checksum)); + + return $id !== false; } /** @@ -41,6 +60,6 @@ class ChecksumLoader implements IChecksumLoader */ public function delete($endpointId, $type) { - // TODO: Implement delete() method. + return $this->db->query(sprintf('DELETE FROM checksum WHERE endpoint = %s AND type = %s', $endpointId, $type)); } } diff --git a/src/Connector.php b/src/Connector.php index d6301fe..c5d8ba0 100644 --- a/src/Connector.php +++ b/src/Connector.php @@ -20,7 +20,6 @@ use jtl\Connector\Result\Action; * Example Connector * * @access public - * @author Christian Spoo <christian.spoo@jtl-software.com> */ class Connector extends BaseConnector { @@ -52,7 +51,7 @@ class Connector extends BaseConnector { $controller = RpcMethod::buildController($this->getMethod()->getController()); - $class = "\\jtl\\Connector\\Magento\\Controller\\{$controller}"; + $class = "\\jtl\\Connector\\Example\\Controller\\{$controller}"; if (class_exists($class)) { $this->controller = $class::getInstance(); $this->action = RpcMethod::buildAction($this->getMethod()->getAction()); diff --git a/src/Controller/Category.php b/src/Controller/Category.php new file mode 100644 index 0000000..244b368 --- /dev/null +++ b/src/Controller/Category.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Controller; + +class Category extends DataController +{ + +} diff --git a/src/Controller/Connector.php b/src/Controller/Connector.php index 340728c..96b4f1f 100644 --- a/src/Controller/Connector.php +++ b/src/Controller/Connector.php @@ -1,63 +1,59 @@ <?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ namespace jtl\Connector\Example\Controller; -use jtl\Connector\Core\Controller\Controller; -use jtl\Connector\Core\Model\DataModel; +use jtl\Connector\Core\Logger\Logger; use jtl\Connector\Core\Model\QueryFilter; -use jtl\Connector\Core\Rpc\Error; +use jtl\Connector\Example\Utility\Mmc; +use jtl\Connector\Formatter\ExceptionFormatter; use jtl\Connector\Result\Action; use jtl\Connector\Model\ConnectorIdentification; -class Connector extends Controller +class Connector extends DataController { - private $controllers = array( - 'Product' - ); - - public function push(DataModel $model) - { - - } - - public function delete(DataModel $model) - { - - } - - public function pull(QueryFilter $filter) - { - - } - - public function statistic(QueryFilter $filter) + /** + * Statistic + * + * @param \jtl\Connector\Core\Model\QueryFilter $queryFilter + * @return \jtl\Connector\Result\Action + */ + public function statistic(QueryFilter $queryFilter) { $action = new Action(); $action->setHandled(true); - try { - $result = array(); - - foreach ($this->controllers as $controller) { - $controller = __NAMESPACE__ . '\\' . $controller; - $obj = new $controller(); - - if (method_exists($obj, 'statistic')) { - $method_result = $obj->statistic($filter); - - $result[] = $method_result->getResult(); + $results = array(); + + $mainControllers = array( + 'Category', + 'Customer', + 'CustomerOrder', + 'CrossSelling', + 'DeliveryNote', + 'Image', + 'Product', + 'Manufacturer', + 'Payment' + ); + + foreach ($mainControllers as $mainController) { + try { + $controller = Mmc::getController($mainController); + $result = $controller->statistic($queryFilter); + if ($result !== null && $result->isHandled() && !$result->isError()) { + $results[] = $result->getResult(); } + } catch (\Exception $exc) { + Logger::write(ExceptionFormatter::format($exc), Logger::WARNING, 'controller'); } - - $action->setResult($result); - } - catch (\Exception $exc) { - $err = new Error(); - $err->setCode($exc->getCode()); - $err->setMessage($exc->getMessage()); - $action->setError($err); } + $action->setResult($results); + return $action; } @@ -72,7 +68,7 @@ class Connector extends Controller $action->setHandled(true); $identification = new ConnectorIdentification(); - $identification->setEndpointVersion('1.0.0.0') + $identification->setEndpointVersion('1.0.0') ->setPlatformName('Example') ->setPlatformVersion('1.0') ->setProtocolVersion(Application()->getProtocolVersion()); @@ -89,6 +85,10 @@ class Connector extends Controller */ public function finish() { + $action = new Action(); + + $action->setHandled(true); + $action->setResult(true); return $action; } diff --git a/src/Controller/CrossSelling.php b/src/Controller/CrossSelling.php new file mode 100644 index 0000000..a61e817 --- /dev/null +++ b/src/Controller/CrossSelling.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Controller; + +class CrossSelling extends DataController +{ + +} diff --git a/src/Controller/Customer.php b/src/Controller/Customer.php new file mode 100644 index 0000000..85d1895 --- /dev/null +++ b/src/Controller/Customer.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Controller; + +class Customer extends DataController +{ + +} diff --git a/src/Controller/CustomerOrder.php b/src/Controller/CustomerOrder.php new file mode 100644 index 0000000..68fe244 --- /dev/null +++ b/src/Controller/CustomerOrder.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Controller; + +class CustomerOrder extends DataController +{ + +} diff --git a/src/Controller/DataController.php b/src/Controller/DataController.php new file mode 100644 index 0000000..c9d5fb6 --- /dev/null +++ b/src/Controller/DataController.php @@ -0,0 +1,143 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Controller; + +use jtl\Connector\Core\Controller\Controller; +use jtl\Connector\Core\Logger\Logger; +use jtl\Connector\Core\Model\QueryFilter; +use jtl\Connector\Core\Rpc\Error; +use jtl\Connector\Core\Utilities\ClassName; +use jtl\Connector\Example\Utility\Mmc; +use jtl\Connector\Formatter\ExceptionFormatter; +use jtl\Connector\Core\Model\DataModel; +use jtl\Connector\Model\Statistic; +use jtl\Connector\Result\Action; +use jtl\Connector\Serializer\JMS\SerializerBuilder; + +abstract class DataController extends Controller +{ + /** + * Statistic + * + * @param \jtl\Connector\Core\Model\QueryFilter $queryFilter + * @return \jtl\Connector\Result\Action + */ + public function statistic(QueryFilter $queryFilter) + { + $action = new Action(); + $action->setHandled(true); + + try { + $class = ClassName::getFromNS(get_called_class()); + + $statModel = new Statistic(); + $mapper = Mmc::getMapper($class); + + $statModel->setAvailable($mapper->fetchCount()); + $statModel->setControllerName(lcfirst($class)); + + $action->setResult($statModel->getPublic()); + } catch (\Exception $exc) { + $action->setError($this->handleException($exc)); + } + + return $action; + } + + /** + * Insert or update + * + * @param \jtl\Connector\Core\Model\DataModel $model + * @return \jtl\Connector\Result\Action + */ + public function push(DataModel $model) + { + $action = new Action(); + $action->setHandled(true); + + try { + $class = ClassName::getFromNS(get_called_class()); + + $mapper = Mmc::getMapper($class); + $mapper->save($model); + $action->setResult($model); + } catch (\Exception $exc) { + $action->setError($this->handleException($exc)); + } + + return $action; + } + + /** + * Select + * + * @param \jtl\Connector\Core\Model\QueryFilter $queryFilter + * @return \jtl\Connector\Result\Action + */ + public function pull(QueryFilter $queryFilter) + { + $action = new Action(); + $action->setHandled(true); + + try { + $result = []; + $limit = $queryFilter->isLimit() ? $queryFilter->getLimit() : 100; + + $class = ClassName::getFromNS(get_called_class()); + + $mapper = Mmc::getMapper($class); + $models = $mapper->findAll($limit); + + $serializer = SerializerBuilder::create(); + foreach ($models as $model) { + $result[] = $serializer->deserialize($model, sprintf('jtl\Connector\Model\%s', $class), 'json'); + } + + $action->setResult($result); + } catch (\Exception $exc) { + $action->setError($this->handleException($exc)); + } + + return $action; + } + + /** + * Delete + * + * @param \jtl\Connector\Core\Model\DataModel $model + * @return \jtl\Connector\Result\Action + */ + public function delete(DataModel $model) + { + $action = new Action(); + $action->setHandled(true); + + try { + $class = ClassName::getFromNS(get_called_class()); + + $mapper = Mmc::getMapper($class); + $res = $mapper->delete($model); + + $action->setResult($res); + } catch (\Exception $exc) { + $action->setError($this->handleException($exc)); + } + + return $action; + } + + protected function handleException(\Exception $e) + { + Logger::write(ExceptionFormatter::format($e), Logger::WARNING, 'controller'); + + $err = new Error(); + $err->setCode($e->getCode()); + $err->setMessage($e->getMessage()); + + return $err; + } +} \ No newline at end of file diff --git a/src/Controller/DeliveryNote.php b/src/Controller/DeliveryNote.php new file mode 100644 index 0000000..a3aac4a --- /dev/null +++ b/src/Controller/DeliveryNote.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Controller; + +class DeliveryNote extends DataController +{ + +} diff --git a/src/Controller/Image.php b/src/Controller/Image.php new file mode 100644 index 0000000..6c293f1 --- /dev/null +++ b/src/Controller/Image.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Controller; + +class Image extends DataController +{ + +} diff --git a/src/Controller/Manufacturer.php b/src/Controller/Manufacturer.php new file mode 100644 index 0000000..5ee4321 --- /dev/null +++ b/src/Controller/Manufacturer.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Controller; + +class Manufacturer extends DataController +{ + +} diff --git a/src/Controller/Product.php b/src/Controller/Product.php index d550e8c..3d93a23 100644 --- a/src/Controller/Product.php +++ b/src/Controller/Product.php @@ -1,30 +1,12 @@ <?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ namespace jtl\Connector\Example\Controller; -use jtl\Connector\Core\Controller\Controller; -use jtl\Connector\Core\Model\DataModel; -use jtl\Connector\Core\Model\QueryFilter; - -class Product extends Controller +class Product extends DataController { - public function push(DataModel $model) - { - - } - - public function delete(DataModel $model) - { - - } - - public function pull(QueryFilter $filter) - { - - } - - public function statistic(QueryFilter $filter) - { - } } diff --git a/src/Controller/Specific.php b/src/Controller/Specific.php new file mode 100644 index 0000000..a65f23c --- /dev/null +++ b/src/Controller/Specific.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Controller; + +class Specific extends DataController +{ + +} diff --git a/src/Mapper/Category.php b/src/Mapper/Category.php new file mode 100644 index 0000000..fc62ecc --- /dev/null +++ b/src/Mapper/Category.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Mapper; + +class Category extends DataMapper +{ + +} \ No newline at end of file diff --git a/src/Mapper/CrossSelling.php b/src/Mapper/CrossSelling.php new file mode 100644 index 0000000..455d9d2 --- /dev/null +++ b/src/Mapper/CrossSelling.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Mapper; + +class CrossSelling extends DataMapper +{ + +} \ No newline at end of file diff --git a/src/Mapper/Customer.php b/src/Mapper/Customer.php new file mode 100644 index 0000000..9ed3382 --- /dev/null +++ b/src/Mapper/Customer.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Mapper; + +class Customer extends DataMapper +{ + +} \ No newline at end of file diff --git a/src/Mapper/CustomerOrder.php b/src/Mapper/CustomerOrder.php new file mode 100644 index 0000000..73d86bb --- /dev/null +++ b/src/Mapper/CustomerOrder.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Mapper; + +class CustomerOrder extends DataMapper +{ + +} \ No newline at end of file diff --git a/src/Mapper/DataMapper.php b/src/Mapper/DataMapper.php new file mode 100644 index 0000000..8f98c42 --- /dev/null +++ b/src/Mapper/DataMapper.php @@ -0,0 +1,86 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Mapper + */ + +namespace jtl\Connector\Example\Mapper; + +use jtl\Connector\Core\IO\Path; +use jtl\Connector\Core\Utilities\ClassName; +use jtl\Connector\Core\Utilities\Singleton; +use jtl\Connector\Database\Sqlite3; +use jtl\Connector\Model\DataModel; + +abstract class DataMapper extends Singleton +{ + protected $db; + + protected function __construct() + { + $sqlite3 = Sqlite3::getInstance(); + $sqlite3->connect(array('location' => Path::combine(CONNECTOR_DIR, 'db', 'connector.s3db'))); + + $this->db = $sqlite3; + } + + public function find($id) + { + $id = (int) $id; + if ($id > 0) { + $type = strtolower(ClassName::getFromNS(get_called_class())); + return $this->db->fetchSingle(sprintf('SELECT data FROM %s WHERE id = %s', $type, $id)); + } + + return null; + } + + public function findAll($limit = 100) + { + $result = []; + $type = strtolower(ClassName::getFromNS(get_called_class())); + $rows = $this->db->query(sprintf('SELECT data + FROM %s t + LEFT JOIN mapping m ON t.id = m.endpoint + WHERE m.host IS NULL + LIMIT %s', $type, $limit)); + + if ($rows !== null) { + foreach ($rows as $row) { + $result[] = $row['data']; + } + } + + return $result; + } + + public function save(DataModel &$model) + { + $json = $model->toJson(); + $type = strtolower(ClassName::getFromNS(get_called_class())); + $id = $this->db->insert(sprintf('INSERT INTO %s (id, data) VALUES (null, %s)', $type, $json)); + + $model->getId()->setEndpoint($id); + } + + public function remove($id) + { + $id = (int) $id; + if ($id > 0) { + $type = strtolower(ClassName::getFromNS(get_called_class())); + + return $this->db->query(sprintf('DELETE FROM %s WHERE id = %s', $type, $id)); + } + + return false; + } + + public function fetchCount() + { + $type = strtolower(ClassName::getFromNS(get_called_class())); + return (int) $this->db->fetchSingle(sprintf('SELECT count(*) + FROM %s t + LEFT JOIN mapping m ON t.id = m.endpoint + WHERE m.host IS NULL', $type)); + } +} \ No newline at end of file diff --git a/src/Mapper/DeliveryNote.php b/src/Mapper/DeliveryNote.php new file mode 100644 index 0000000..a96c40c --- /dev/null +++ b/src/Mapper/DeliveryNote.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Mapper; + +class DeliveryNote extends DataMapper +{ + +} \ No newline at end of file diff --git a/src/Mapper/Image.php b/src/Mapper/Image.php new file mode 100644 index 0000000..b72206f --- /dev/null +++ b/src/Mapper/Image.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Mapper; + +class Image extends DataMapper +{ + +} \ No newline at end of file diff --git a/src/Mapper/Manufacturer.php b/src/Mapper/Manufacturer.php new file mode 100644 index 0000000..7898e3e --- /dev/null +++ b/src/Mapper/Manufacturer.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Mapper; + +class Manufacturer extends DataMapper +{ + +} \ No newline at end of file diff --git a/src/Mapper/PrimaryKeyMapper.php b/src/Mapper/PrimaryKeyMapper.php index 3f0d83d..27eb77e 100644 --- a/src/Mapper/PrimaryKeyMapper.php +++ b/src/Mapper/PrimaryKeyMapper.php @@ -1,14 +1,28 @@ <?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Mapper + */ namespace jtl\Connector\Example\Mapper; -use jtl\Connector\Core\Logger\Logger; -use jtl\Connector\Drawing\ImageRelationType; -use jtl\Connector\Linker\IdentityLinker; +use jtl\Connector\Core\IO\Path; +use jtl\Connector\Database\Sqlite3; use jtl\Connector\Mapper\IPrimaryKeyMapper; class PrimaryKeyMapper implements IPrimaryKeyMapper { + protected $db; + + public function __construct() + { + $sqlite3 = Sqlite3::getInstance(); + if (!$sqlite3->isConnected()) { + $sqlite3->connect(array('location' => Path::combine(CONNECTOR_DIR, 'db', 'connector.s3db'))); + } + + $this->db = $sqlite3; + } /** * Host ID getter @@ -19,7 +33,7 @@ class PrimaryKeyMapper implements IPrimaryKeyMapper */ public function getHostId($endpointId, $type) { - // TODO: Implement getHostId() method. + return $this->db->fetchSingle(sprintf('SELECT host FROM mapping WHERE endpoint = %s AND type = %s', $endpointId, $type)); } /** @@ -31,7 +45,7 @@ class PrimaryKeyMapper implements IPrimaryKeyMapper */ public function getEndpointId($hostId, $type) { - // TODO: Implement getEndpointId() method. + return $this->db->fetchSingle(sprintf('SELECT endpoint FROM mapping WHERE host = %s AND type = %s', $hostId, $type)); } /** @@ -44,7 +58,9 @@ class PrimaryKeyMapper implements IPrimaryKeyMapper */ public function save($endpointId, $hostId, $type) { - // TODO: Implement save() method. + $id = $this->db->insert(sprintf('INSERT INTO mapping (endpoint, host, type) VALUES (%s, %s, %s)', $endpointId, $hostId, $type)); + + return $id !== false; } /** @@ -57,7 +73,16 @@ class PrimaryKeyMapper implements IPrimaryKeyMapper */ public function delete($endpointId = null, $hostId = null, $type) { - // TODO: Implement delete() method. + $where = ''; + if ($endpointId !== null && $hostId !== null) { + $where = sprintf('WHERE endpoint = %s AND host = %s AND type = %s', $endpointId, $hostId, $type); + } elseif ($endpointId !== null) { + $where = sprintf('WHERE endpoint = %s AND type = %s', $endpointId, $type); + } elseif ($hostId !== null) { + $where = sprintf('WHERE host = %s AND type = %s', $hostId, $type); + } + + return $this->db->query(sprintf('DELETE FROM mapping %s'), $where); } /** @@ -67,7 +92,7 @@ class PrimaryKeyMapper implements IPrimaryKeyMapper */ public function clear() { - // TODO: Implement clear() method. + return $this->db->query('DELETE FROM mapping'); } /** @@ -77,6 +102,6 @@ class PrimaryKeyMapper implements IPrimaryKeyMapper */ public function gc() { - // TODO: Implement gc() method. + return true; } } diff --git a/src/Mapper/Product.php b/src/Mapper/Product.php new file mode 100644 index 0000000..c64feab --- /dev/null +++ b/src/Mapper/Product.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Mapper; + +class Product extends DataMapper +{ + +} \ No newline at end of file diff --git a/src/Mapper/Specific.php b/src/Mapper/Specific.php new file mode 100644 index 0000000..ab33ab7 --- /dev/null +++ b/src/Mapper/Specific.php @@ -0,0 +1,12 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Controller + */ + +namespace jtl\Connector\Example\Mapper; + +class Specific extends DataMapper +{ + +} \ No newline at end of file diff --git a/src/Utility/Mmc.php b/src/Utility/Mmc.php new file mode 100644 index 0000000..556907d --- /dev/null +++ b/src/Utility/Mmc.php @@ -0,0 +1,90 @@ +<?php +/** + * @copyright 2010-2013 JTL-Software GmbH + * @package jtl\Connector\Example\Utility + */ + +namespace jtl\Connector\Example\Utility; + +/** + * Model Mapper Controller Class + */ +final class Mmc +{ + const NAMESPACE_MODEL = "\\jtl\\Connector\\Model\\"; + const NAMESPACE_MAPPER = "\\jtl\\Connector\\Example\\Mapper\\"; + const NAMESPACE_CONTROLLER = "\\jtl\\Connector\\Example\\Controller\\"; + + private function __construct() + { + } + + /** + * Model Getter + * + * @param string $class + * @param boolean $useNamespace + * @throws \Exception + * @return string|mixed + */ + public static function getModel($class, $useNamespace = false) + { + if (class_exists(self::NAMESPACE_MODEL . $class)) { + if ($useNamespace) { + return self::NAMESPACE_MODEL . $class; + } else { + $class = self::NAMESPACE_MODEL . $class; + + return new $class(); + } + } + + throw new \Exception("Class '" . self::NAMESPACE_MODEL . $class . "' not found"); + } + + /** + * Mapper Getter + * + * @param string $class + * @param boolean $useNamespace + * @throws \Exception + * @return string|mixed + */ + public static function getMapper($class, $useNamespace = false) + { + if (class_exists(self::NAMESPACE_MAPPER . $class)) { + if ($useNamespace) { + return self::NAMESPACE_MAPPER . $class; + } else { + $class = self::NAMESPACE_MAPPER . $class; + + return $class::getInstance(); + } + } + + throw new \Exception("Mapper '" . self::NAMESPACE_MAPPER . $class . "' not found"); + } + + /** + * Controller Getter + * + * @param string $class + * @param boolean $useNamespace + * @throws \Exception + * @return string|mixed + */ + public static function getController($class, $useNamespace = false) + { + if (class_exists(self::NAMESPACE_CONTROLLER . $class)) { + if ($useNamespace) { + return self::NAMESPACE_CONTROLLER . $class; + } else { + $class = self::NAMESPACE_CONTROLLER . $class; + + return $class::getInstance(); + } + } + + throw new \Exception("Controller '" . self::NAMESPACE_CONTROLLER . $class . "' not found"); + } +} -- GitLab