- private IFeatureNodeDao featureNodeDao;\r
- \r
- @Autowired\r
- private IVocabularyService vocabularyService;\r
- \r
- @Autowired\r
- protected void setDao(IFeatureTreeDao dao) {\r
- this.dao = dao;\r
- }\r
- \r
- @Autowired\r
- protected void setFeatureNodeDao(IFeatureNodeDao featureNodeDao) {\r
- this.featureNodeDao = featureNodeDao;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()\r
- */\r
- @Override\r
- public void updateTitleCache() {\r
- Class<FeatureTree> clazz = FeatureTree.class;\r
- super.updateTitleCache(clazz, null, null);\r
- }\r
-\r
- public List<FeatureNode> getFeatureNodesAll() {\r
- return featureNodeDao.list();\r
- }\r
- \r
- /*\r
- * (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.api.service.IFeatureTreeService#saveFeatureNodesAll(java.util.Collection)\r
- */\r
- public Map<UUID, FeatureNode> saveFeatureNodesAll(\r
- Collection<FeatureNode> featureNodeCollection) {\r
- return featureNodeDao.saveAll(featureNodeCollection);\r
- } \r
-\r
- public FeatureTree loadWithNodes(UUID uuid, List<String> propertyPaths, List<String> nodePaths) {\r
- nodePaths.add("children");\r
- \r
- List<String> rootPaths = new ArrayList<String>();\r
- rootPaths.add("root");\r
- for(String path : nodePaths) {\r
- rootPaths.add("root." + path);\r
- }\r
- \r
- if(propertyPaths != null) { \r
- rootPaths.addAll(propertyPaths);\r
- }\r
- \r
- FeatureTree featureTree = load(uuid, rootPaths);\r
- dao.loadNodes(featureTree.getRoot(),nodePaths);\r
- return featureTree;\r
- }\r
- \r
- /**\r
- * Returns the featureTree specified by the given <code>uuid</code>.\r
- * The specified featureTree either can be one of those stored in the CDM database or can be the \r
- * DefaultFeatureTree (contains all Features in use). \r
- * The uuid of the DefaultFeatureTree is defined in {@link IFeatureTreeService#DefaultFeatureTreeUuid}.\r
- * The DefaultFeatureTree is also returned if no feature tree at all is stored in the cdm database.\r
- * \r
- * @see eu.etaxonomy.cdm.api.service.ServiceBase#load(java.util.UUID, java.util.List)\r
- */\r
- @Override\r
- public FeatureTree load(UUID uuid, List<String> propertyPaths) {\r
- if (uuid.equals(DefaultFeatureTreeUuid) || dao.count() == 0){\r
- return createDefaultFeatureTree();\r
- }\r
- return super.load(uuid, propertyPaths);\r
- }\r
- \r
- /**\r
- * \r
- */\r
- private FeatureTree createDefaultFeatureTree() {\r
- \r
- TermVocabulary featureVocabulary = vocabularyService.getVocabulary(VocabularyEnum.Feature);\r
- \r
- List<Feature> featureList = new ArrayList<Feature>(featureVocabulary.getTerms());\r
- \r
- FeatureTree featureTree = FeatureTree.NewInstance(featureList);\r
- featureTree.setUuid(DefaultFeatureTreeUuid);\r
- return featureTree;\r
- }\r
+ private IFeatureNodeDao featureNodeDao;\r
+\r
+ @Autowired\r
+ private IVocabularyService vocabularyService;\r
+\r
+ @Override\r
+ @Autowired\r
+ protected void setDao(IFeatureTreeDao dao) {\r
+ this.dao = dao;\r
+ }\r
+\r
+ @Autowired\r
+ protected void setFeatureNodeDao(IFeatureNodeDao featureNodeDao) {\r
+ this.featureNodeDao = featureNodeDao;\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy)\r
+ */\r
+ @Override\r
+ @Transactional(readOnly = false)\r
+ public void updateTitleCache(Class<? extends FeatureTree> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<FeatureTree> cacheStrategy, IProgressMonitor monitor) {\r
+ if (clazz == null){\r
+ clazz = FeatureTree.class;\r
+ }\r
+ super.updateTitleCacheImpl(clazz, stepSize, cacheStrategy, monitor);\r
+ }\r
+\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.api.service.IFeatureTreeService#getFeatureNodesAll()\r
+ */\r
+ @Override\r
+ public List<FeatureNode> getFeatureNodesAll() {\r
+ return featureNodeDao.list();\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.api.service.IFeatureTreeService#saveFeatureNodesAll(java.util.Collection)\r
+ */\r
+ @Override\r
+ public Map<UUID, FeatureNode> saveFeatureNodesAll(Collection<FeatureNode> featureNodeCollection) {\r
+ return featureNodeDao.saveAll(featureNodeCollection);\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.api.service.IFeatureTreeService#saveOrUpdateFeatureNodesAll(java.util.Collection)\r
+ */\r
+ @Override\r
+ public Map<UUID, FeatureNode> saveOrUpdateFeatureNodesAll(Collection<FeatureNode> featureNodeCollection) {\r
+ return featureNodeDao.saveOrUpdateAll(featureNodeCollection);\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.api.service.IFeatureTreeService#loadWithNodes(java.util.UUID, java.util.List, java.util.List)\r
+ */\r
+ @Override\r
+ public FeatureTree loadWithNodes(UUID uuid, List<String> propertyPaths, List<String> nodePaths) {\r
+\r
+ if(!nodePaths.contains("children")) {\r
+ nodePaths.add("children");\r
+ }\r
+\r
+ List<String> rootPaths = new ArrayList<String>();\r
+ rootPaths.add("root");\r
+ for(String path : nodePaths) {\r
+ rootPaths.add("root." + path);\r
+ }\r
+\r
+ if(propertyPaths != null) {\r
+ rootPaths.addAll(propertyPaths);\r
+ }\r
+\r
+ FeatureTree featureTree = load(uuid, rootPaths);\r
+ if(featureTree == null){\r
+ throw new EntityNotFoundException("No FeatureTree entity found for " + uuid);\r
+ }\r
+ dao.deepLoadNodes(featureTree.getRoot().getChildNodes() ,nodePaths);\r
+ return featureTree;\r
+ }\r
+\r
+ /**\r
+ * Returns the featureTree specified by the given <code>uuid</code>.\r
+ * The specified featureTree either can be one of those stored in the CDM database or can be the\r
+ * DefaultFeatureTree (contains all Features in use).\r
+ * The uuid of the DefaultFeatureTree is defined in {@link IFeatureTreeService#DefaultFeatureTreeUuid}.\r
+ * The DefaultFeatureTree is also returned if no feature tree at all is stored in the cdm database.\r
+ *\r
+ * @see eu.etaxonomy.cdm.api.service.ServiceBase#load(java.util.UUID, java.util.List)\r
+ */\r
+ @Override\r
+ public FeatureTree load(UUID uuid, List<String> propertyPaths) {\r
+ return super.load(uuid, propertyPaths);\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.cdm.api.service.IFeatureTreeService#createTransientDefaultFeatureTree()\r
+ */\r
+ @Override\r
+ public FeatureTree createTransientDefaultFeatureTree() {\r
+ return load(IFeatureTreeDao.DefaultFeatureTreeUuid);\r
+ }\r
+\r
+\r
+\r