* @param event\r
* @param node\r
*/\r
- private <T extends ITreeNode<T>> void reindex(SaveOrUpdateEvent event, ITreeNode<?> node) {\r
+ private <T extends ITreeNode> void reindex(SaveOrUpdateEvent event, T node) {\r
String oldChildIndex = node.treeIndex();\r
String sep = ITreeNode.separator;\r
String pref = ITreeNode.treePrefix;\r
if (node.getId() > 0 && (oldChildIndex == null|| ! oldChildIndex.startsWith(parentIndex))){ //TODO\r
String newChildIndex = parentIndex + node.getId() + sep;\r
node.setTreeIndex(newChildIndex);\r
+ \r
+ //TODO this is a greedy implementation, better use update by replace string\r
+ //either using and improving the below code or by using native SQL\r
+ //The current approach may run out of memory for large descendant sets.\r
List<T> childNodes = (List<T>)node.getChildNodes();\r
for (T child : childNodes){\r
reindex(event, child);\r
}\r
\r
- String className = event.getEntityName();\r
+// String className = event.getEntityName();\r
// String updateQuery = " UPDATE %s tn " +\r
// " SET tn.treeIndex = Replace(tn.treeIndex, '%s', '%s') " +\r
// " WHERE tn.id <> "+ node.getId()+" ";\r