Skip to content
This repository has been archived by the owner on Sep 10, 2021. It is now read-only.

Commit

Permalink
ENH: Improvements for Cassandra
Browse files Browse the repository at this point in the history
  • Loading branch information
Julien Jomier committed Mar 25, 2011
1 parent 6b13cf7 commit b6b334d
Show file tree
Hide file tree
Showing 11 changed files with 253 additions and 53 deletions.
2 changes: 1 addition & 1 deletion core/models/base/GroupModelBase.php
Expand Up @@ -35,7 +35,7 @@ public function createGroup($communityDao,$name)
$group=new GroupDao();
$group->setName($name);
$group->setCommunityId($communityDao->getCommunityId());
$this->save($group);
$this->save($group);
return $group;
}

Expand Down
6 changes: 3 additions & 3 deletions core/models/base/UserModelBase.php
Expand Up @@ -71,14 +71,14 @@ public function createUser($email,$password,$firstname,$lastname,$admin=0)
$feedModel=$this->ModelLoader->loadModel('Feed');
$feedpolicygroupModel=$this->ModelLoader->loadModel('Feedpolicygroup');
$feedpolicyuserModel=$this->ModelLoader->loadModel('Feedpolicyuser');

$anonymousGroup=$groupModel->load(MIDAS_GROUP_ANONYMOUS_KEY);

$folderGlobal=$folderModel->createFolder('user_' . $userDao->getKey(),'Main folder of ' . $userDao->getFullName(),MIDAS_FOLDER_USERPARENT);
$folderPrivate=$folderModel->createFolder('Private','Private folder of ' . $userDao->getFullName(),$folderGlobal);
$folderPublic=$folderModel->createFolder('Public','Public folder of ' . $userDao->getFullName(),$folderGlobal);

$folderpolicygroupModel->createPolicy($anonymousGroup,$folderPublic,MIDAS_POLICY_READ);

$folderpolicyuserModel->createPolicy($userDao,$folderPrivate,MIDAS_POLICY_ADMIN);
$folderpolicyuserModel->createPolicy($userDao,$folderGlobal,MIDAS_POLICY_ADMIN);
$folderpolicyuserModel->createPolicy($userDao,$folderPublic,MIDAS_POLICY_ADMIN);
Expand Down
2 changes: 1 addition & 1 deletion core/models/cassandra/FeedpolicyuserModel.php
Expand Up @@ -7,7 +7,7 @@
*/
class FeedpolicyuserModel extends FeedpolicyuserModelBase
{


} // end class
?>
2 changes: 1 addition & 1 deletion core/models/cassandra/FolderModel.php
Expand Up @@ -17,7 +17,7 @@ function getByFolder_id($folderid)
$folderarray = $folder->get($folderid);
// Add the user_id
$folderarray[$this->_key] = $folderid;
$dao= $this->initDao('Folder',$userarray);
$dao= $this->initDao('Folder',$userarray);
}
catch(cassandra_NotFoundException $e)
{
Expand Down
87 changes: 78 additions & 9 deletions core/models/cassandra/FolderpolicygroupModel.php
Expand Up @@ -8,22 +8,91 @@
class FolderpolicygroupModel extends FolderpolicygroupModelBase
{
/** getPolicy
* @return FolderpolicyuserDao
* @return FolderpolicygroupDao
*/
public function getPolicy($user, $folder)
public function getPolicy($group, $folder)
{
if(!$user instanceof UserDao)
if(!$group instanceof GroupDao)
{
throw new Zend_Exception("Should be a user.");
throw new Zend_Exception("Should be a group.");
}
if(!$folder instanceof FolderDao)
{
throw new Zend_Exception("Should be a folder.");
}
return $this->initDao('Folderpolicyuser',$this->database->fetchRow($this->database->select()
->where('folder_id = ?',$folder->getKey())
->where('user_id = ?',$user->getKey())
));
}
$folderid = $folder->getKey();
$groupid = $group->getKey();

$column = 'group_'.$groupid;
$folderarray = $this->database->getCassandra('folder',$folderid,array($column));

// Massage the data to the proper format
$newarray['folder_id'] = $folderid;
$newarray['group_id'] = $groupid;
$newarray['policy'] = $folderarray[$column];

return $this->initDao('Folderpolicygroup',$newarray);
} // end getPolicy()

/** Custom save command */
public function save($dao)
{
$instance=$this->_name."Dao";
if(!$dao instanceof $instance)
{
throw new Zend_Exception("Should be an object ($instance).");
}

try
{
$folderid = $dao->getFolderId();
$groupid = $dao->getGroupId();
$column = 'group_'.$groupid;

$dataarray = array();
$dataarray[$column] = $dao->getPolicy();

$column_family = new ColumnFamily($this->database->getDB(),'folder');
$column_family->insert($folderid,$dataarray);
}
catch(Exception $e)
{
throw new Zend_Exception($e);
}

$dao->saved = true;
return true;
} // end save()

/** Custome delete command */
public function delete($dao)
{
$instance=ucfirst($this->_name)."Dao";
if(get_class($dao) != $instance)
{
throw new Zend_Exception("Should be an object ($instance). It was: ".get_class($dao) );
}
if(!$dao->saved)
{
throw new Zend_Exception("The dao should be saved first ...");
}

try
{
// Remove the column group from the folder
$folderid = $dao->getFolderId();
$groupid = $dao->getGroupId();
$column = 'group_'.$groupid;
$cf = new ColumnFamily($this->database->getDB(),'folder');
$cf->remove($folderid,array($column));
}
catch(Exception $e)
{
throw new Zend_Exception($e);
}
$dao->saved=false;
return true;
}

} // end class
?>
80 changes: 75 additions & 5 deletions core/models/cassandra/FolderpolicyuserModel.php
Expand Up @@ -20,11 +20,81 @@ public function getPolicy($user, $folder)
{
throw new Zend_Exception("Should be a folder.");
}
return $this->initDao('Folderpolicyuser',$this->database->fetchRow($this->database->select()
->where('folder_id = ?',$folder->getKey())
->where('user_id = ?',$user->getKey())
));
}

$folderid = $folder->getKey();
$userid = $user->getKey();

$folder = new ColumnFamily($this->database->getDB(), 'folder');
$column = 'user_'.$userid;
$folderarray = $this->database->getCassandra('folder',$folderid,array($column));

// Massage the data to the proper format
$newarray['folder_id'] = $folderid;
$newarray['user_id'] = $userid;
$newarray['policy'] = $folderarray[$column];

return $this->initDao('Folderpolicyuser',$newarray);
} // end getPolicy

/** Custom save command */
public function save($dao)
{
$instance=$this->_name."Dao";
if(!$dao instanceof $instance)
{
throw new Zend_Exception("Should be an object ($instance).");
}

try
{
$folderid = $dao->getFolderId();
$userid = $dao->getUserId();
$column = 'user_'.$userid;

$dataarray = array();
$dataarray[$column] = $dao->getPolicy();

$column_family = new ColumnFamily($this->database->getDB(),'folder');
$column_family->insert($folderid,$dataarray);
}
catch(Exception $e)
{
throw new Zend_Exception($e);
}

$dao->saved = true;
return true;
} // end save()

/** Custome delete command */
public function delete($dao)
{
$instance=ucfirst($this->_name)."Dao";
if(get_class($dao) != $instance)
{
throw new Zend_Exception("Should be an object ($instance). It was: ".get_class($dao) );
}
if(!$dao->saved)
{
throw new Zend_Exception("The dao should be saved first ...");
}

try
{
// Remove the column user from the folder
$folderid = $dao->getFolderId();
$userid = $dao->getUserId();
$column = 'user_'.$userid;
$cf = new ColumnFamily($this->database->getDB(),'folder');
$cf->remove($folderid,array($column));
}
catch(Exception $e)
{
throw new Zend_Exception($e);
}
$dao->saved=false;
return true;
}

} // end class
?>
10 changes: 2 additions & 8 deletions core/models/cassandra/GroupModel.php
Expand Up @@ -21,21 +21,15 @@ function addUser($group,$user)
throw new Zend_Exception("Should be an user.");
}

echo $group->getGroupId()."<br>";
echo $user->getUserId()."<br>";


$column_family = new ColumnFamily($this->database->getDB(), 'group');

$data = array();
$userarray = array();
$userarray[$user->getUserId()] = 1;
$data['users'] = $userarray;

$column_family->insert($group->getGroupId(),$data);

exit();


$column_family->insert($group->getGroupId(),$data);
} // end function addUser

} // end class
Expand Down
6 changes: 3 additions & 3 deletions library/MIDAS/models/GlobalDao.php
Expand Up @@ -53,10 +53,10 @@ public function initValues($key)
{
if(!isset($key))
{
throw new Zend_Exception("Model PDO " . $this->getModel()->_name . ": key is not defined here.");
throw new Zend_Exception("Model " . $this->getModel()->_name . ": key is not defined here.");
}
$values = $this->getModel()->getValues($key);
if ($values == NULL)
$values = $this->getModel()->getValues($key);
if ($values == null)
{
return false;
}
Expand Down

0 comments on commit b6b334d

Please sign in to comment.