Project

General

Profile

« Previous | Next » 

Revision d0a4f3d9

Added by Katja Luther over 4 years ago

ref #5873: performance issues

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/handler/OpenChecklistEditorHandlerE4.java
91 91
     */
92 92
    @Override
93 93
    protected boolean canExecute(ITaxonTreeNode entity) {
94

  
94 95
        DescriptionBase instance = TaxonDescription.NewInstance();
95
        boolean hasPermission = CdmStore.currentAuthentiationHasPermission(instance, RequiredPermissions.DESCRIPTION_EDIT);
96
        if (!hasPermission){
97
            hasPermission = hasPermission || ((TaxonNode)entity).hasChildNodes()? checkPermission(((TaxonNode)entity).getChildNodes(), false) || CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT):CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT);
96
        boolean hasDescriptionPermission = CdmStore.currentAuthentiationHasPermission(instance, RequiredPermissions.DESCRIPTION_EDIT);
97
        if (!hasDescriptionPermission){
98
            return false;
98 99
        }
100
        boolean  hasPermission =  ((TaxonNode)entity).hasChildNodes() ? checkPermission(((TaxonNode)entity).getChildNodes(), false) || CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT):CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT);
99 101
        return hasPermission &&  PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
100 102
    }
101 103

  
......
109 111
        for (TaxonNode node:nodes){
110 112
            if (node.hasChildNodes() && !result){
111 113
                result = result ||checkPermission(node.getChildNodes(), result);
114

  
112 115
            }
113 116
            result = result || CdmStore.currentAuthentiationHasPermission(node, RequiredPermissions.TAXONNODE_EDIT);
117
            if (result){
118
                return result;
119
            }
114 120
        }
115 121
        return result;
116 122
    }

Also available in: Unified diff