import org.springframework.stereotype.Service;\r
import org.springframework.transaction.annotation.Transactional;\r
\r
+import eu.etaxonomy.cdm.api.service.config.FeatureNodeDeletionConfigurator;\r
+import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandling;\r
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
import eu.etaxonomy.cdm.model.description.FeatureNode;\r
import eu.etaxonomy.cdm.model.description.FeatureTree;\r
import eu.etaxonomy.cdm.persistence.dao.description.IFeatureNodeDao;\r
@Autowired\r
private IVocabularyService vocabularyService;\r
\r
+ @Autowired\r
+ private IFeatureNodeService featureNodeService;\r
+\r
@Override\r
@Autowired\r
protected void setDao(IFeatureTreeDao dao) {\r
if(featureTree == null){\r
throw new EntityNotFoundException("No FeatureTree entity found for " + uuid);\r
}\r
- dao.loadNodes(featureTree.getRoot(),nodePaths);\r
+ dao.deepLoadNodes(featureTree.getRoot().getChildNodes() ,nodePaths);\r
return featureTree;\r
}\r
\r
return load(IFeatureTreeDao.DefaultFeatureTreeUuid);\r
}\r
\r
+ @Override\r
+ public DeleteResult delete(UUID featureTreeUuid){\r
+ DeleteResult result = new DeleteResult();\r
+ FeatureTree tree = dao.load(featureTreeUuid);\r
+\r
+ FeatureNode rootNode = HibernateProxyHelper.deproxy(tree.getRoot(), FeatureNode.class);\r
+ FeatureNodeDeletionConfigurator config = new FeatureNodeDeletionConfigurator();\r
+ config.setChildHandling(ChildHandling.DELETE);\r
+ result =featureNodeService.deleteFeatureNode(rootNode.getUuid(), config);\r
+ tree.setRoot(null);\r
+ if (result.isOk()){\r
+ dao.delete(tree);\r
+ }\r
+ return result;\r
+\r
+ }\r
+\r
\r
\r
}\r