Commit for PUT /project/{prj_uid}, 2nd commit, still not functional

This commit is contained in:
Erik Amaru Ortiz
2014-01-17 13:37:15 -04:00
parent 67a11c6b17
commit c295187c3a
6 changed files with 241 additions and 19 deletions

View File

@@ -16,6 +16,17 @@ require_once 'classes/model/om/BaseBpmnActivity.php';
*/
class BpmnActivity extends BaseBpmnActivity
{
private $bound;
public function __construct($generateUid = true)
{
$this->bound = new BpmnBound();
$this->bound->setBouElementType(lcfirst(str_replace(__NAMESPACE__, '', __CLASS__)));
$this->bound->setBouElement('pm_canvas');
$this->bound->setBouContainer('bpmnDiagram');
}
/* DEPRECATED, IT WILL BE REMOVED SOON
public function create($data, $generateUid = true)
{
// validate foreign keys, they must be present into data array
@@ -48,16 +59,46 @@ class BpmnActivity extends BaseBpmnActivity
$bound->setBouElement('pm_canvas');
$bound->setBouContainer('bpmnDiagram');
$bound->save();
}
}*/
public function update($data)
// OVERRIDES
public function fromArray($data)
{
$this->fromArray($data, BasePeer::TYPE_FIELDNAME);
$this->save();
parent::fromArray($data, BasePeer::TYPE_FIELDNAME);
// update related bound
$bound = BpmnBound::findOneBy(BpmnBoundPeer::ELEMENT_UID, $this->getActUid());
$bound->fromArray($data, BasePeer::TYPE_FIELDNAME);
$bound->save();
// try resolve the related bound
if (array_key_exists('BOU_UID', $data)) {
//$bound = BpmnBound::findByElement('Activity', $this->getActUid());
$bound = BpmnBoundPeer::retrieveByPK($data['BOU_UID']);
if (is_object($bound)) {
$this->bound = $bound;
}
}
$this->bound->fromArray($data, BasePeer::TYPE_FIELDNAME);
}
public function save($con = null)
{
parent::save($con);
if (is_object($this->bound) && get_class($this->bound) == 'BpmnBound') {
$this->bound->save($con);
}
}
public function toArray($keyType = BasePeer::TYPE_PHPNAME)
{
$data = parent::toArray($keyType);
if (is_object($this->bound) && get_class($this->bound) == 'BpmnBound') {
$data = array_merge($data, $this->bound->toArray($keyType));
}
return $data;
}
} // BpmnActivity

View File

@@ -28,4 +28,15 @@ class BpmnBound extends BaseBpmnBound
return $rs->getRow();
}
public static function findByElement($type, $uid)
{
$bouElementType = 'bpmn' . ucfirst(strtolower($type));
$c = new Criteria('workflow');
$c->add(BpmnBoundPeer::ELEMENT_UID, $uid, CRITERIA::EQUAL);
$c->add(BpmnBoundPeer::BOU_ELEMENT_TYPE, $bouElementType, CRITERIA::EQUAL);
return BpmnBoundPeer::doSelectOne($c);
}
} // BpmnBound

View File

@@ -14,6 +14,54 @@ require_once 'classes/model/om/BaseBpmnEvent.php';
*
* @package classes.model
*/
class BpmnEvent extends BaseBpmnEvent {
class BpmnEvent extends BaseBpmnEvent
{
private $bound;
public function __construct($generateUid = true)
{
$this->bound = new BpmnBound();
$this->bound->setBouElementType(lcfirst(str_replace(__NAMESPACE__, '', __CLASS__)));
$this->bound->setBouElement('pm_canvas');
$this->bound->setBouContainer('bpmnDiagram');
}
// OVERRIDES
public function fromArray($data)
{
parent::fromArray($data, BasePeer::TYPE_FIELDNAME);
// try resolve the related bound
if (array_key_exists('BOU_UID', $data)) {
$bound = BpmnBoundPeer::retrieveByPK($data['BOU_UID']);
if (is_object($bound)) {
$this->bound = $bound;
}
}
$this->bound->fromArray($data, BasePeer::TYPE_FIELDNAME);
}
public function save($con = null)
{
parent::save($con);
if (is_object($this->bound) && get_class($this->bound) == 'BpmnBound') {
$this->bound->save($con);
}
}
public function toArray($keyType = BasePeer::TYPE_PHPNAME)
{
$data = parent::toArray($keyType);
if (is_object($this->bound) && get_class($this->bound) == 'BpmnBound') {
$data = array_merge($data, $this->bound->toArray($keyType));
}
return $data;
}
} // BpmnEvent

View File

@@ -14,6 +14,54 @@ require_once 'classes/model/om/BaseBpmnGateway.php';
*
* @package classes.model
*/
class BpmnGateway extends BaseBpmnGateway {
class BpmnGateway extends BaseBpmnGateway
{
private $bound;
public function __construct($generateUid = true)
{
$this->bound = new BpmnBound();
$this->bound->setBouElementType(lcfirst(str_replace(__NAMESPACE__, '', __CLASS__)));
$this->bound->setBouElement('pm_canvas');
$this->bound->setBouContainer('bpmnDiagram');
}
// OVERRIDES
public function fromArray($data)
{
parent::fromArray($data, BasePeer::TYPE_FIELDNAME);
// try resolve the related bound
if (array_key_exists('BOU_UID', $data)) {
$bound = BpmnBoundPeer::retrieveByPK($data['BOU_UID']);
if (is_object($bound)) {
$this->bound = $bound;
}
}
$this->bound->fromArray($data, BasePeer::TYPE_FIELDNAME);
}
public function save($con = null)
{
parent::save($con);
if (is_object($this->bound) && get_class($this->bound) == 'BpmnBound') {
$this->bound->save($con);
}
}
public function toArray($keyType = BasePeer::TYPE_PHPNAME)
{
$data = parent::toArray($keyType);
if (is_object($this->bound) && get_class($this->bound) == 'BpmnBound') {
$data = array_merge($data, $this->bound->toArray($keyType));
}
return $data;
}
} // BpmnGateway

View File

@@ -100,7 +100,7 @@ class Model
*/
$lanesets = array_key_exists('laneset', $diagramData) ? $diagramData['laneset'] : array();
$lanes = array_key_exists('lane', $diagramData) ? $diagramData['lanes'] : array();
$lanes = array_key_exists('lanes', $diagramData) ? $diagramData['lanes'] : array();
$activities = array_key_exists('activities', $diagramData) ? $diagramData['activities'] : array();
$events = array_key_exists('events', $diagramData) ? $diagramData['events'] : array();
$gateways = array_key_exists('gateways', $diagramData) ? $diagramData['gateways'] : array();
@@ -345,7 +345,7 @@ class Model
$project = array_change_key_case($project);
$project['diagrams'] = array($diagram);
$project['diagrams'][0]['lanesets'] = $lanesets;
$project['diagrams'][0]['laneset'] = $lanesets;
$project['diagrams'][0]['lanes'] = $lanes;
$project['diagrams'][0]['activities'] = $activities;
$project['diagrams'][0]['events'] = $events;
@@ -370,13 +370,19 @@ class Model
public static function updateProject($prjUid, $projectUpdated)
{
echo 'PRJ_UID ->: ' . $prjUid . PHP_EOL;
$project = ProjectPeer::retrieveByPK($prjUid);
$project->setPrjName($projectUpdated['prj_name']);
$project->setPrjUpdateDate(date("Y-m-d H:i:s"));
$project->save();
//print_r($project->toArray());
$diagramData = $projectUpdated['diagrams'][0];
//print_r($diagramData); die;
$diagram = DiagramPeer::retrieveByPK($diagramData['dia_uid']);
$diagram->setDiaName($diagramData['dia_name']);
@@ -386,9 +392,14 @@ class Model
$diagram->save();
$processData = self::getBpmnObjectBy('Process', ProcessPeer::PRJ_UID, $prjUid);
$processData = self::getBpmnObjectBy('Process', ProcessPeer::PRJ_UID, $prjUid, true);
//print_r($processData); die;
$process = ProcessPeer::retrieveByPK($processData['pro_uid']);
//print_r($process); die;
$process->setProName($process->getProName());
$process->save();
@@ -400,16 +411,77 @@ class Model
public static function updateDiagram($diff)
{
return false;
echo 'DIFF'.PHP_EOL; print_r($diff);
//return false;
$mapId = array();
// updating objects
foreach ($diff['updated'] as $element => $items) {
foreach ($items as $data) {
$data = array_change_key_case((array) $data, CASE_UPPER);
//print_r($data); die;
// the calls in switch sentence are setting and saving the related BpmnBound objects too,
// because methods: save(), fromArray(), toArray() are beautifully extended
// of Activity, Event and Gateway classes ;) atte. @erik
switch ($element) {
case 'laneset':
break;
case 'lanes':
break;
case 'activities':
$activity = ActivityPeer::retrieveByPk($data['ACT_UID']);
$activity->fromArray($data);
$activity->save();
break;
case 'events':
$event = EventPeer::retrieveByPk($data['EVN_UID']);
$event->fromArray($data);
$event->save();
break;
case 'gateways':
$gateway = GatewayPeer::retrieveByPk($data['GAT_UID']);
$gateway->fromArray($data);
$gateway->save();
break;
case 'flows':
break;
case 'artifacts':
break;
}
}
}
die;
// Creating new objects
foreach ($diff['new'] as $element => $items) {
foreach ($items as $data) {
print_r($data); die;
switch ($element) {
case 'activities':
$data = array_change_key_case((array) $data, CASE_UPPER);
$activity = new Activity();
$activity->create($data);
case 'laneset':
$lanesetData = array_change_key_case((array) $data, CASE_UPPER);
$laneset = new Laneset();
$laneset->fromArray($lanesetData, BasePeer::TYPE_FIELDNAME);
$laneset->setLnsUid(Hash::generateUID());
$laneset->setPrjUid($prjUid);
$laneset->setProUid($proUid);
$laneset->save();
$lnsUid = $laneset->getLnsUid();
$oldLnsUid = $lanesetData['LNS_UID'];
$uids[] = array('old_uid' => $oldLnsUid, 'new_uid' => $lnsUid, 'object' => 'laneset');
$mapId['laneset'][$oldLnsUid] = $lnsUid;
break;
}
}
@@ -467,9 +539,10 @@ class Model
$checksum[$element] = self::getArrayChecksum($savedProject['diagrams'][0][$element], $key);
}
foreach ($diagramElements as $key => $element) {
foreach ($updatedProject['diagrams'][0][$element] as $item) {
if (in_array($item[$key], $newRecords[$element]) || in_array($item[$key], $deletedRecords[$element])) {
if (array_key_exists($element, $newRecords) && (in_array($item[$key], $newRecords[$element]) || in_array($item[$key], $deletedRecords[$element]))) {
// skip new or deleted records
continue;
}

View File

@@ -63,6 +63,7 @@ class Project extends Api
function put($prjUid, $request_data)
{
try {
$project = BpmnModel::updateProject($prjUid, $request_data);
return $project;