package eu.etaxonomy.taxeditor.navigation.navigator;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.IClassificationService;
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.navigation.NavigationUtil;
-import eu.etaxonomy.taxeditor.navigation.operation.CreateClassification;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
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<Classification> getParentBeans() {
+ public List<TaxonNodeDto> getParentBeans() {
List<String> propertyPaths = Arrays.asList(new String[]{
- "name",
- "rootNode.childNodes"});
-
- List<Classification> classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, propertyPaths);
-
- if(classifications.size() == 0){
- Classification classification = Classification.NewInstance("My Classification");
- AbstractPostOperation operation = new CreateClassification("Creating initial 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);
+ "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);
+
+ 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(new TaxonNodeDto(classification.getRootNode()));
+ }
}
-
- return classifications;
+ return rootNodes;
}
/* (non-Javadoc)
public ConversationHolder getConversationHolder() {
return conversation;
}
+
+ public void addRootNode(Classification newClassification){
+ newClassification = CdmStore.getService(IClassificationService.class).load(newClassification.getUuid());
+ rootNodes.add(new TaxonNodeDto(newClassification.getRootNode()));
+
+ }
}