make saveOrUpdateEntityListner compile with maven
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 13 Aug 2013 13:55:05 +0000 (13:55 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 13 Aug 2013 13:55:05 +0000 (13:55 +0000)
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/SaveOrUpdateEntityListener.java

index acef8792bbd19841055e5e70c8afc4c438ad90aa..6772bf34a7f6b1406990808ace60e4a6aef41e86 100644 (file)
@@ -66,7 +66,7 @@ public class SaveOrUpdateEntityListener implements SaveOrUpdateEventListener {
         * @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
@@ -75,12 +75,16 @@ public class SaveOrUpdateEntityListener implements SaveOrUpdateEventListener {
                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