Entpoint /project: enabling new/update/delete diagram's activities for PUT method

This commit is contained in:
Erik Amaru Ortiz
2014-02-06 12:10:35 -04:00
parent 187ad19c84
commit e19d1b2033
3 changed files with 64 additions and 17 deletions

View File

@@ -210,14 +210,23 @@ class Bpmn extends Handler
throw new \Exception(sprintf("Error: There is not an initialized diagram for Project with prj_uid: %s.", $this->getUid()));
}
// setting defaults
$data['ACT_UID'] = array_key_exists('ACT_UID', $data) ? $data['ACT_UID'] : Hash::generateUID();;
try {
self::log("Add Activity with data: ", $data);
$activity = new Activity();
$activity->fromArray($data);
$activity->setPrjUid($this->getUid());
$activity->setProUid($process->getProUid());
$activity->save();
// setting defaults
$data['ACT_UID'] = array_key_exists('ACT_UID', $data) ? $data['ACT_UID'] : Hash::generateUID();;
$activity = new Activity();
$activity->fromArray($data);
$activity->setPrjUid($this->getUid());
$activity->setProUid($process->getProUid());
$activity->save();
self::log("Add Activity Success!");
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
return $activity->getActUid();
}
@@ -244,20 +253,38 @@ class Bpmn extends Handler
public function updateActivity($actUid, $data)
{
$activity = ActivityPeer::retrieveByPk($actUid);
try {
self::log("Update Activity: $actUid", "With data: ", $data);
// fixing data
//$data['ELEMENT_UID'] = $data['BOU_ELEMENT_UID'];
//unset($data['BOU_ELEMENT_UID']);
$activity = ActivityPeer::retrieveByPk($actUid);
$activity->fromArray($data);
$activity->save();
// fixing data
//$data['ELEMENT_UID'] = $data['BOU_ELEMENT_UID'];
//unset($data['BOU_ELEMENT_UID']);
$activity->fromArray($data);
$activity->save();
self::log("Update Activity Success!");
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
public function removeActivity($actUid)
{
$activity = ActivityPeer::retrieveByPK($actUid);
$activity->delete();
try {
self::log("Remove Activity: $actUid");
$activity = ActivityPeer::retrieveByPK($actUid);
$activity->delete();
self::log("Remove Activity Success!");
} catch (\Exception $e) {
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
throw $e;
}
}
public function addEvent($data)

View File

@@ -48,7 +48,7 @@ abstract class Handler
*/
public static function log()
{
if (System::isDebugMode()) {
if (\System::isDebugMode()) {
$me = Logger::getInstance();
$args = func_get_args();

View File

@@ -105,6 +105,16 @@ class Project extends Api
$result = array();
$diagramElements = array(
'activities' => 'act_uid',
'events' => 'evn_uid',
'flows' => 'flo_uid',
'artifacts' => 'art_uid',
'laneset' => 'lns_uid',
'lanes' => 'lan_uid'
);
$whiteList = array();
foreach ($diagram["activities"] as $activityData) {
$activityData = array_change_key_case($activityData, CASE_UPPER);
@@ -112,6 +122,8 @@ class Project extends Api
if ($activity = $bwp->getActivity($activityData["ACT_UID"])) {
// then update activity
$bwp->updateActivity($activityData["ACT_UID"], $activityData);
$whiteList[] = $activityData["ACT_UID"];
} else {
// if not exists then create it
$oldActUid = $activityData["ACT_UID"];
@@ -120,11 +132,19 @@ class Project extends Api
$bwp->addActivity($activityData);
$result[] = array("object" => "activity", "new_uid" => $actUid, "old_uid" => $oldActUid);
$whiteList[] = $actUid;
}
}
//$result = BpmnModel::updateProject($prjUid, $request_data);
$activities = $bwp->getActivities();
// looking for removed elements
foreach ($activities as $activityData) {
if (! in_array($activityData["ACT_UID"], $whiteList)) {
// If it is not in the white list so, then remove them
$bwp->removeActivity($activityData["ACT_UID"]);
}
}
return $result;
} catch (\Exception $e) {