/** * Sets up the fixture, for example, opens a network connection. * This method is called before a test is executed. */ protected function setUp() { $this->raw = array(array("id" => 1, "name" => "lazer")); $class = "\\flowcode\\demo\\domain\\Weapon"; $mappingFilePath = dirname(__FILE__) . "/../ceibo-mapping-test.xml"; $mapping = simplexml_load_file($mappingFilePath); $mapper = MapperBuilder::buildFromName($mapping, "weapon"); $this->object = new Collection($class, $this->raw, $mapper); }
public function testBuildFromName_withTypes_testOk() { $instance = new Weapon(1, "lazer"); $mapping = simplexml_load_file($this->mappingFilePath); $mapper = $this->object->buildFromName($mapping, "weapon"); $raw = array("id" => 1, "name" => "lazer"); $this->assertEquals(get_class($instance), $mapper->getClass()); $this->assertEquals("weapon", $mapper->getName()); $property = $mapper->getProperty("Name"); $this->assertNotNull($mapper->createObject($raw)); $this->assertEquals("string", $property->getType()); }
public function populateEntity($entity, $values, $mapper = null, $relationColumn = null) { if (is_null($mapper)) { $mapper = MapperBuilder::buildFromMapping($this->mapping, get_class($entity)); } foreach ($values as $key => $value) { if ($mapper->getNameForColumn($key) != NULL) { $method = "set" . $mapper->getNameForColumn($key); $entity->{$method}($value); } } }
/** * Finds entitys by its generic filter defined in the configured mapping. * @param type $name * @param type $filter * @param type $page * @param type $orderColumn * @param type $orderType * @return Pager */ public function findByGenericFilter($name, $filter = null, $page = 1, $orderColumn = null, $orderType = null) { $this->load(); $mapper = MapperBuilder::buildFromName($this->mapping, $name); $selectQuery = ""; $whereQuery = ""; $orderQuery = ""; $selectQuery .= "SELECT * FROM `" . $mapper->getTable() . "` "; $filterList = array(); if (!is_null($filter)) { $filterList = explode(" ", $filter); } if (!is_null($filter)) { $whereQuery .= " WHERE 1=2 "; foreach ($filterList as $searchedWord) { foreach ($mapper->getFilter("generic")->getColumns() as $filteredColumn) { $whereQuery .= " OR {$filteredColumn} LIKE '%" . $searchedWord . "%'"; } } } else { $whereQuery .= " WHERE 1 "; } if (!is_null($orderColumn)) { $orderQuery .= "ORDER BY {$orderColumn} "; if (!is_null($orderType)) { $orderQuery .= "{$orderType}"; } else { $orderQuery .= "ASC"; } } $from = ($page - 1) * $mapper->getFilter("generic")->getItemsPerPage(); $pageQuery = " LIMIT {$from} , " . $mapper->getFilter("generic")->getItemsPerPage(); $query = $selectQuery . $whereQuery . $orderQuery . $pageQuery; $result = $this->getDataSource()->query($query); if ($result) { $collection = new Collection($mapper->getClass(), $result, $mapper); } else { $collection = new Collection($mapper->getClass(), array(), $mapper); } $selectCountQuery = "SELECT count(*) as total FROM `" . $mapper->getTable() . "` "; $query = $selectCountQuery . $whereQuery; $result = $this->getDataSource()->query($query); $itemCount = $result[0]["total"]; $pager = new Pager($collection, $itemCount, $mapper->getFilter("generic")->getItemsPerPage(), $page); return $pager; }
public static function getInsertRelation($entity, $relation) { $relQuery = ""; $getid = "getId"; if ($relation->getCardinality() == Relation::$manyToMany) { $m = "get" . $relation->getName(); foreach ($entity->{$m}() as $rel) { $relQuery .= "INSERT INTO " . $relation->getTable() . " (" . $relation->getLocalColumn() . ", " . $relation->getForeignColumn() . ") "; $relQuery .= "VALUES ('" . $entity->{$getid}() . "', '" . $rel->{$getid}() . "');"; } } if ($relation->getCardinality() == Relation::$oneToMany) { $relMapper = MapperBuilder::buildFromName($this->mapping, $relation->getEntity()); $m = "get" . $relation->getName(); foreach ($entity->{$m}() as $rel) { $setid = "set" . $relMapper->getNameForColumn($relation->getForeignColumn()); $rel->{$setid}($entity->{$getid}()); $relQuery .= $this->buildInsertQuery($rel); } } return $relQuery; }