function refresh($json, $after = null, $before = null) { $trace = $this->TraceOrigin[0]; $this->name = $json["Name"]; $formule = $json["formule"]; $this->formule = $json["formule"]; $input = $json["input"]; $variable = array(); $transformation = $json["Transformation"]; // verification si la dernière transformation est faite ou non !! // si oui pas la peine de refaire toutes les transformation. avec KTBS les obsels se propagent !!!cool non ? // si non on fait les transformations. $s = sizeof($transformation) - 1; $tname = str_replace(' ', '_', $this->name . " {$s}"); $b = $trace->getBaseUri(); $trverif = new Trace($b . $tname); $c = $json["createdOn"]; $encode = true; if (!$trverif->exist()) { $encode = false; $k = 0; $models = array(); if ($transformation == null && $c == null) { $encode = false; goto notransformation; } if ($transformation == null && $c != null) { $encode = true; goto notransformation; } } else { $trace = $trverif; } notransformation: $this->ComputedTrace = $trace; $reponse = RestfulHelper::getInfo($trace->getUri()); while ($reponse == null) { sleep(2); $reponse = RestfulHelper::getInfo($trace->getUri()); } $values = array(); // $cond = array(); // if($after != null){ // $time = strtotime($after)*1000; // $cond[] = 'minb='.$time; // } // if($before != null){ // $time = strtotime($before)*1000; // $cond[] = 'maxb='.$time; // } // $times = implode('&', $cond); $Tcomp = new ComputedTrace($trace->getBaseUri(), 'time' . str_replace(' ', '_', $this->name)); if ($Tcomp->exist()) { $Tcomp->Delete(); } $Tcomp->config('filter', array($trace)); $Tcomp->setFilterParameter($after, $before); $Tcomp->filter(); $trace = new Trace($Tcomp->getUri()); foreach ($input as $key => $value) { $sparql = $value["operation"]; if ($encode == false) { $sparql = urlencode($sparql); } $URL = null; // if(strlen($times) == 0 ){ $URL = $trace->getUri() . "@obsels?query=" . $sparql; // } // else{ // $URL = $trace->getUri()."@obsels?".$times."&query=".$sparql; // } $r = RestfulHelper::httpInfo($URL); while ($r == "409") { sleep(1); $r = RestfulHelper::httpInfo($URL); } $reponse = RestfulHelper::getInfo($URL); $rep = json_decode($reponse, true); $res = $rep['results']; $resultat = $res['bindings']; $val = $resultat[0]; $keys = array_keys($val); $a = $val[$keys[0]]; $va = $a["value"]; if (gettype(intval($va)) != "integer") { $va = 0; } $values[$value['name']] = $va; } $f = $formule; foreach ($values as $key => $value) { $f = str_replace($key, $value, $f); } $m = new EvalMath(); $m->suppress_errors = true; $equation = explode("=", $f); $res = $m->evaluate($equation[1]); $Tcomp->Delete(); if ($res == false) { return array("var" => $equation[0], "val" => "ERROR : Time intervale caused an error"); } else { return array("var" => $equation[0], "val" => $res); } }
function bringTrace($trace, $model_uri) { /*This method allow to bring one trace and change it's model use : $Base->bringTrace(Trace_Object,uri_of_new_model); if you don't want to change the model $Base->bringTrace(Trace_Object,Trace_Object->getModel);*/ if (is_object($trace) && get_class($trace) == "Trace") { $Tr = new Trace($this->uri, $model_uri, "From_" . $trace->getBaseName() . "_" . $trace->getName()); $Tr->dump(); $t = $Tr->getUri(); $obs = $trace->getObsel(); RestfulHelper::json_post($t, json_encode($obs)); $Tr->setNewOrigin($trace->getOrigin()); $Tr->setNewModel($model_uri); } }