Created
July 19, 2012 09:59
-
-
Save ikwattro/3142810 to your computer and use it in GitHub Desktop.
Neo4j User Proxy Class
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use HireVoice\Neo4j\Extension; | |
use HireVoice\Neo4j\EntityProxy; | |
use Doctrine\Common\Collections\ArrayCollection; | |
class neo4jProxyAcme_DemoBundle_Entity_User extends Acme\DemoBundle\Entity\User implements EntityProxy | |
{ | |
private $neo4j_hydrated = array(); | |
private $neo4j_meta; | |
private $neo4j_node; | |
private $neo4j_loadCallback; | |
private $neo4j_relationships = false; | |
function getEntity() | |
{ | |
$entity = new Acme\DemoBundle\Entity\User; | |
foreach ($this->neo4j_meta->getProperties() as $prop) { | |
$prop->setValue($entity, $prop->getValue($this)); | |
} | |
$prop = $this->neo4j_meta->getPrimaryKey(); | |
$prop->setValue($entity, $prop->getValue($this)); | |
return $entity; | |
} | |
function getId() | |
{ | |
self::__load('getId'); | |
return parent::getId(); | |
} | |
function getFullName() | |
{ | |
self::__load('getFullName'); | |
return parent::getFullName(); | |
} | |
function getFriends() | |
{ | |
self::__load('getFriends'); | |
return parent::getFriends(); | |
} | |
function setFullName($name) | |
{ | |
self::__load('setFullName'); | |
return parent::setFullName($name); | |
} | |
function setFriends(Doctrine\Common\Collections\ArrayCollection $friends) | |
{ | |
self::__load('setFriends'); | |
return parent::setFriends($friends); | |
} | |
function addFriend($friend) | |
{ | |
self::__load('addFriend'); | |
return parent::addFriend($friend); | |
} | |
function addRole($role) | |
{ | |
self::__load('addRole'); | |
return parent::addRole($role); | |
} | |
function serialize() | |
{ | |
self::__load('serialize'); | |
return parent::serialize(); | |
} | |
function unserialize($serialized) | |
{ | |
self::__load('unserialize'); | |
return parent::unserialize($serialized); | |
} | |
function eraseCredentials() | |
{ | |
self::__load('eraseCredentials'); | |
return parent::eraseCredentials(); | |
} | |
function getUsername() | |
{ | |
self::__load('getUsername'); | |
return parent::getUsername(); | |
} | |
function getUsernameCanonical() | |
{ | |
self::__load('getUsernameCanonical'); | |
return parent::getUsernameCanonical(); | |
} | |
function getSalt() | |
{ | |
self::__load('getSalt'); | |
return parent::getSalt(); | |
} | |
function getEmail() | |
{ | |
self::__load('getEmail'); | |
return parent::getEmail(); | |
} | |
function getEmailCanonical() | |
{ | |
self::__load('getEmailCanonical'); | |
return parent::getEmailCanonical(); | |
} | |
function getPassword() | |
{ | |
self::__load('getPassword'); | |
return parent::getPassword(); | |
} | |
function getPlainPassword() | |
{ | |
self::__load('getPlainPassword'); | |
return parent::getPlainPassword(); | |
} | |
function getLastLogin() | |
{ | |
self::__load('getLastLogin'); | |
return parent::getLastLogin(); | |
} | |
function getConfirmationToken() | |
{ | |
self::__load('getConfirmationToken'); | |
return parent::getConfirmationToken(); | |
} | |
function getRoles() | |
{ | |
self::__load('getRoles'); | |
return parent::getRoles(); | |
} | |
function hasRole($role) | |
{ | |
self::__load('hasRole'); | |
return parent::hasRole($role); | |
} | |
function isAccountNonExpired() | |
{ | |
self::__load('isAccountNonExpired'); | |
return parent::isAccountNonExpired(); | |
} | |
function isAccountNonLocked() | |
{ | |
self::__load('isAccountNonLocked'); | |
return parent::isAccountNonLocked(); | |
} | |
function isCredentialsNonExpired() | |
{ | |
self::__load('isCredentialsNonExpired'); | |
return parent::isCredentialsNonExpired(); | |
} | |
function isCredentialsExpired() | |
{ | |
self::__load('isCredentialsExpired'); | |
return parent::isCredentialsExpired(); | |
} | |
function isEnabled() | |
{ | |
self::__load('isEnabled'); | |
return parent::isEnabled(); | |
} | |
function isExpired() | |
{ | |
self::__load('isExpired'); | |
return parent::isExpired(); | |
} | |
function isLocked() | |
{ | |
self::__load('isLocked'); | |
return parent::isLocked(); | |
} | |
function isSuperAdmin() | |
{ | |
self::__load('isSuperAdmin'); | |
return parent::isSuperAdmin(); | |
} | |
function isUser(FOS\UserBundle\Model\UserInterface $user = NULL) | |
{ | |
self::__load('isUser'); | |
return parent::isUser($user); | |
} | |
function removeRole($role) | |
{ | |
self::__load('removeRole'); | |
return parent::removeRole($role); | |
} | |
function setUsername($username) | |
{ | |
self::__load('setUsername'); | |
return parent::setUsername($username); | |
} | |
function setUsernameCanonical($usernameCanonical) | |
{ | |
self::__load('setUsernameCanonical'); | |
return parent::setUsernameCanonical($usernameCanonical); | |
} | |
function setCredentialsExpireAt(DateTime $date) | |
{ | |
self::__load('setCredentialsExpireAt'); | |
return parent::setCredentialsExpireAt($date); | |
} | |
function setCredentialsExpired($boolean) | |
{ | |
self::__load('setCredentialsExpired'); | |
return parent::setCredentialsExpired($boolean); | |
} | |
function setEmail($email) | |
{ | |
self::__load('setEmail'); | |
return parent::setEmail($email); | |
} | |
function setEmailCanonical($emailCanonical) | |
{ | |
self::__load('setEmailCanonical'); | |
return parent::setEmailCanonical($emailCanonical); | |
} | |
function setEnabled($boolean) | |
{ | |
self::__load('setEnabled'); | |
return parent::setEnabled($boolean); | |
} | |
function setExpired($boolean) | |
{ | |
self::__load('setExpired'); | |
return parent::setExpired($boolean); | |
} | |
function setExpiresAt(DateTime $date) | |
{ | |
self::__load('setExpiresAt'); | |
return parent::setExpiresAt($date); | |
} | |
function setPassword($password) | |
{ | |
self::__load('setPassword'); | |
return parent::setPassword($password); | |
} | |
function setSuperAdmin($boolean) | |
{ | |
self::__load('setSuperAdmin'); | |
return parent::setSuperAdmin($boolean); | |
} | |
function setPlainPassword($password) | |
{ | |
self::__load('setPlainPassword'); | |
return parent::setPlainPassword($password); | |
} | |
function setLastLogin(DateTime $time) | |
{ | |
self::__load('setLastLogin'); | |
return parent::setLastLogin($time); | |
} | |
function setLocked($boolean) | |
{ | |
self::__load('setLocked'); | |
return parent::setLocked($boolean); | |
} | |
function setConfirmationToken($confirmationToken) | |
{ | |
self::__load('setConfirmationToken'); | |
return parent::setConfirmationToken($confirmationToken); | |
} | |
function setPasswordRequestedAt(DateTime $date = NULL) | |
{ | |
self::__load('setPasswordRequestedAt'); | |
return parent::setPasswordRequestedAt($date); | |
} | |
function getPasswordRequestedAt() | |
{ | |
self::__load('getPasswordRequestedAt'); | |
return parent::getPasswordRequestedAt(); | |
} | |
function isPasswordRequestNonExpired($ttl) | |
{ | |
self::__load('isPasswordRequestNonExpired'); | |
return parent::isPasswordRequestNonExpired($ttl); | |
} | |
function setRoles(array $roles) | |
{ | |
self::__load('setRoles'); | |
return parent::setRoles($roles); | |
} | |
function getGroups() | |
{ | |
self::__load('getGroups'); | |
return parent::getGroups(); | |
} | |
function getGroupNames() | |
{ | |
self::__load('getGroupNames'); | |
return parent::getGroupNames(); | |
} | |
function hasGroup($name) | |
{ | |
self::__load('hasGroup'); | |
return parent::hasGroup($name); | |
} | |
function addGroup(FOS\UserBundle\Model\GroupInterface $group) | |
{ | |
self::__load('addGroup'); | |
return parent::addGroup($group); | |
} | |
function removeGroup(FOS\UserBundle\Model\GroupInterface $group) | |
{ | |
self::__load('removeGroup'); | |
return parent::removeGroup($group); | |
} | |
function __toString() | |
{ | |
self::__load('__toString'); | |
return parent::__toString(); | |
} | |
function __addHydrated($name) | |
{ | |
$this->neo4j_hydrated[] = $name; | |
} | |
function __setMeta($meta) | |
{ | |
$this->neo4j_meta = $meta; | |
} | |
function __setNode($node) | |
{ | |
$this->neo4j_node = $node; | |
} | |
function __setLoadCallback(\Closure $loadCallback) | |
{ | |
$this->neo4j_loadCallback = $loadCallback; | |
} | |
private function __load($name) | |
{ | |
if(!is_object($this->neo4j_meta)) { | |
return; | |
} | |
$property = $this->neo4j_meta->findProperty($name); | |
if (! $property) { | |
return; | |
} | |
if (strpos($name, 'set') === 0) { | |
$this->__addHydrated($property->getName()); | |
return; | |
} | |
if ($property->isProperty()) { | |
return; | |
} | |
if (in_array($property->getName(), $this->neo4j_hydrated)) { | |
return; | |
} | |
if (false === $this->neo4j_relationships) { | |
$command = new Extension\GetNodeRelationshipsLight($this->neo4j_node->getClient(), $this->neo4j_node); | |
$this->neo4j_relationships = $command->execute(); | |
} | |
$this->__addHydrated($property->getName()); | |
$collection = new ArrayCollection; | |
foreach ($this->neo4j_relationships as $relation) { | |
if ($relation['type'] == $property->getName()) { | |
// Read-only relations read the start node instead | |
if ($property->isTraversed()) { | |
$nodeUrl = $relation['end']; | |
} else { | |
$nodeUrl = $relation['start']; | |
} | |
$node = $this->neo4j_node->getClient()->getNode(basename($nodeUrl)); | |
$loader = $this->neo4j_loadCallback; | |
$collection->add($loader($node)); | |
} | |
} | |
if ($property->isRelationList()) { | |
$property->setValue($this, $collection); | |
} else { | |
if (count($collection)) { | |
$property->setValue($this, $collection->first()); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment