Merge branch 'hotfix/3.12.4' into develop
authorjenkins <jenkins-int@bgbm.org>
Mon, 15 Feb 2016 09:31:03 +0000 (10:31 +0100)
committerjenkins <jenkins-int@bgbm.org>
Mon, 15 Feb 2016 09:31:03 +0000 (10:31 +0100)
Conflicts:
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/source/CdmServerInfo.java - resolved
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java - UNRESOLVED!!!!!

eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/cache/CdmServiceCacher.java
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/ChangeSynonymToAcceptedTaxonHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmEditorViewPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmViewPart.java

index daf03e1dfdce2502b5cfd2f1bd5a100571c2dfc9..dcfff9f24c6ce8ad71b32bbab38ca1125394aa88 100644 (file)
@@ -10,6 +10,7 @@ import org.springframework.stereotype.Component;
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.TermBase;
 import eu.etaxonomy.taxeditor.remoting.cache.CacheLoader;
 import eu.etaxonomy.taxeditor.remoting.cache.CdmEntityCacheKey;
 import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
@@ -76,7 +77,8 @@ public class CdmServiceCacher extends CdmCacher  implements ICdmEntitySessionMan
 
     @Override
     public boolean isCachable(CdmBase cdmEntity) {
-        if(cdmEntity != null && cdmEntity instanceof DefinedTermBase) {
+     //   if(cdmEntity != null && cdmEntity instanceof DefinedTermBase) {
+          if(cdmEntity != null && cdmEntity instanceof TermBase) {
             return true;
         }
         return false;
index 1795b73afead863711963eec6cdb9840b23b379b..eb5070d240c4b7d07f9e684db1852bc657e7df43 100644 (file)
                         <reference
                               definitionId="isMisapplication">
                         </reference>
+                        <reference
+                              definitionId="isHomotypicSynonymOfAcceptedTaxon">
+                        </reference>
                      </or>
                   </not>
                </visibleWhen>
             </test>
          </with>
       </definition>
+      <definition
+            id="isNotHomotypicSynonymOfAcceptedTaxon">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isHomotypicSynonymOfAcceptedTaxon">
+            </test>
+         </with>
+      </definition>
       <definition
             id="isSynonym">
          <with
             name="%scheme.name">
       </scheme>
    </extension>
-    <extension
+    <!--extension
          point="org.eclipse.ui.importWizards">
       <wizard
             category="eu.etaxonomy.taxeditor.import.category.cdm"
             %wizard.description
          </description>
       </wizard>
-   </extension>
+   </extension-->
    <extension
           point="eu.etaxonomy.taxeditor.store.cdmViewer">
       <viewCommandMapping
index c6a9a0cd843ad506a4354b548984f49fc1f9b0be..5d5f449d254145e6c856a80a7e762fa58df015c8 100644 (file)
@@ -89,9 +89,9 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme
                TaxonNode parentNode = (TaxonNode) HibernateProxyHelper.deproxy(((TaxonEditorInput) input).getTaxonNode().getParent());
 
                List<UUID> excludeTaxa = new ArrayList<UUID>();
-               excludeTaxa.add(taxon.getUuid());
+               //excludeTaxa.add(taxon.getUuid());//there are some cases where the accepted taxon should be the parent of the new created accepted taxon
 
-               TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Select parent", excludeTaxa, null, ((TaxonEditorInput) input).getTaxonNode().getClassification());
+               TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Select parent", null, null, ((TaxonEditorInput) input).getTaxonNode().getClassification());
 
 
                if(newParentNode != null){
index 73c2f94d0eeb09e1a0c80aa04ed91d2a75adbd4c..270d9aa2dc3b01bb73ecd504624230f5bc087ac1 100644 (file)
@@ -35,6 +35,8 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
        private static final String CONCEPT = "isConceptRelation";
        private static final String EMPTY_NAMES = "hasEmptyNames";
        private static final String ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS = "isAcceptedAndHasNoHomotypicSynonyms";
+       private static final String HOMOTYPIC_SYNONYM_OF_ACCEPTED = "isHomotypicSynonymOfAcceptedTaxon";
+       
 
        /**
         * <p>Constructor for NameEditorMenuPropertyTester.</p>
@@ -76,7 +78,10 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
                        }
                        else if(ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS.equals(property)){
                                return isAcceptedAndHasNoHomotypicSynonyms(selectedElement);
+                       }else if (HOMOTYPIC_SYNONYM_OF_ACCEPTED.equals(property)){
+                               return isHomotypicSynonymOfAcceptedTaxon(selectedElement);
                        }
+                       
                }
 
                return false;
@@ -90,6 +95,19 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
                }
                return false;
        }
+       
+       private boolean isHomotypicSynonymOfAcceptedTaxon(Object selectedElement) {
+               if (isSynonym(selectedElement)){
+                       Synonym synonym = (Synonym) selectedElement;
+                       for (Taxon taxon:synonym.getAcceptedTaxa()){
+                               if (taxon.getHomotypicGroup().equals(synonym.getHomotypicGroup())){
+                                       return false;
+                               }
+                       }
+               }
+               return true;
+       }
+
 
        /**
         * @param receiver
index bc26d72abac1b5b2c325ea397283678bc8d9f2a6..1418de783873e8b328ecf9fb06852c57daf1899f 100644 (file)
@@ -56,8 +56,20 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
             Reference sec = taxon.getSec();
             taxon.setSec(null);
             try{
+<<<<<<< HEAD
                UpdateResult result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(), taxon, parent.getReference(), parent.getMicroReference());
                        
+=======
+               UUID parentNodeUuid;
+               if(parent instanceof Classification){
+                   parentNodeUuid = ((Classification) parent).getRootNode().getUuid();
+               }
+               else{
+                   parentNodeUuid = parent.getUuid();
+               }
+                UpdateResult result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parentNodeUuid, taxon, parent.getReference(), parent.getMicroReference());
+
+>>>>>>> hotfix/3.12.4
                 //TaxonNode taxonNode = parent.addChildTaxon(taxon, parent.getReference(), parent.getMicroReference());
 
               /*  if(CdmStore.getCurrentSessionManager().isRemoting()) {
@@ -68,7 +80,11 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
                generatedTaxonNodeUuid = result.getCdmEntity().getUuid();
                TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(generatedTaxonNodeUuid);
                taxonNode.getTaxon().setSec(sec);
+<<<<<<< HEAD
                CdmStore.getService(ITaxonNodeService.class).merge(taxonNode);
+=======
+               CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true);
+>>>>>>> hotfix/3.12.4
                 Set<CdmBase> affectedObjects = new HashSet<CdmBase>();
                 if (result.getUpdatedObjects().iterator().hasNext()){
                        TaxonNode parentNode = (TaxonNode)result.getUpdatedObjects().iterator().next();
@@ -79,9 +95,15 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<ITaxonTreeNode>{
                         affectedObjects.add(parentNode);
                     }
                 }
+<<<<<<< HEAD
                 
 
                 
+=======
+
+
+
+>>>>>>> hotfix/3.12.4
 
                 if(CdmStore.getCurrentSessionManager().isRemoting()) {
                     CdmApplicationState.getCurrentDataChangeService()
index 78364f887c609683976670c83fa32bb93b28924d..043587499ddc7955ad65fd147b547c2f603a59f5 100644 (file)
@@ -145,6 +145,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                         }
                     }
                 }
+               
             }
         }
     }
index 2a07ef5f8c91e187718e66a4e374071c7dbfee8f..c4e708be4e800d7d7a2f674de5d0ec765fcd504c 100644 (file)
@@ -8,6 +8,7 @@ import java.util.Observable;
 import java.util.Observer;
 
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -23,6 +24,7 @@ import org.springframework.security.core.GrantedAuthority;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.api.service.IService;
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Group;
@@ -419,6 +421,13 @@ public class EntitySelectionElement<T extends CdmBase> extends
                /** {@inheritDoc} */
                @Override
                public void widgetSelected(SelectionEvent e) {
+
+               IService<T> service = CdmStore.getService(entity);
+               T loadedEntity = service.load(entity.getUuid());
+            if (loadedEntity==null){
+                   MessageDialog.openInformation(null,"Save changes", "You have made changes that must be saved before this query can be executed");
+                   return;
+               }
                        WizardDialog dialog = new WizardDialog(selectionElement.getShell(),
                                        new EditFromSelectionWizard(selectionElement));
                        if (dialog.open() == IStatus.OK) {
index 9262e041697a4fc3bb5876c0746318a23f69f0c7..854481faa09dd6aeace3ee90351cf49d075073a9 100644 (file)
@@ -78,7 +78,11 @@ public abstract class AbstractCdmEditorViewPart extends AbstractCdmViewPart {
     /** {@inheritDoc} */
     @Override
     public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-        if(delaySelection==null){
+       /*to avoid widget is disposed exceptions
+        if(getViewer().getControl().isDisposed()){
+            return;
+        }*/
+       if(delaySelection==null){
             delaySelection = new DelaySelection(part, selection);
         }
         delaySelection.setPart(part);
@@ -88,6 +92,8 @@ public abstract class AbstractCdmEditorViewPart extends AbstractCdmViewPart {
             Display.getCurrent().asyncExec(delaySelection);
         }
     }
+    
+    
 
     /** {@inheritDoc} */
     @Override
index f9cedbdb8dd9de570e31e1d1243aa24c7d4b8341..35483a8723e72c7789b96de3dada2b63af60e448 100644 (file)
@@ -109,10 +109,8 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
         this.part = part;
 
         Object element = selection.getFirstElement();
-
-        getViewer().setInput(element);
-
-        showViewer();
+               getViewer().setInput(element);
+               showViewer();
     }
 
     /**