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;
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>
*
* @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;
}
public ConversationHolder getConversationHolder() {
return conversation;
}
+
+ public void addRootNode(Classification newClassification){
+ newClassification = CdmStore.getService(IClassificationService.class).load(newClassification.getUuid());
+ rootNodes.add(new TaxonNodeDto(newClassification.getRootNode()));
+
+ }
}