[Beeframework-svn] SF.net SVN: beeframework:[59] trunk
Brought to you by:
b_hartmann,
m_plomer
|
From: <m_p...@us...> - 2013-08-24 12:32:10
|
Revision: 59
http://sourceforge.net/p/beeframework/code/59
Author: m_plomer
Date: 2013-08-24 12:32:07 +0000 (Sat, 24 Aug 2013)
Log Message:
-----------
- restructured libs
- added Doctrine2 EnumType
Modified Paths:
--------------
trunk/framework/Bee/Persistence/Doctrine2/DaoBase.php
Added Paths:
-----------
trunk/framework/Bee/Persistence/Doctrine2/Types/
trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php
Removed Paths:
-------------
trunk/libs/addendum-0.4.0/
trunk/libs/addendum-0.4.1/
trunk/libs/apache-log4php-2.3.0/
Property Changed:
----------------
trunk/
Index: trunk
===================================================================
--- trunk 2013-08-19 22:44:55 UTC (rev 58)
+++ trunk 2013-08-24 12:32:07 UTC (rev 59)
Property changes on: trunk
___________________________________________________________________
Modified: svn:ignore
## -1 +1,3 ##
.idea
+vendor/**
+composer.lock
Modified: trunk/framework/Bee/Persistence/Doctrine2/DaoBase.php
===================================================================
--- trunk/framework/Bee/Persistence/Doctrine2/DaoBase.php 2013-08-19 22:44:55 UTC (rev 58)
+++ trunk/framework/Bee/Persistence/Doctrine2/DaoBase.php 2013-08-24 12:32:07 UTC (rev 59)
@@ -1,5 +1,7 @@
<?php
namespace Bee\Persistence\Doctrine2;
+use Doctrine\ORM\Query;
+use Doctrine\ORM\QueryBuilder;
/**
* User: mp
@@ -17,13 +19,21 @@
* @internal param \Doctrine\ORM\QueryBuilder $query
* @return array
*/
- public function executeListQuery(\Doctrine\ORM\QueryBuilder $queryBuilder, \Bee_Persistence_IRestrictionHolder $restrictionHolder = null, \Bee_Persistence_IOrderAndLimitHolder $orderAndLimitHolder = null, array $defaultOrderMapping) {
+ public function executeListQuery(\Doctrine\ORM\QueryBuilder $queryBuilder, \Bee_Persistence_IRestrictionHolder $restrictionHolder = null, \Bee_Persistence_IOrderAndLimitHolder $orderAndLimitHolder = null, array $defaultOrderMapping, $hydrationMode = null) {
$this->applyFilterRestrictions($queryBuilder, $restrictionHolder);
$this->applyOrderAndLimit($queryBuilder, $orderAndLimitHolder, $defaultOrderMapping);
- return $queryBuilder->getQuery()->execute();
+ return $this->getQueryFromBuilder($queryBuilder)->execute(null, $hydrationMode);
}
/**
+ * @param QueryBuilder $qb
+ * @return Query
+ */
+ protected function getQueryFromBuilder(QueryBuilder $qb) {
+ return $qb->getQuery();
+ }
+
+ /**
* @param \Doctrine\ORM\QueryBuilder $queryBuilder
* @param \Bee_Persistence_IRestrictionHolder $restrictionHolder
* @internal param \Doctrine\ORM\QueryBuilder $query
@@ -87,7 +97,7 @@
$queryBuilder->setMaxResults($orderAndLimitHolder->getPageSize());
// TODO: build a performant count-query! This is simply bullshit!
- $pageCount = ceil(count($queryBuilder->getQuery()->execute()) / $orderAndLimitHolder->getPageSize());
+ $pageCount = ceil(count($this->getQueryFromBuilder($queryBuilder)->execute()) / $orderAndLimitHolder->getPageSize());
$orderAndLimitHolder->setPageCount($pageCount);
if ($orderAndLimitHolder->getCurrentPage() > $pageCount) {
Added: trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php
===================================================================
--- trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php (rev 0)
+++ trunk/framework/Bee/Persistence/Doctrine2/Types/EnumType.php 2013-08-24 12:32:07 UTC (rev 59)
@@ -0,0 +1,39 @@
+<?php
+namespace Bee\Persistence\Doctrine2\Types;
+use Doctrine\DBAL\Platforms\AbstractPlatform;
+use Doctrine\DBAL\Types\Type;
+
+/**
+ * Class EnumType
+ * @package Bee\Persistence\Doctrine2\Types
+ */
+abstract class EnumType extends Type
+{
+ protected $name;
+ protected $values = array();
+
+ public function getSqlDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
+ {
+ $values = array_map(function($val) { return "'".$val."'"; }, $this->values);
+
+ return "ENUM(".implode(", ", $values).") COMMENT '(DC2Type:".$this->name.")'";
+ }
+
+ public function convertToPHPValue($value, AbstractPlatform $platform)
+ {
+ return $value;
+ }
+
+ public function convertToDatabaseValue($value, AbstractPlatform $platform)
+ {
+ if (!in_array($value, $this->values)) {
+ throw new \InvalidArgumentException("Invalid '".$this->name."' value.");
+ }
+ return $value;
+ }
+
+ public function getName()
+ {
+ return $this->name;
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|