package eu.etaxonomy.taxeditor.editor.view.checklist.e4.handler;
+import java.util.List;
import java.util.UUID;
import javax.inject.Inject;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.editor.AppModelId;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.handler.defaultHandler.e4.DefaultOpenHandlerBaseE4;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.security.RequiredPermissions;
import eu.etaxonomy.taxeditor.store.CdmStore;
public class OpenChecklistEditorHandlerE4 extends DefaultOpenHandlerBaseE4<ITaxonTreeNode> {
*/
@Override
protected boolean canExecute(ITaxonTreeNode entity) {
- return entity!=null && PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
+
+ boolean hasPermission = ((TaxonNode)entity).hasChildNodes()? checkPermission(((TaxonNode)entity).getChildNodes(), false) || CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT):CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT);
+ return hasPermission && PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
}
@Override
protected String getPartId() {
return AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_CHECKLIST_E4_DISTRIBUTIONEDITORPART;
}
+
+ private boolean checkPermission(List<TaxonNode> nodes, boolean result){
+
+ for (TaxonNode node:nodes){
+ if (node.hasChildNodes()){
+ result = result ||checkPermission(node.getChildNodes(), result);
+ }
+ result = result || CdmStore.currentAuthentiationHasPermission(node, RequiredPermissions.TAXONNODE_EDIT);
+ }
+ return result;
+ }
}