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;
@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;
<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
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){
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>
}
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;
}
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
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()) {
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();
affectedObjects.add(parentNode);
}
}
+<<<<<<< HEAD
+=======
+
+
+
+>>>>>>> hotfix/3.12.4
if(CdmStore.getCurrentSessionManager().isRemoting()) {
CdmApplicationState.getCurrentDataChangeService()
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;
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;
/** {@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) {
/** {@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);
Display.getCurrent().asyncExec(delaySelection);
}
}
+
+
/** {@inheritDoc} */
@Override
this.part = part;
Object element = selection.getFirstElement();
-
- getViewer().setInput(element);
-
- showViewer();
+ getViewer().setInput(element);
+ showViewer();
}
/**