Я 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)
или аналогичный метод.
Почти любой метод, который принимает 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.
String needle
является уникальной.