Source for file Hierarchy.php

Documentation is available at Hierarchy.php

  1. <?php
  2. /**
  3. * Hierarchy is a structure composed of nodes arranged in root, parent, and
  4. * child form. The Hierarchy can be traversed in several ways to determine
  5. * the arrangement of nodes. A Hierarchy can allow multiple parents. A
  6. * Hierarchy can allow recursion. The implementation is responsible for
  7. * ensuring that the integrity of the Hierarchy is always maintained.
  8. *
  9. * <p>
  10. * OSID Version: 2.0
  11. * </p>
  12. *
  13. * <p>
  14. * Licensed under the {@link org.osid.SidImplementationLicenseMIT MIT}
  15. * O.K.I&#46; OSID Definition License}.
  16. * </p>
  17. *
  18. * @package org.osid.hierarchy
  19. */
  20. class Hierarchy
  21. {
  22. /**
  23. * Constant indicating depth-first traversal.
  24. * Note: This method is PHP's equivalent of a static field.
  25. *
  26. * @return int
  27. * @access public
  28. * @static
  29. */
  30. function TRAVERSE_MODE_DEPTH_FIRST () {
  31. return 223;
  32. }
  33.  
  34. /**
  35. * Constant indicating breadth-first traversal.
  36. * Note: This method is PHP's equivalent of a static field.
  37. *
  38. * @return int
  39. * @access public
  40. * @static
  41. */
  42. function TRAVERSE_MODE_BREADTH_FIRST () {
  43. return 191;
  44. }
  45.  
  46. /**
  47. * Constant indicating traversal up the Hierarchy, or traversal of parents.
  48. * Note: This method is PHP's equivalent of a static field.
  49. *
  50. * @return int
  51. * @access public
  52. * @static
  53. */
  54. function TRAVERSE_DIRECTION_UP () {
  55. return 1;
  56. }
  57.  
  58. /**
  59. * Constant indicating traversal down the Hierarchy, or traversal of
  60. * children.
  61. * Note: This method is PHP's equivalent of a static field.
  62. *
  63. * @return int
  64. * @access public
  65. * @static
  66. */
  67. function TRAVERSE_DIRECTION_DOWN () {
  68. return 2;
  69. }
  70.  
  71. /**
  72. * Constant indicating no limit on the depth of traversal.
  73. * Note: This method is PHP's equivalent of a static field.
  74. *
  75. * @return int
  76. * @access public
  77. * @static
  78. */
  79. function TRAVERSE_LEVELS_ALL () {
  80. return -1;
  81. }
  82.  
  83. /**
  84. * Get the unique Id for this Hierarchy.
  85. *
  86. * @return object Id
  87. *
  88. * @throws object HierarchyException An exception with one of
  89. * the following messages defined in
  90. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  91. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  92. * OPERATION_FAILED}, {@link }
  93. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  94. * PERMISSION_DENIED}, {@link }
  95. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  96. * CONFIGURATION_ERROR}, {@link }
  97. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  98. * UNIMPLEMENTED}
  99. *
  100. * @access public
  101. */
  102. function getId () {
  103. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  104. }
  105.  
  106. /**
  107. * Get the display name for this Hierarchy.
  108. *
  109. * @return string
  110. *
  111. * @throws object HierarchyException An exception with one of
  112. * the following messages defined in
  113. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  114. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  115. * OPERATION_FAILED}, {@link }
  116. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  117. * PERMISSION_DENIED}, {@link }
  118. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  119. * CONFIGURATION_ERROR}, {@link }
  120. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  121. * UNIMPLEMENTED}
  122. *
  123. * @access public
  124. */
  125. function getDisplayName () {
  126. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  127. }
  128.  
  129. /**
  130. * Update the display name for this Hierarchy.
  131. *
  132. * @param string $displayName
  133. *
  134. * @throws object HierarchyException An exception with one of
  135. * the following messages defined in
  136. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  137. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  138. * OPERATION_FAILED}, {@link }
  139. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  140. * PERMISSION_DENIED}, {@link }
  141. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  142. * CONFIGURATION_ERROR}, {@link }
  143. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  144. * UNIMPLEMENTED}
  145. *
  146. * @access public
  147. */
  148. function updateDisplayName ( $displayName ) {
  149. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  150. }
  151.  
  152. /**
  153. * Get the description for this Hierarchy.
  154. *
  155. * @return string
  156. *
  157. * @throws object HierarchyException An exception with one of
  158. * the following messages defined in
  159. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  160. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  161. * OPERATION_FAILED}, {@link }
  162. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  163. * PERMISSION_DENIED}, {@link }
  164. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  165. * CONFIGURATION_ERROR}, {@link }
  166. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  167. * UNIMPLEMENTED}
  168. *
  169. * @access public
  170. */
  171. function getDescription () {
  172. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  173. }
  174.  
  175. /**
  176. * Update the description for this Hierarchy.
  177. *
  178. * @param string $description
  179. *
  180. * @throws object HierarchyException An exception with one of
  181. * the following messages defined in
  182. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  183. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  184. * OPERATION_FAILED}, {@link }
  185. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  186. * PERMISSION_DENIED}, {@link }
  187. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  188. * CONFIGURATION_ERROR}, {@link }
  189. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  190. * UNIMPLEMENTED}, {@link }
  191. * org.osid.hierarchy.HierarchyException#NULL_ARGUMENT
  192. * NULL_ARGUMENT}
  193. *
  194. * @access public
  195. */
  196. function updateDescription ( $description ) {
  197. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  198. }
  199.  
  200. /**
  201. * Create a root Node. The Node is created with the specified unique Id,
  202. * and, unlike Nodes created with createNode, initially has no parents or
  203. * children.
  204. *
  205. * @param object Id $nodeId
  206. * @param object Type $nodeType
  207. * @param string $displayName
  208. * @param string $description
  209. *
  210. * @return object Node
  211. *
  212. * @throws object HierarchyException An exception with one of
  213. * the following messages defined in
  214. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  215. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  216. * OPERATION_FAILED}, {@link }
  217. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  218. * PERMISSION_DENIED}, {@link }
  219. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  220. * CONFIGURATION_ERROR}, {@link }
  221. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  222. * UNIMPLEMENTED}{@link }
  223. * org.osid.hierarchy.HierarchyException#NULL_ARGUMENT
  224. * NULL_ARGUMENT}, {@link }
  225. * org.osid.hierarchy.HierarchyException#SINGLE_PARENT_HIERARCHY
  226. * SINGLE_PARENT_HIERARCHY}
  227. *
  228. * @access public
  229. */
  230. function createRootNode ( $nodeId, $nodeType, $displayName, $description ) {
  231. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  232. }
  233.  
  234. /**
  235. * Create a Node. The Node is created with the specified unique Id and
  236. * initially has only the specified parent.
  237. *
  238. * @param object Id $nodeId
  239. * @param object Id $parentId
  240. * @param object Type $type
  241. * @param string $displayName
  242. * @param string $description
  243. *
  244. * @return object Node
  245. *
  246. * @throws object HierarchyException An exception with one of
  247. * the following messages defined in
  248. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  249. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  250. * OPERATION_FAILED}, {@link }
  251. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  252. * PERMISSION_DENIED}, {@link }
  253. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  254. * CONFIGURATION_ERROR}, {@link }
  255. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  256. * UNIMPLEMENTED}, {@link }
  257. * org.osid.hierarchy.HierarchyException#NULL_ARGUMENT
  258. * NULL_ARGUMENT}, {@link }
  259. * org.osid.hierarchy.HierarchyException#UNKNOWN_PARENT_NODE
  260. * UNKNOWN_PARENT_NODE}, {@link }
  261. * org.osid.hierarchy.HierarchyException#ATTEMPTED_RECURSION
  262. * ATTEMPTED_RECURSION}
  263. *
  264. * @access public
  265. */
  266. function createNode ( $nodeId, $parentId, $type, $displayName, $description ) {
  267. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  268. }
  269.  
  270. /**
  271. * Delete a Node by Id. Only leaf Nodes can be deleted.
  272. *
  273. * @param object Id $nodeId
  274. *
  275. * @throws object HierarchyException An exception with one of
  276. * the following messages defined in
  277. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  278. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  279. * OPERATION_FAILED}, {@link }
  280. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  281. * PERMISSION_DENIED}, {@link }
  282. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  283. * CONFIGURATION_ERROR}, {@link }
  284. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  285. * UNIMPLEMENTED}, {@link }
  286. * org.osid.hierarchy.HierarchyException#NULL_ARGUMENT
  287. * NULL_ARGUMENT}, {@link }
  288. * org.osid.hierarchy.HierarchyException#NODE_TYPE_NOT_FOUND
  289. * NODE_TYPE_NOT_FOUND}, {@link }
  290. * org.osid.hierarchy.HierarchyException#INCONSISTENT_STATE
  291. * INCONSISTENT_STATE}
  292. *
  293. * @access public
  294. */
  295. function deleteNode ( $nodeId ) {
  296. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  297. }
  298.  
  299. /**
  300. * Add a NodeType to this Hierarchy.
  301. *
  302. * @param object Type $type
  303. *
  304. * @throws object HierarchyException An exception with one of
  305. * the following messages defined in
  306. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  307. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  308. * OPERATION_FAILED}, {@link }
  309. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  310. * PERMISSION_DENIED}, {@link }
  311. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  312. * CONFIGURATION_ERROR}, {@link }
  313. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  314. * UNIMPLEMENTED}, {@link }
  315. * org.osid.hierarchy.HierarchyException#NULL_ARGUMENT
  316. * NULL_ARGUMENT}, {@link }
  317. * org.osid.hierarchy.HierarchyException#ALREADY_ADDED
  318. * ALREADY_ADDED}
  319. *
  320. * @access public
  321. */
  322. function addNodeType ( $type ) {
  323. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  324. }
  325.  
  326. /**
  327. * Remove a NodeType from this Hierarchy. Note that no Nodes can have this
  328. * NodeType.
  329. *
  330. * @param object Type $type
  331. *
  332. * @throws object HierarchyException An exception with one of
  333. * the following messages defined in
  334. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  335. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  336. * OPERATION_FAILED}, {@link }
  337. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  338. * PERMISSION_DENIED}, {@link }
  339. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  340. * CONFIGURATION_ERROR}, {@link }
  341. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  342. * UNIMPLEMENTED}, {@link }
  343. * org.osid.hierarchy.HierarchyException#NULL_ARGUMENT
  344. * NULL_ARGUMENT}, {@link }
  345. * org.osid.hierarchy.HierarchyException#NODE_TYPE_IN_USE
  346. * NODE_TYPE_IN_USE}, {@link }
  347. * org.osid.hierarchy.HierarchyException#NODE_TYPE_NOT_FOUND
  348. * NODE_TYPE_NOT_FOUND}
  349. *
  350. * @access public
  351. */
  352. function removeNodeType ( $type ) {
  353. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  354. }
  355.  
  356. /**
  357. * Get all the Nodes in this Hierarchy.
  358. *
  359. * @return object NodeIterator
  360. *
  361. * @throws object HierarchyException An exception with one of
  362. * the following messages defined in
  363. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  364. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  365. * OPERATION_FAILED}, {@link }
  366. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  367. * PERMISSION_DENIED}, {@link }
  368. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  369. * CONFIGURATION_ERROR}, {@link }
  370. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  371. * UNIMPLEMENTED}
  372. *
  373. * @access public
  374. */
  375. function getAllNodes () {
  376. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  377. }
  378.  
  379. /**
  380. * Get the root Nodes in this Hierarchy.
  381. *
  382. * @return object NodeIterator
  383. *
  384. * @throws object HierarchyException An exception with one of
  385. * the following messages defined in
  386. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  387. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  388. * OPERATION_FAILED}, {@link }
  389. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  390. * PERMISSION_DENIED}, {@link }
  391. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  392. * CONFIGURATION_ERROR}, {@link }
  393. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  394. * UNIMPLEMENTED}
  395. *
  396. * @access public
  397. */
  398. function getRootNodes () {
  399. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  400. }
  401.  
  402. /**
  403. * Get a Node by unique Id.
  404. *
  405. * @param object Id $nodeId
  406. *
  407. * @return object Node
  408. *
  409. * @throws object HierarchyException An exception with one of
  410. * the following messages defined in
  411. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  412. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  413. * OPERATION_FAILED}, {@link }
  414. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  415. * PERMISSION_DENIED}, {@link }
  416. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  417. * CONFIGURATION_ERROR}, {@link }
  418. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  419. * UNIMPLEMENTED}, {@link }
  420. * org.osid.hierarchy.HierarchyException#NULL_ARGUMENT
  421. * NULL_ARGUMENT}, {@link }
  422. * org.osid.hierarchy.HierarchyException#NODE_TYPE_NOT_FOUND
  423. * NODE_TYPE_NOT_FOUND}
  424. *
  425. * @access public
  426. */
  427. function getNode ( $nodeId ) {
  428. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  429. }
  430.  
  431. /**
  432. * Get all NodeTypes used in this Hierarchy.
  433. *
  434. * @return object TypeIterator
  435. *
  436. * @throws object HierarchyException An exception with one of
  437. * the following messages defined in
  438. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  439. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  440. * OPERATION_FAILED}, {@link }
  441. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  442. * PERMISSION_DENIED}, {@link }
  443. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  444. * CONFIGURATION_ERROR}, {@link }
  445. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  446. * UNIMPLEMENTED}
  447. *
  448. * @access public
  449. */
  450. function getNodeTypes () {
  451. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  452. }
  453.  
  454. /**
  455. * Returns true if multiple parents are allowed; false otherwise.
  456. *
  457. * @return boolean
  458. *
  459. * @throws object HierarchyException An exception with one of
  460. * the following messages defined in
  461. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  462. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  463. * OPERATION_FAILED}, {@link }
  464. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  465. * PERMISSION_DENIED}, {@link }
  466. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  467. * CONFIGURATION_ERROR}, {@link }
  468. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  469. * UNIMPLEMENTED}
  470. *
  471. * @access public
  472. */
  473. function allowsMultipleParents () {
  474. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  475. }
  476.  
  477. /**
  478. * Returns true if recursion allowed; false otherwise.
  479. *
  480. * @return boolean
  481. *
  482. * @throws object HierarchyException An exception with one of
  483. * the following messages defined in
  484. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  485. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  486. * OPERATION_FAILED}, {@link }
  487. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  488. * PERMISSION_DENIED}, {@link }
  489. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  490. * CONFIGURATION_ERROR}, {@link }
  491. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  492. * UNIMPLEMENTED}
  493. *
  494. * @access public
  495. */
  496. function allowsRecursion () {
  497. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  498. }
  499.  
  500. /**
  501. * Traverse a Hierarchy returning information about each Node encountered.
  502. *
  503. * @param object Id $startId
  504. * @param int $mode
  505. * @param int $direction
  506. * @param int $levels
  507. *
  508. * @return object TraversalInfoIterator
  509. *
  510. * @throws object HierarchyException An exception with one of
  511. * the following messages defined in
  512. * org.osid.hierarchy.HierarchyException may be thrown: {@link }
  513. * org.osid.hierarchy.HierarchyException#OPERATION_FAILED
  514. * OPERATION_FAILED}, {@link }
  515. * org.osid.hierarchy.HierarchyException#PERMISSION_DENIED
  516. * PERMISSION_DENIED}, {@link }
  517. * org.osid.hierarchy.HierarchyException#CONFIGURATION_ERROR
  518. * CONFIGURATION_ERROR}, {@link }
  519. * org.osid.hierarchy.HierarchyException#UNIMPLEMENTED
  520. * UNIMPLEMENTED}, {@link }
  521. * org.osid.hierarchy.HierarchyException#NODE_TYPE_NOT_FOUND
  522. * NODE_TYPE_NOT_FOUND}, {@link }
  523. * org.osid.hierarchy.HierarchyException#UNKNOWN_TRAVERSAL_MODE
  524. * UNKNOWN_TRAVERSAL_MODE}, {@link }
  525. * org.osid.hierarchy.HierarchyException#UNKNOWN_TRAVERSAL_DIRECTION
  526. * UNKNOWN_TRAVERSAL_DIRECTION}
  527. *
  528. * @access public
  529. */
  530. function traverse ( $startId, $mode, $direction, $levels ) {
  531. die ("Method <b>".__FUNCTION__."()</b> declared in interface<b> ".__CLASS__."</b> has not been overloaded in a child class.");
  532. }
  533. }
  534.  
  535. ?>

Documentation generated on Wed, 19 Sep 2007 10:24:26 -0400 by phpDocumentor 1.3.0RC3