Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3/**
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; under version 2
7 * of the License (non-upgradable).
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17 *
18 * Copyright (c) 2009-2012 (original work) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV);
19 *
20 *
21 */
22
23/**
24 * Short description of class core_kernel_persistence_ClassInterface
25 *
26 * @access public
27 * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
28 * @package generis
29
30 */
31interface core_kernel_persistence_ClassInterface extends core_kernel_persistence_ResourceInterface
32{
33    // --- OPERATIONS ---
34
35    /**
36     * Retrieve all subclass of the class
37     *
38     * @access public
39     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
40     * @param  core_kernel_classes_Class $resource
41     * @param  boolean recursive
42     * @return array
43     */
44    public function getSubClasses(core_kernel_classes_Class $resource, $recursive = false);
45
46    /**
47     *
48     * @access public
49     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
50     * @param core_kernel_classes_Class $resource
51     * @param core_kernel_classes_Class $iClass
52     * @return boolean
53     */
54    public function setSubClassOf(core_kernel_classes_Class $resource, core_kernel_classes_Class $iClass);
55
56
57    /**
58     * check if the resource is a subclass of given parentClass
59     *
60     * @access public
61     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
62     * @param  core_kernel_classes_Class resource
63     * @param  core_kernel_classes_Class parentClass
64     * @return boolean
65     */
66    public function isSubClassOf(core_kernel_classes_Class $resource, core_kernel_classes_Class $parentClass);
67
68    /**
69     * retrieve parent Classes
70     *
71     * @access public
72     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
73     * @param  core_kernel_classes_Class $resource
74     * @param  boolean recursive
75     * @return array
76     */
77    public function getParentClasses(core_kernel_classes_Class $resource, $recursive = false);
78
79    /**
80     * retrieve properties
81     *
82     * @access public
83     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
84     * @param  Resource $resource
85     * @param  boolean recursive
86     * @return array
87     */
88    public function getProperties(core_kernel_classes_Class $resource, $recursive = false);
89
90    /**
91     * retrieve all instances
92     *
93     * @access public
94     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
95     * @param  Resource $resource
96     * @param  boolean recursive
97     * @param  array params
98     * @return array
99     */
100    public function getInstances(core_kernel_classes_Class $resource, $recursive = false, $params = []);
101
102    /**
103     * Should not be called by application code, please use
104     * core_kernel_classes_ResourceFactory::create()
105     * or core_kernel_classes_Class::createInstanceWithProperties()
106     * instead
107     *
108     * Creates a new instance using the properties provided.
109     * May NOT contain additional types in the properties array
110     *
111     *
112     * @access public
113     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
114     * @param  Resource resource
115     * @param  string label
116     * @param  string comment
117     * @param  string uri
118     * @return core_kernel_classes_Resource
119     * @see core_kernel_classes_ResourceFactory
120     */
121    public function createInstance(core_kernel_classes_Class $resource, $label = '', $comment = '', $uri = '');
122
123    /**
124     * Short description of method createSubClass
125     *
126     * @access public
127     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
128     * @param  Resource resource
129     * @param  string label
130     * @param  string comment
131     * @param  string uri
132     * @return core_kernel_classes_Class
133     */
134    public function createSubClass(core_kernel_classes_Class $resource, $label = '', $comment = '', $uri = '');
135
136    /**
137     * Short description of method createProperty
138     *
139     * @access public
140     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
141     * @param  core_kernel_classes_Class $resource
142     * @param  string label
143     * @param  string comment
144     * @param  boolean isLgDependent
145     * @return core_kernel_classes_Property
146     */
147    public function createProperty(
148        core_kernel_classes_Class $resource,
149        $label = '',
150        $comment = '',
151        $isLgDependent = false
152    );
153
154    /**
155     * Short description of method searchInstances
156     *
157     * @access public
158     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
159     * @param  core_kernel_classes_Class $resource
160     * @param  array propertyFilters
161     * @param  array options
162     * @return array
163     */
164    public function searchInstances(core_kernel_classes_Class $resource, $propertyFilters = [], $options = []);
165
166    /**
167     * Short description of method countInstances
168     *
169     * @access public
170     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
171     * @param  core_kernel_classes_Class $resource
172     * @param  array propertyFilters
173     * @param  array options
174     * @return Integer
175     */
176    public function countInstances(core_kernel_classes_Class $resource, $propertyFilters = [], $options = []);
177
178    /**
179     * Short description of method getInstancesPropertyValues
180     *
181     * @access public
182     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
183     * @param  core_kernel_classes_Class $resource
184     * @param  Property property
185     * @param  array propertyFilters
186     * @param  array options
187     * @return array
188     */
189    public function getInstancesPropertyValues(
190        core_kernel_classes_Class $resource,
191        core_kernel_classes_Property $property,
192        $propertyFilters = [],
193        $options = []
194    );
195
196    /**
197     * Should not be called by application code, please use
198     * core_kernel_classes_ResourceFactory::create()
199     * or core_kernel_classes_Class::createInstanceWithProperties()
200     * instead
201     *
202     * Creates a new instance using the properties provided.
203     * May NOT contain additional types in the properties array
204     *
205     * @access public
206     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
207     * @param  core_kernel_classes_Class type
208     * @param  array properties
209     * @return core_kernel_classes_Resource
210     * @see core_kernel_classes_ResourceFactory
211     */
212    public function createInstanceWithProperties(core_kernel_classes_Class $type, $properties);
213
214    /**
215     * Delete a collection of instances of the Class.
216     *
217     * @access public
218     * @author Jerome Bogaerts, <jerome.bogaerts@tudor.lu>
219     * @param  Resource $resource The resource (class) on which to apply the deletion.
220     * @param  array resources An array containing core_kernel_classes_Resource objects or URIs.
221     * @param  boolean deleteReference If set to true, references to instances will be deleted accross the database.
222     * @return boolean
223     */
224    public function deleteInstances(core_kernel_classes_Class $resource, $resources, $deleteReference = false);
225
226    /**
227     * Changes class URI for all its properties and linked objects.
228     */
229    public function updateUri(core_kernel_classes_Class $resource, string $newUri): void;
230}