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

Commit

Permalink
ENH: Redesigned support for databases
Browse files Browse the repository at this point in the history
  • Loading branch information
Julien Jomier committed Mar 23, 2011
1 parent c0ea6ac commit c27681c
Show file tree
Hide file tree
Showing 54 changed files with 1,802 additions and 1,172 deletions.
3 changes: 2 additions & 1 deletion core/include.php
Expand Up @@ -4,7 +4,8 @@
require_once BASE_PATH.'/core/AppFilters.php';
require_once BASE_PATH.'/core/AppComponent.php';
require_once BASE_PATH.'/core/AppForm.php';
require_once BASE_PATH.'/core/models/AppModelPdo.php';
require_once BASE_PATH.'/core/models/AppDatabasePdo.php';
require_once BASE_PATH.'/core/models/AppDatabaseCassandra.php';
require_once BASE_PATH.'/core/models/AppDao.php';

//include constant files
Expand Down
11 changes: 11 additions & 0 deletions core/models/AppDatabaseCassandra.php
@@ -0,0 +1,11 @@
<?php

/**
* AppModelCassandra
* Global model methods
*/
class AppModelCassandra extends MIDASDatabaseCassandra
{

} // end class AppModelCassandra
?>
12 changes: 12 additions & 0 deletions core/models/AppDatabasePdo.php
@@ -0,0 +1,12 @@
<?php

/**
* GlobalModelPdo
* Global model methods
*/
class AppModelPdo extends MIDASDatabasePdo
{


}
?>
22 changes: 0 additions & 22 deletions core/models/AppModelPdo.php

This file was deleted.

11 changes: 11 additions & 0 deletions core/models/cassandra/CommunityModel.php
@@ -0,0 +1,11 @@
<?php
/**
* \class FeedModel
* \brief Cassandra Model
*/
class CommunityModel extends MIDASCommunityModel
{


} // end class CommunityModel
?>
11 changes: 11 additions & 0 deletions core/models/cassandra/FeedModel.php
@@ -0,0 +1,11 @@
<?php
/**
* \class FeedModel
* \brief Cassandra Model
*/
class FeedModel extends MIDASFeedModel
{


} // end class
?>
11 changes: 11 additions & 0 deletions core/models/cassandra/FeedpolicygroupModel.php
@@ -0,0 +1,11 @@
<?php
/**
* \class Feedpolicygroup
* \brief Cassandra Model
*/
class FeedpolicygroupModel extends MIDASFeedpolicygroupModel
{


} // end class
?>
11 changes: 11 additions & 0 deletions core/models/cassandra/FeedpolicyuserModel.php
@@ -0,0 +1,11 @@
<?php
/**
* \class Feedpolicyuser
* \brief Cassandra Model
*/
class FeedpolicyuserModel extends MIDASFeedpolicyuserModel
{


} // end class
?>
104 changes: 104 additions & 0 deletions core/models/cassandra/FolderModel.php
@@ -0,0 +1,104 @@
<?php
/**
* \class FolderModel
* \brief Cassandra Model
*/
class FolderModel extends MIDASFolderModel
{
/** Create a folder */
function createFolder($name,$description,$parent)
{
if(!$parent instanceof FolderDao&&!is_numeric($parent))
{
throw new Zend_Exception("Should be a folder.");
}
if(!is_string($name)||!is_string($description))
{
throw new Zend_Exception("Should be a string.");
}
$this->loadDaoClass('FolderDao');
$folder=new FolderDao();
$folder->setName($name);
$folder->setDescription($description);
$folder->setDate(date('c'));
if($parent instanceof FolderDao)
{
$parentId=$parent->getFolderId();
}
else
{
$parentId=$parent;
}
$folder->setParentId($parentId);
$this->save($folder);
return $folder;
}

/** Custom save function*/
public function save($folder)
{
if(!$folder instanceof FolderDao)
{
throw new Zend_Exception("Should be a folder.");
}
if($folder->getParentId()<=0)
{
$rightParent=0;
}
else
{
$parentFolder=$folder->getParent();
$rightParent=$parentFolder->getRightIndice();
}
$data = array();
foreach($this->_mainData as $key => $var)
{
if(isset($folder->$key))
{
$data[$key] = $folder->$key;
}
if($key=='right_indice')
{
$folder->$key=$rightParent+1;
$data[$key]=$rightParent+1;
}
if($key=='left_indice')
{
$data[$key]=$rightParent;
}
}

if(isset($data['folder_id']))
{
$key = $data['folder_id'];
unset($data['folder_id']);
unset($data['left_indice']);
unset($data['right_indice']);

$db = Zend_Registry::get('dbAdapter');
$column_family->insert($key,$data);
return $key;
}
else
{
/*$this->_db->update('folder', array('right_indice'=> new Zend_Db_Expr('2 + right_indice')),
array('right_indice >= ?'=>$rightParent));
$this->_db->update('folder', array('left_indice'=> new Zend_Db_Expr('2 + left_indice')),
array('left_indice >= ?'=>$rightParent));
$insertedid = $this->insert($data);
*/
$db = Zend_Registry::get('dbAdapter');
$column_family = new ColumnFamily($db, 'folder');

$uuid = CassandraUtil::uuid1();
$column_family->insert($uuid,$data);

$folder->folder_id = bin2hex($uuid);
$folder->saved=true;
return true;
}
} // end method save


} // end class FolderModel
?>
10 changes: 10 additions & 0 deletions core/models/cassandra/FolderpolicygroupModel.php
@@ -0,0 +1,10 @@
<?php
/**
* \class Folderpolicygroup
* \brief Cassandra Model
*/
class FolderpolicygroupModel extends MIDASFolderpolicygroupModel
{

} // end class
?>
10 changes: 10 additions & 0 deletions core/models/cassandra/FolderpolicyuserModel.php
@@ -0,0 +1,10 @@
<?php
/**
* \class Folderpolicyuser
* \brief Cassandra Model
*/
class FolderpolicyuserModel extends MIDASFolderpolicyuserModel
{

} // end class
?>
10 changes: 10 additions & 0 deletions core/models/cassandra/GroupModel.php
@@ -0,0 +1,10 @@
<?php
/**
* \class GroupModel
* \brief Cassandra Model
*/
class GroupModel extends MIDASGroupModel
{

} // end class
?>
24 changes: 1 addition & 23 deletions core/models/cassandra/ItemModel.php
Expand Up @@ -3,29 +3,7 @@
* \class ItemModel
* \brief Cassandra Model
*/
class ItemModel
class ItemModel extends MIDASItemModel
{
public $_name = 'item';
public $_key = 'item_id';

public $_mainData= array(
'item_id'=> array('type'=>MIDAS_DATA),
'name' => array('type'=>MIDAS_DATA),
'description' => array('type'=>MIDAS_DATA),
'type' => array('type'=>MIDAS_DATA),
'sizebytes'=>array('type'=>MIDAS_DATA),
'date'=>array('type'=>MIDAS_DATA),
'thumbnail'=>array('type'=>MIDAS_DATA),
'folders' => array('type'=>MIDAS_MANY_TO_MANY, 'model'=>'Folder', 'table' => 'item2folder', 'parent_column'=> 'item_id', 'child_column' => 'folder_id'),
'revisions' => array('type'=>MIDAS_ONE_TO_MANY, 'model'=>'ItemRevision', 'parent_column'=> 'item_id', 'child_column' => 'item_id'),
'keywords' => array('type'=>MIDAS_MANY_TO_MANY, 'model'=>'ItemKeyword', 'table' => 'item2keyword', 'parent_column'=> 'item_id', 'child_column' => 'keyword_id'),
);

/** Load function */
function load()
{


}
}
?>
33 changes: 33 additions & 0 deletions core/models/cassandra/UserModel.php
@@ -0,0 +1,33 @@
<?php
/**
* \class UserModel
* \brief Cassandra Model
*/
class UserModel extends MIDASUserModel
{
/** Get a user by email */
function getByEmail($email)
{
// We get from the table emailuser
try
{
$emailuser = new ColumnFamily($this->database->getDB(), 'emailuser');
$userid = $emailuser->get($email);

//$dao= $this->initDao('User',);
}
catch(cassandra_NotFoundException $e)
{
return false;
}
catch(Exception $e)
{
throw new Zend_Exception($e);
}

return $dao;
} // end getByEmail()


}
?>
11 changes: 1 addition & 10 deletions core/models/pdo/AssetstoreModel.php
Expand Up @@ -3,17 +3,8 @@
* \class AssetstoreModel
* \brief Pdo Model
*/
class AssetstoreModel extends AppModelPdo
class AssetstoreModel extends MIDASAssetstoreModel
{
public $_name = 'assetstore';
public $_key = 'assetstore_id';

public $_mainData= array(
'assetstore_id'=> array('type'=>MIDAS_DATA),
'name'=> array('type'=>MIDAS_DATA),
'path'=> array('type'=>MIDAS_DATA),
'type' => array('type'=>MIDAS_DATA),
);

} // end class
?>
25 changes: 2 additions & 23 deletions core/models/pdo/BitstreamModel.php
Expand Up @@ -3,36 +3,15 @@
* \class BitstreamModel
* \brief Pdo Model
*/
class BitstreamModel extends AppModelPdo
class BitstreamModel extends MIDASBitstreamModel
{
public $_name = 'bitstream';
public $_key = 'bitstream_id';

public $_components = array();

public $_mainData= array(
'bitstream_id'=> array('type'=>MIDAS_DATA),
'itemrevision_id'=> array('type'=>MIDAS_DATA),
'assetstore_id'=> array('type'=>MIDAS_DATA),
'name' => array('type'=>MIDAS_DATA),
'mimetype' => array('type'=>MIDAS_DATA),
'sizebytes' => array('type'=>MIDAS_DATA),
'checksum' => array('type'=>MIDAS_DATA),
'path' => array('type'=>MIDAS_DATA),
'assetstore_id' => array('type'=>MIDAS_DATA),
'date' => array('type'=>MIDAS_DATA),
//'itemrevision' => array('type'=>MIDAS_ONE_TO_MANY, 'model' => 'ItemRevision', 'parent_column'=> 'itemrevision_id', 'child_column' => 'itemrevision_id'),
'assetstore' => array('type'=>MIDAS_ONE_TO_MANY, 'model' => 'Assetstore', 'parent_column'=> 'assetstore_id', 'child_column' => 'assetstore_id'),
);


/** do not use, use method addBitstream in ItemRevision Model*/
public function save($dao)
{
$stack=debug_backtrace();
if($stack[1]['class']=="ItemRevisionModel"&&$stack[1]['function']=='addBitstream')
{
return parent::save($dao);
return $this->database->save($dao);
}
throw new Zend_Exception(" Do not use, use method addBitstream in ItemRevision Model.");
}//end Save
Expand Down

0 comments on commit c27681c

Please sign in to comment.