merge-update from trunk
authorPatric Plitzner <p.plitzner@bgbm.org>
Wed, 16 Oct 2013 07:35:30 +0000 (07:35 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Wed, 16 Oct 2013 07:35:30 +0000 (07:35 +0000)
.gitattributes
eu.etaxonomy.taxeditor.cdmlib/.classpath
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/ChangeAcceptedTaxonToSynonymHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionElementsHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/MoveDescriptionToOtherTaxonOperation.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java

index e9d32f2b1f6ae79bbec79981b18cc47afcc739c4..0a60104d414ee0a6d4e6254de6353b1af40f7c87 100644 (file)
@@ -484,12 +484,14 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/d
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DescriptionsMenuPropertyTester.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DynamicFeatureMenu.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionElementsHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateDescriptionElementOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateTaxonDescriptionOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteDescriptionElementOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonDescriptionOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/EditInXper2Handler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/MoveDescriptionElementsOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/MoveDescriptionToOtherTaxonOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaContentProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaLabelProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/MediaViewPart.java -text
index 76687e42baf0c1d91e62a78cc3a08a72e4e09cac..cd9e75d017aae6c0a3ba5f878563cbe0636706ef 100644 (file)
@@ -72,7 +72,7 @@
        <classpathentry exported="true" kind="lib" path="lib/hibernate-c3p0-4.1.10.Final.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/hibernate-cglib-repack-2.1_3.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/hibernate-commons-annotations-4.0.1.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-core-4.1.10.Final.jar" sourcepath="lib/hibernate-core-4.1.10.Final-sources.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/hibernate-core-4.1.10.Final.jar" sourcepath="/home/andreas/.m2/repository/org/hibernate/hibernate-core/4.1.10.Final/hibernate-core-4.1.10.Final-sources.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/hibernate-ehcache-4.1.10.Final.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/hibernate-entitymanager-4.1.10.Final.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/hibernate-envers-4.1.10.Final.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/spring-expression-3.2.2.RELEASE.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/spring-modules-cache-0.7.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/spring-security-config-3.1.3.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-security-core-3.1.3.RELEASE.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/spring-security-core-3.1.3.RELEASE.jar" sourcepath="/home/andreas/.m2/repository/org/springframework/security/spring-security-core/3.1.3.RELEASE/spring-security-core-3.1.3.RELEASE-sources.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/stax-1.2.0.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/stax-api-1.0.1.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/unitils-core-3.3.jar"/>
index c76002c6b07ee514396f8983587a3bc5c8d69c3e..327a7c858efefbb6bba02c8126772a69b46f5459 100644 (file)
                visible="true">
          </separator>
          <command
-               commandId="eu.etaxonomy.taxeditor.description.commands.moveDescriptionElements"
-               label="Move Elements"
+               commandId="eu.etaxonomy.taxeditor.editor.commands.description.moveDescriptionToTaxon"
+               label="Move Description to Taxon"
                style="push">
             <visibleWhen
                   checkEnabled="true">
                <reference
-                     definitionId="isDescriptionElement">
+                     definitionId="isDescription">
                </reference>
             </visibleWhen>
          </command>
+         <command
+               commandId="eu.etaxonomy.taxeditor.description.commands.moveDescriptionElements"
+               label="Move Elements to Taxon"
+               style="push">
+            <visibleWhen
+                  checkEnabled="true">
+               <or>
+                  <reference
+                        definitionId="isDescriptionElement">
+                  </reference>
+                  <reference
+                        definitionId="isFeatureNodeContainer">
+                  </reference>
+               </or>
+            </visibleWhen>
+         </command>
          <separator
                name="eu.etaxonomy.taxeditor.taxonDescriptionEditor.separator.afterNew"
                visible="true">
             categoryId="eu.etaxonomy.taxeditor.editor.view.descriptive.command.category"
             defaultHandler="eu.etaxonomy.taxeditor.editor.view.descriptive.handler.MoveDescriptionElementsHandler"
             id="eu.etaxonomy.taxeditor.description.commands.moveDescriptionElements"
-            name="Move Description Elements">
+            name="Move Description Elements to Taxon">
+      </command>
+      <command
+            categoryId="eu.etaxonomy.taxeditor.editor.view.descriptive.command.category"
+            defaultHandler="eu.etaxonomy.taxeditor.editor.view.descriptive.handler.MoveDescriptionToOtherTaxonHandler"
+            id="eu.etaxonomy.taxeditor.editor.commands.description.moveDescriptionToTaxon"
+            name="Move Description to Taxon">
       </command>
       <category
             id="eu.etaxonomy.taxeditor.editor.view.uses.command.category"
index b12451058fc564976a9af67ae16065fc7970c12a..a6f7910d420ed9bce401be91824ce717dcc38b27 100644 (file)
@@ -54,6 +54,15 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
                                Page.NAME);
                TaxonNode oldAcceptedTaxonNode = ((TaxonEditorInput) editor.getEditorInput()).getTaxonNode();
                
+               // check if taxon has no children
+               if(oldAcceptedTaxonNode.getCountChildren() > 0) {
+                       EditorUtil.warningDialog("Prerequisite not met", this, 
+                                       "The accepted taxon must not have any childen. You need to move all childen to " +
+                                       "another taxon node in the TaxonNavigator before attempting to turn the accepted " +
+                                       "taxon into a synonym.");
+                       return null;
+               }
+               
                // Choose new accepted taxon    
                List<UUID> excludeTaxa = new ArrayList<UUID>();
                excludeTaxa.add(oldAcceptedTaxonNode.getUuid());
index 8448919f41af6f39061b216c37b1e0834a039cd1..d60354737c9a110beffda000179ad5b4b861ac72 100644 (file)
@@ -24,12 +24,16 @@ import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.AnnotationType;
+import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionElementsOperation;
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -64,13 +68,32 @@ public class MoveDescriptionElementsHandler extends AbstractHandler {
                                        UUID uuid = ((DescriptionElementBase) element).getUuid();
                                        
                                        elements.add(CdmStore.getService(IDescriptionService.class).loadDescriptionElement(uuid, null));
+                               } else if(element instanceof FeatureNodeContainer){
+                                       for(DescriptionElementBase de : ((FeatureNodeContainer)element).getDescriptionElements()){
+                                               elements.add(
+                                                               (DescriptionElementBase)CdmStore.getService(IDescriptionService.class).loadDescriptionElement(de.getUuid(), null)
+                                                       );
+                                       }
                                }
                        }
                        
+                       if(elements.size() == 0){
+                               return null;
+                       }
+                       
                        Taxon targetTaxon = TaxonBaseSelectionDialog.selectTaxon(HandlerUtil.getActiveShell(event), EditorUtil.getActiveMultiPageTaxonEditor().getConversationHolder(), null);
+                       
+                       if(targetTaxon == null){
+                               // canceled
+                               return null;
+                       }
                                                
                        TaxonDescription targetDescription = TaxonDescription.NewInstance(targetTaxon);
-                       targetDescription.setTitleCache(String.format("Copied from %s", EditorUtil.getActiveMultiPageTaxonEditor().getTaxon()), true);
+                       String moveMessage = String.format("Elements moved from %s", EditorUtil.getActiveMultiPageTaxonEditor().getTaxon());
+                       targetDescription.setTitleCache(moveMessage, true);
+                       Annotation annotation = Annotation.NewInstance(moveMessage, Language.DEFAULT());
+                       annotation.setAnnotationType(AnnotationType.TECHNICAL());
+                       targetDescription.addAnnotation(annotation);
                        
                        try {
                                AbstractPostOperation operation = new MoveDescriptionElementsOperation(
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java
new file mode 100644 (file)
index 0000000..abddcb7
--- /dev/null
@@ -0,0 +1,153 @@
+/**
+ * 
+ */
+package eu.etaxonomy.taxeditor.editor.view.descriptive.handler;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import javax.lang.model.element.Element;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
+import eu.etaxonomy.taxeditor.editor.Page;
+import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
+import eu.etaxonomy.taxeditor.editor.name.operation.ChangeAcceptedTaxonToSynonymOperation;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionToOtherTaxonOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
+
+/**
+ * <p>ChangeAcceptedTaxonToSynonymHandler class.</p>
+ *
+ * @author a.kohlbecker
+ * @created Okt. 11, 2013
+ * @version 1.0
+ * 
+ */
+public class MoveDescriptionToOtherTaxonHandler extends AbstractHandler
+               implements IHandler, IPostOperationEnabled {
+       private static final Logger logger = Logger
+                       .getLogger(MoveDescriptionToOtherTaxonHandler.class);
+       private MoveDescriptionToOtherTaxonOperation operation;
+
+       private UUID newAcceptedTaxonNodeUuid;
+       private TaxonNameEditor editor;
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+        */
+       /** {@inheritDoc} */
+       public Object execute(ExecutionEvent event) throws ExecutionException {
+               
+               ISelection selection = HandlerUtil.getCurrentSelection(event);
+               
+               if(selection instanceof IStructuredSelection){
+
+                       List<TaxonDescription> descriptions = new ArrayList<TaxonDescription>();
+                       
+                       IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+                       
+                       for(Object element : structuredSelection.toArray()){
+                               if (element instanceof TaxonDescription){
+                                       UUID uuid = ((TaxonDescription)element).getUuid();
+                                       descriptions.add((TaxonDescription) CdmStore.getService(IDescriptionService.class).load(uuid, null));
+                               }
+                       }
+                       if(descriptions.size() == 0){
+                               return null;
+                       }
+                       
+                       // Choose the target taxon                              
+                       List<UUID> excludeTaxa = new ArrayList<UUID>();
+                       editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME);
+                       excludeTaxa.add(descriptions.get(0).getTaxon().getUuid());
+                       TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), 
+                                       editor.getConversationHolder(), 
+                                       "Choose the accepted taxon", 
+                                       excludeTaxa, 
+                                       null, 
+                                       null);                  
+       
+                       if (newAcceptedTaxonNode == null) {
+                               return null;
+                       }
+                       
+                       newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
+                                       
+                       try {
+                               for(TaxonDescription description : descriptions){
+                                       operation = new MoveDescriptionToOtherTaxonOperation(event.getCommand().getName(), 
+                                                                                       editor.getUndoContext(), description, newAcceptedTaxonNode, this, editor);
+                                       EditorUtil.executeOperation(operation);
+                               }
+                               
+                       } catch (NotDefinedException e) {
+                               logger.warn("Command name not set");
+                       }
+               }
+               
+               return null;
+               
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
+        */
+       /** {@inheritDoc} */
+       public boolean postOperation(CdmBase objectAffectedByOperation) {
+               Display.getDefault().asyncExec(new Runnable(){
+
+                       public void run() {
+                               EditorUtil.close(editor.getMultiPageTaxonEditor());
+                               
+                               try {
+                                       MultiPageTaxonEditor possibleOpenEditor = (MultiPageTaxonEditor) EditorUtil.findEditorByTaxonNodeUuid(newAcceptedTaxonNodeUuid);
+                                       if(possibleOpenEditor != null){
+                                               EditorUtil.close(possibleOpenEditor);
+                                       }
+                                       EditorUtil.openTaxonNode(newAcceptedTaxonNodeUuid);
+                               } catch (PartInitException e) {
+                                       EditorUtil.error(this.getClass(), e);
+                                       throw new RuntimeException(e);
+                               } catch (Exception e) {
+                                       EditorUtil.warningDialog("Could not create Taxon", this, e.getMessage());
+                               }
+                       }
+                       
+               });
+               
+               
+               return true;
+       }
+
+       /**
+        * <p>onComplete</p>
+        *
+        * @return a boolean.
+        */
+       public boolean onComplete() {
+               // TODO Auto-generated method stub
+               return false;
+       }       
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/MoveDescriptionToOtherTaxonOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/MoveDescriptionToOtherTaxonOperation.java
new file mode 100644 (file)
index 0000000..d4eaf56
--- /dev/null
@@ -0,0 +1,117 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.editor.view.descriptive.operation;
+
+import org.apache.commons.lang.StringUtils;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.AnnotationType;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * <p>MoveDescriptionToOtherTaxonOperation</p>
+ *
+ * @author a.kohlbecker
+ * @created Okt. 11, 2013
+ */
+public class MoveDescriptionToOtherTaxonOperation extends
+               AbstractPersistentPostOperation {
+       
+       private TaxonNode newAcceptedTaxonNode;
+
+       private TaxonDescription description;
+       
+       /**
+        * <p>Constructor for ChangeAcceptedTaxonToSynonymOperation.</p>
+        *
+        * @param label a {@link java.lang.String} object.
+        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
+        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
+        * @param description a {@link TaxonDescription} object.
+        * @param targetTaxonNode a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
+        * @param conversationEnabled a {@link eu.etaxonomy.cdm.api.conversation.IConversationEnabled} object.
+        */
+       public MoveDescriptionToOtherTaxonOperation(String label,
+                       IUndoContext undoContext, TaxonDescription description, TaxonNode targetTaxonNode,
+                       IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
+               super(label, undoContext, postOperationEnabled, conversationEnabled); // FIXME is this the right constructor ???
+               this.description = description;
+               this.newAcceptedTaxonNode = targetTaxonNode;
+       }
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+
+               monitor.worked(20);
+               bind();
+               
+               String moveMessage = String.format("Description moved from %s", EditorUtil.getActiveMultiPageTaxonEditor().getTaxon());
+               if(description.isProtectedTitleCache()){
+                       String separator = "";
+                       if(!StringUtils.isBlank(description.getTitleCache())){
+                               separator = " - ";
+                       }
+                       description.setTitleCache(description.getTitleCache() + separator + moveMessage);
+               }
+               Annotation annotation = Annotation.NewInstance(moveMessage, Language.DEFAULT());
+               annotation.setAnnotationType(AnnotationType.TECHNICAL());
+               description.addAnnotation(annotation);
+               description.setTaxon(newAcceptedTaxonNode.getTaxon());
+               CdmStore.getService(IDescriptionService.class).saveOrUpdate(description);       
+               monitor.worked(40);
+        
+               return postExecute(description);
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public IStatus redo(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public IStatus undo(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+               // TODO Auto-generated method stub
+               return null;
+       }
+}
index b302a8ead9cb24191968cf44f35949e54690b83f..586dbfc0502730ee507419eaec24b46cbf52668c 100644 (file)
@@ -9,6 +9,7 @@
 
 package eu.etaxonomy.taxeditor.store;
 
+import java.io.Serializable;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
@@ -338,6 +339,18 @@ public class CdmStore {
                return getPermissionEvaluator().hasPermission(context.getAuthentication(), targetDomainObject, permission);
        }
 
+       /**
+        * @see org.springframework.security.access.PermissionEvaluator#hasPermission(org.springframework.security.core.Authentication, java.lang.Object, java.lang.Object)
+     *
+        * @param targetDomainObject
+        * @param permission 
+        * @return
+        */
+       public static boolean currentAuthentiationHasPermission(Class<? extends CdmBase> targetType, EnumSet<CRUD> permission){
+               SecurityContext context = SecurityContextHolder.getContext();
+               return getPermissionEvaluator().hasPermission(context.getAuthentication(), null, targetType.getName(), permission);
+       }
+       
        /*
         * LANGUAGE
         */
index 37e1f12060316fa4eb626e50b5838b474162fd1c..76a730a1bcbd7fc4bd90293a4bb28dd568542828 100644 (file)
@@ -54,8 +54,7 @@ public class LoginManager extends Observable implements IConversationEnabled, IC
         */
        public boolean authenticate(String username, String password){
 
-               // close all open editors, this will close all open conversations
-               // otherwise the users granted authorities might not be up to date
+               // close all open editors
                if(!StoreUtil.closeAll()){
                        return false;
                }