fixing #4115 ('editor' users cannot create new references via the reference select...
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Tue, 11 Mar 2014 17:47:18 +0000 (17:47 +0000)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Tue, 11 Mar 2014 17:47:18 +0000 (17:47 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java

index 426b9808659e8fa051873b8bb0e8c4812fc264f4..062fd5692ccdee4009bb9fc9ecd54bc1ee2d85f2 100644 (file)
@@ -48,12 +48,12 @@ import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
  */
 public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement implements ICdmDetailElement<T>, Observer {
 
-       private static final EnumSet<CRUD> UPDATE = EnumSet.of(CRUD.UPDATE);
-
        private T entity;
 
        private boolean irrelevant;
 
+       private EnumSet<CRUD> requiredCrud = null;
+
        /**
         * <p>
         * Constructor for AbstractCdmDetailElement.
@@ -93,6 +93,12 @@ public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement
        @Override
     public void setEntity(T entity) {
         this.entity = entity;
+        if(StoreUtil.getCdmEntity(getEntity()).getCreatedBy() == null) {
+            // new entity, not yet persisted to the database
+            requiredCrud = EnumSet.of(CRUD.CREATE);
+        } else {
+            requiredCrud = EnumSet.of(CRUD.UPDATE);
+        }
         updateContent();
        }
 
@@ -333,6 +339,6 @@ public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement
 
 
     protected void updateControlStates(){
-        setEnabled(getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), UPDATE));
+        setEnabled(getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), requiredCrud));
     }
 }