Проверьте, был ли удален узел в дереве

1

Я SapTree узлы из SapTree с помощью следующего кода:

SapTree tree; // initialized somewhere
String key; // initialized somewhere
String itemname; // initialized somewhere
tree.selectNode(key);
tree.expandNode(key);
tree.ensureVisibleHorizontalItem(key, itemname);
tree.nodeContextMenu(key);
tree.selectContextMenuItem("DELETE_OBJECT");

Однако иногда я не могу удалить элемент, например, из-за разрешений или других зависимостей. Как проверить, удалось ли удалить элемент?

Все вышеперечисленные методы возвращают void, поэтому обратной связи нет.

Что я пробовал?

Я просмотрел документацию (SapTree [MicroFocus]) для метода, который взял бы ключ и вернул бы что-то. Я ожидал найти boolean exists(String key) или аналогичный метод.

Теги:
silktest

1 ответ

1
Лучший ответ

Почти любой метод, который принимает key параметр, выдает исключение RuntimeException, если узел не существует. Поэтому я закончил вызов getNodeTop(), который не вызывает никаких побочных эффектов при работе на дереве (в отличие от selectNode() и других). Улавливая исключение, я решаю, существует ли узел или нет:

/**
 * Checks whether a node with the given key exists in the tree
 * @param haystack    Tree to find the key in
 * @param nodeKey     Node key to be found
 * @return True if the node was found (determined by getting the top location), false if the node was not found
 */
private boolean nodeExists(SapTree haystack, String nodeKey)
{
    try
    {
        haystack.getNodeTop(nodeKey);
        return true;
    } catch (RuntimeException rex)
    {
        return false;
    }
}

Этот ответ является совместным лицензированием по CC0.

  • 0
    Я действительно надеюсь, что ваша String needle является уникальной.
  • 0
    @Nessuno: узел имеет ключ, текст и всплывающую подсказку. Насколько я заметил, ключ уникален (хотя я не смог найти это в документации). Я обновил ответ, чтобы использовать nodeKey вместо needle, чтобы было ясно, что он не должен использоваться с произвольным текстом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню