2018-09-24 16:03:29 +00:00
|
|
|
|
/**
|
2018-09-25 16:04:11 +00:00
|
|
|
|
* Абстрактное дерево, от него наследуются все существующие деревья
|
|
|
|
|
*
|
|
|
|
|
* Ноды это дерева имеют доступ к списку нод, вложенных в них
|
|
|
|
|
*
|
|
|
|
|
* <br>
|
|
|
|
|
* Связанные объекты:
|
|
|
|
|
*
|
|
|
|
|
* - {@link Trees} - Здесь можно найти примеры, как работать с менеджером деревьев
|
|
|
|
|
* - {@link Trees.GlobalTree.Node} - Здесь можно найти примеры, как работать с содержимым глобальной ноды
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
* // Пример 1: Как получить глобальное дерево?
|
|
|
|
|
*
|
|
|
|
|
* // Пример взят для дерева тополгии
|
|
|
|
|
* var tree = null;
|
|
|
|
|
* ps.pl.tm.get(new v2.string("st")).then(function(ref){
|
|
|
|
|
* // ref - это ссылка на объект
|
|
|
|
|
* // метод value возвращает целевой объект. В данном случае дерево {@type Trees.GlobalTree}
|
|
|
|
|
* tree = ref.value();
|
|
|
|
|
* }, function(err){
|
|
|
|
|
* // в случае неудачи придет ошибка.
|
|
|
|
|
* // обычно в ошибке содержится три переменные err - код ошибки, message - краткое описание, sub - если к этому
|
|
|
|
|
* // привела другая ошибка внутри системы.
|
|
|
|
|
* })
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
* // Пример 2: Как получить ноду дерева?
|
|
|
|
|
*
|
|
|
|
|
* // Пример взят для дерева тополгии
|
|
|
|
|
* var tree = null;
|
|
|
|
|
* var node = null;
|
|
|
|
|
*
|
|
|
|
|
* // Осуществляем запрос к менеджеру деревьев, на получение провайдера дерева
|
|
|
|
|
* ps.pl.tm.get(new v2.string("st")).then(function(ref){
|
|
|
|
|
* // ref - это ссылка на объект
|
|
|
|
|
* // метод value возвращает целевой объект. В данном случае дерево Trees.SchemeTree
|
|
|
|
|
* tree = ref.value();
|
|
|
|
|
*
|
|
|
|
|
* // Доступ к ноде осуществляется похожим образом, но теперь вместо строки нужно указать v2.integer
|
|
|
|
|
* // Так как возвратится нативный проимс, мы можем вернуть его и обработать в следующем then
|
|
|
|
|
* return tree.get(v2.integer.from_number(0))
|
|
|
|
|
* }, function(err){
|
|
|
|
|
* // в случае неудачи придет ошибка.
|
|
|
|
|
* // обычно в ошибке содержится три переменные err - код ошибки, message - краткое описание, sub - если к этому
|
|
|
|
|
* // привела другая ошибка внутри системы.
|
|
|
|
|
* }).then(function(ref){
|
|
|
|
|
* // Вот мы и получили ноду.
|
|
|
|
|
* node = ref.value();
|
|
|
|
|
* }, function(err){
|
|
|
|
|
* // Отобразим ошибку
|
|
|
|
|
* console.warn(err);
|
|
|
|
|
* })
|
2018-09-24 16:03:29 +00:00
|
|
|
|
*
|
|
|
|
|
* @group manager
|
|
|
|
|
* @class GlobalTree
|
2018-09-25 16:04:11 +00:00
|
|
|
|
* @extends manager
|
2018-09-24 16:03:29 +00:00
|
|
|
|
* @memberof Trees
|
|
|
|
|
*/
|
|
|
|
|
function GlobalTree() {
|
|
|
|
|
/**
|
2018-09-25 16:04:11 +00:00
|
|
|
|
* Интерфейс доступа к ноде
|
|
|
|
|
*
|
|
|
|
|
* Ответ должен быть обработан в промисе,
|
|
|
|
|
*
|
|
|
|
|
* при успехе вернется {@link tools.reference} -> {@link Trees.GlobalTree.Node}
|
|
|
|
|
*
|
|
|
|
|
* при отмене вернется ошибка {@link Errors.PromiseReject}
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
* // Пример:
|
|
|
|
|
*
|
|
|
|
|
* // Допустим мы хотим получить корневую ноду.
|
|
|
|
|
* // Так сложилось, что корневая нода, всегда нулевая
|
|
|
|
|
* var nodeId = v2.integer.from_number(0);
|
|
|
|
|
*
|
|
|
|
|
* // Допустим что мы где-то уже получили дерево.
|
|
|
|
|
* var promise = tree.get(nodeId);
|
|
|
|
|
*
|
|
|
|
|
* promise.then(function(ref){
|
|
|
|
|
* // Вот мы и получили ноду.
|
|
|
|
|
* node = ref.value();
|
|
|
|
|
* }, function(err){
|
|
|
|
|
* // Отобразим ошибку
|
|
|
|
|
* console.warn(err);
|
|
|
|
|
* })
|
2018-09-24 16:03:29 +00:00
|
|
|
|
*
|
|
|
|
|
* @public
|
|
|
|
|
* @function get
|
2018-09-25 16:04:11 +00:00
|
|
|
|
* @param {v2.integer} nodeId Идентификатор ноды в дереве
|
2018-09-24 16:03:29 +00:00
|
|
|
|
* @returns {tools.promise}
|
|
|
|
|
* @memberof Trees.GlobalTree
|
|
|
|
|
*/
|
|
|
|
|
this.get = function(nodeId) {
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
2018-09-25 16:04:11 +00:00
|
|
|
|
* Осуществляет уаление ноды из дерева.
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
* // Пример:
|
|
|
|
|
*
|
|
|
|
|
* // Допустим, что мы знаем, что в дереве существует нода с таким идентификатором
|
|
|
|
|
* var nodeId = v2.integer.from_number(1);
|
|
|
|
|
* var tree = null;
|
|
|
|
|
* ps.pl.tm.get(new v2.string("st")).then(function(ref){
|
|
|
|
|
* // ref - это ссылка на объект
|
|
|
|
|
* // метод value возвращает целевой объект. В данном случае дерево {@type Trees.GlobalTree}
|
|
|
|
|
* tree = ref.value();
|
|
|
|
|
*
|
|
|
|
|
* // Произведет удаление ноды 1 из дерева
|
|
|
|
|
* // Ответ придет по подписке на существование нод в дереве.
|
|
|
|
|
* tree.remove(nodeId);
|
|
|
|
|
* }, function(err){
|
|
|
|
|
* console.log(err)
|
|
|
|
|
* })
|
|
|
|
|
*
|
2018-09-24 16:03:29 +00:00
|
|
|
|
*
|
|
|
|
|
* @public
|
|
|
|
|
* @function remove
|
2018-09-25 16:04:11 +00:00
|
|
|
|
* @param {v2.integer} nodeId Идентификатор ноды в дереве
|
2018-09-24 16:03:29 +00:00
|
|
|
|
* @memberof Trees.GlobalTree
|
|
|
|
|
*/
|
|
|
|
|
this.remove = function(nodeId) {
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает адрес дерева в системе
|
|
|
|
|
*
|
2018-09-25 16:04:11 +00:00
|
|
|
|
*
|
2018-09-24 16:03:29 +00:00
|
|
|
|
* @public
|
|
|
|
|
* @function sys_addr
|
|
|
|
|
* @returns {v2.address}
|
|
|
|
|
* @memberof Trees.GlobalTree
|
|
|
|
|
*/
|
|
|
|
|
this.sys_addr = function() {
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
}
|