Adding validation before update a gateway, it only is updated if its data has been changed

This commit is contained in:
Erik Amaru Ortiz
2014-02-20 17:04:25 -04:00
parent cad5fcfd80
commit f62956ae76
4 changed files with 18 additions and 11 deletions

View File

@@ -327,8 +327,6 @@ class BpmnWorkflow extends Project\Bpmn
break;
case 'bpmnEvent':
$evnUid = $flow['FLO_ELEMENT_DEST'];
self::log('=======++++++++=========>', $evnUid, "EVN_UID", $events);
$events = self::findInArray($evnUid, "EVN_UID", $events);

View File

@@ -64,6 +64,9 @@ class Bpmn extends Handler
"PRJ_UID", "PRO_UID", "BOU_ELEMENT", "BOU_ELEMENT_TYPE", "BOU_REL_POSITION",
"BOU_SIZE_IDENTICAL", "DIA_UID", "BOU_UID", "ELEMENT_UID", "EVN_ATTACHED_TO", "EVN_CONDITION"
),
"gateway" => array("BOU_ELEMENT", "BOU_ELEMENT_TYPE", "BOU_REL_POSITION", "BOU_SIZE_IDENTICAL", "BOU_UID",
"DIA_UID", "ELEMENT_UID", "PRJ_UID", "PRO_UID"
),
"flow" => array("PRJ_UID", "DIA_UID", "FLO_ELEMENT_DEST_PORT", "FLO_ELEMENT_ORIGIN_PORT")
);
@@ -468,6 +471,7 @@ class Bpmn extends Handler
if ($retType != "object" && ! empty($gateway)) {
$gateway = $gateway->toArray();
$gateway = self::filterArrayKeys($gateway, self::$excludeFields["gateway"]);
}
return $gateway;
@@ -479,7 +483,13 @@ class Bpmn extends Handler
extract($start);
}
return Gateway::getAll($this->getUid(), $start, $limit, $filter, $changeCaseTo);
//return Gateway::getAll($this->getUid(), $start, $limit, $filter, $changeCaseTo);
$filter = $changeCaseTo != CASE_UPPER ? array_map("strtolower", self::$excludeFields["gateway"]) : self::$excludeFields["gateway"];
return self::filterCollectionArrayKeys(
Gateway::getAll($this->getUid(), $start, $limit, $filter, $changeCaseTo),
$filter
);
}
public function removeGateway($gatUid)

View File

@@ -92,11 +92,8 @@ abstract class Handler
public static function isEquals($array, $arrayCompare)
{
ksort($array);
ksort($arrayCompare);
//self::log("ONE: ", $array, "TWO: ", $arrayCompare);
//$ret = array_diff_assoc("ONE: ", $array, "TWO: ", $arrayCompare);
return (self::getChecksum($array) === self::getChecksum($arrayCompare));
}

View File

@@ -148,16 +148,18 @@ class Project extends Api
$whiteList = array();
foreach ($diagram["gateways"] as $i => $gatewayData) {
$gatewayData = array_change_key_case($gatewayData, CASE_UPPER);
unset($gatewayData["_EXTENDED"]);
if ($gateway = $bwp->getGateway($gatewayData["GAT_UID"])) {
$bwp->updateGateway($gatewayData["GAT_UID"], $gatewayData);
} else {
$gateway = $bwp->getGateway($gatewayData["GAT_UID"]);
if (is_null($gateway)) {
$oldActUid = $gatewayData["GAT_UID"];
$gatewayData["GAT_UID"] = Util\Hash::generateUID();
$bwp->addGateway($gatewayData);
$result[] = array("object" => "gateway", "new_uid" => $gatewayData["GAT_UID"], "old_uid" => $oldActUid);
} elseif (! $bwp->isEquals($gateway, $gatewayData)) {
$bwp->updateGateway($gatewayData["GAT_UID"], $gatewayData);
} else {
Util\Logger::log("Update Gateway ({$gatewayData["GAT_UID"]}) Skipped - No changes required");
}
$diagram["gateways"][$i] = $gatewayData;