ref #2380: implement usage of Dto for taxon navigator
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / Root.java
index 3db2bdda405bbf6e7f91cae6db7fc5f9e1e259e0..7cecd94cd5d6a599615306bc0694342acc870854 100644 (file)
@@ -22,8 +22,8 @@ import org.eclipse.ui.IPersistableElement;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
-import eu.etaxonomy.cdm.model.common.ITreeNode;
 import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -37,6 +37,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class Root extends PlatformObject implements IAdaptable, IPersistableElement, IElementFactory, IConversationEnabled {
 
        private final ConversationHolder conversation;
+       private List<TaxonNodeDto> rootNodes = new ArrayList<>();
 
        /**
         * <p>Constructor for Root.</p>
@@ -52,24 +53,25 @@ public class Root extends PlatformObject implements IAdaptable, IPersistableElem
         *
         * @return a {@link java.util.List} object.
         */
-       public List<ITreeNode> getParentBeans() {
+       public List<TaxonNodeDto> getParentBeans() {
                List<String> propertyPaths = Arrays.asList(new String[]{
                        "name", //$NON-NLS-1$
                        "rootNode.childNodes"}); //$NON-NLS-1$
+               if (rootNodes.isEmpty()){
+               List<Classification> classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, propertyPaths);
 
-               List<Classification> classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, propertyPaths);
-               List<ITreeNode> rootNodes = new ArrayList<>();
+               if(classifications.size() == 0){
+                   //FIXME E4 migrate or delete; when does this happen and SHOULD this happen?
+    //                 Classification classification = Classification.NewInstance(Messages.Root_MY_CLASSIFICATION);
+    //                 AbstractPostOperation operation = new CreateClassification(Messages.Root_CREATE_CLASSIFICATION, NavigationUtil.getUndoContext(), classification, NavigationUtil.getNavigator(false), NavigationUtil.getNavigator(false), NavigationUtil.getNavigator(false));
+    //                 NavigationUtil.executeOperation(operation);
+    //
+    //                 classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, propertyPaths);
+               }
 
-               if(classifications.size() == 0){
-                   //FIXME E4 migrate or delete; when does this happen and SHOULD this happen?
-//                     Classification classification = Classification.NewInstance(Messages.Root_MY_CLASSIFICATION);
-//                     AbstractPostOperation operation = new CreateClassification(Messages.Root_CREATE_CLASSIFICATION, NavigationUtil.getUndoContext(), classification, NavigationUtil.getNavigator(false), NavigationUtil.getNavigator(false), NavigationUtil.getNavigator(false));
-//                     NavigationUtil.executeOperation(operation);
-//
-//                     classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, propertyPaths);
-               }
-               for (Classification classification: classifications){
-                       rootNodes.add(classification.getRootNode());
+               for (Classification classification: classifications){
+                       rootNodes.add(new TaxonNodeDto(classification.getRootNode()));
+               }
                }
                return rootNodes;
        }
@@ -117,4 +119,10 @@ public class Root extends PlatformObject implements IAdaptable, IPersistableElem
        public ConversationHolder getConversationHolder() {
                return conversation;
        }
+
+       public void addRootNode(Classification newClassification){
+           newClassification = CdmStore.getService(IClassificationService.class).load(newClassification.getUuid());
+           rootNodes.add(new TaxonNodeDto(newClassification.getRootNode()));
+
+       }
 }