server/src/app/Libraries/RdfModel/RdfModelResource.php
author ymh <ymh.work@gmail.com>
Fri, 02 Dec 2016 00:22:31 +0100
changeset 454 710a2ae08a74
parent 277 bd4bc1db4f40
permissions -rw-r--r--
rework transcript component to correct various bugs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
namespace CorpusParole\Libraries\RdfModel;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
use CorpusParole\Libraries\RdfModel\RdfModelDelta;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
use EasyRdf\Resource;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
/**
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 *
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 */
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
class RdfModelResource extends Resource {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
    public function __construct($uri, $graph = null) {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
        parent::__construct($uri, $graph);
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
        $this->uri = $uri;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
    protected $deltaList = [];
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
    protected $currentDelta = null;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
    protected $uri = null;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
277
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    21
    protected function additionalDeltaLists() {
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    22
        return [];
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    23
    }
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    24
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    public function isDirty() {
277
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    26
        return $this->deltaCount()>0;
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    public function deltaCount() {
277
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    30
        $deltaList = $this->getDeltaList();
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    31
        return is_null($deltaList)?0:count($deltaList);
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    public function getDeltaList() {
277
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    35
        $deltaList = is_null($this->deltaList)?[]:$this->deltaList;
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    36
        $additionalDeltaLists = $this->additionalDeltaLists();
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    37
        if(!empty($additionalDeltaLists)) {
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    38
            array_unshift($additionalDeltaLists, $deltaList);
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    39
            $deltaList = call_user_func_array('array_merge', $additionalDeltaLists);
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    40
        }
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    41
        return $deltaList;
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
    public function getUri() {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
        return $this->uri;
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
28
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    48
    public function getCurrentDelta() {
277
bd4bc1db4f40 add blank node save and geoinfo to back model
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
    49
        return $this->currentDelta;
28
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    50
    }
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    51
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    public function startDelta() {
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
        $this->currentDelta = new RdfModelDelta($this->getGraph()->getUri());
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
        array_push($this->deltaList, $this->currentDelta);
28
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    55
        return $this->currentDelta;
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    56
    }
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    57
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    58
    protected function setSimpleProperty($baseNode, $property, $oldValue, $newValue) {
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    59
        $delta = $this->startDelta();
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    60
        $baseNode->delete($property, $oldValue);
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    61
        $delta->getDeletedGraph()->add($baseNode, $property, $oldValue);
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    62
        $baseNode->add($property, $newValue);
b0b56e0f8c7f Add contributor edition
ymh <ymh.work@gmail.com>
parents: 4
diff changeset
    63
        $delta->getAddedGraph()->add($baseNode, $property, $newValue);
4
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
    }
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
f55970e41793 first skeleton of bo client in ember
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
}