From dcfb27f450c6380691eb1ba6d26911a28ad5fb79 Mon Sep 17 00:00:00 2001 From: "n.hoffmann" Date: Tue, 11 Aug 2009 13:55:32 +0000 Subject: [PATCH] fixes #888 and #889 --- .../taxeditor/editor/AbstractTaxonEditor.java | 14 ++++-- .../editor/CompositeBorderDecorator.java | 4 -- .../taxeditor/editor/DuplicateArbitrator.java | 23 +++++++--- .../editor/MultiPageTaxonEditor.java | 3 +- .../description/TaxonDescriptionEditor.java | 9 ++++ .../editor/images/TaxonImageEditor.java | 9 ++++ .../editor/name/AcceptedNameComposite.java | 2 + .../editor/name/ConceptComposite.java | 2 + .../editor/name/MisappliedNameComposite.java | 1 + .../taxeditor/editor/name/NameComposite.java | 1 - .../editor/name/SynonymComposite.java | 2 + .../editor/name/TaxonNameEditor.java | 44 ++++++++++++------- .../taxeditor/dialogs/LoginDialog.java | 5 ++- 13 files changed, 85 insertions(+), 34 deletions(-) diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditor.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditor.java index 14735bec8..7657f3d6d 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditor.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/AbstractTaxonEditor.java @@ -221,7 +221,7 @@ public abstract class AbstractTaxonEditor extends EditorPart implements IAdaptab } protected void createManagedForm(Composite composite) { - + managedForm = new ManagedForm(composite) { public void dirtyStateChanged() { firePropertyChange(PROP_DIRTY); @@ -250,7 +250,7 @@ public abstract class AbstractTaxonEditor extends EditorPart implements IAdaptab parent.setLayout(new TableWrapLayout()); parent.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); } - + @SuppressWarnings("unchecked") public Object getAdapter(Class type) { if (type == IPropertySheetPage.class) { @@ -410,7 +410,8 @@ public abstract class AbstractTaxonEditor extends EditorPart implements IAdaptab isRedrawing = true; this.selectedObject = null; - managedForm.getForm().dispose(); + managedForm.getForm().dispose(); + this.resetGroupComposites(); createManagedForm(partComposite); setFocus(); @@ -421,7 +422,12 @@ public abstract class AbstractTaxonEditor extends EditorPart implements IAdaptab } - public boolean getIsRedrawing() { + /** + * + */ + protected abstract void resetGroupComposites(); + + public boolean isRedrawing() { return isRedrawing; } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java index d6b07eb85..ee9f70290 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/CompositeBorderDecorator.java @@ -18,8 +18,6 @@ import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; -import eu.etaxonomy.taxeditor.editor.description.DescriptionElementComposite; - /** * Draws a border on a Composite on an IManagedForm when it gets focus, * undraws it when the Composite loses focus. @@ -85,7 +83,6 @@ public class CompositeBorderDecorator implements FocusListener { * Removes the border from borderedComposite. */ public void unpaintBorder() { - logger.warn("unpainting " + borderedComposite); paintBorder(null); } @@ -93,7 +90,6 @@ public class CompositeBorderDecorator implements FocusListener { * Adds a border to borderedComposite. */ public void paintBorder() { - logger.warn("painting " + borderedComposite.getParent()); paintBorder(FormToolkit.TEXT_BORDER); } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/DuplicateArbitrator.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/DuplicateArbitrator.java index e14efe859..02a5f399d 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/DuplicateArbitrator.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/DuplicateArbitrator.java @@ -9,6 +9,7 @@ package eu.etaxonomy.taxeditor.editor; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -16,11 +17,14 @@ import java.util.Set; import org.apache.log4j.Logger; +import eu.etaxonomy.cdm.api.service.ICommonService; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.name.NonViralName; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.reference.ReferenceBase; +import eu.etaxonomy.cdm.model.reference.StrictReferenceBase; import eu.etaxonomy.cdm.model.taxon.TaxonBase; +import eu.etaxonomy.cdm.strategy.match.MatchException; import eu.etaxonomy.taxeditor.editor.name.NameComposite; import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor; import eu.etaxonomy.taxeditor.store.CdmStore; @@ -50,12 +54,16 @@ public class DuplicateArbitrator { private Map duplicateNames; + private ICommonService commonService; + /** * @param adaptableObject */ public DuplicateArbitrator(MultiPageTaxonEditor editor) { this.editor = editor; + commonService = CdmStore.getCommonService(); + nameEditor = (TaxonNameEditor) editor.getPage(Page.NAME); duplicateReferences = new HashMap(); @@ -121,17 +129,22 @@ public class DuplicateArbitrator { NonViralName name = getName(taxonBase); try{ - ReferenceBase referenceBase = name.getNomenclaturalReference(); + StrictReferenceBase referenceBase = (StrictReferenceBase) name.getNomenclaturalReference(); + + List matches = commonService.findMatching(referenceBase, null); - // query datasource for the reference - List result = CdmStore.getReferenceService().getReferencesByTitle(referenceBase.getTitleCache()); +// // query datasource for the reference +// List result = CdmStore.getReferenceService().getReferencesByTitle(referenceBase.getTitleCache()); // if query delivers results, place possible duplicate in map - for(ReferenceBase duplicateReference : result){ + for(ReferenceBase duplicateReference : matches){ duplicateReferences.put(taxonBase, duplicateReference); } }catch(NullPointerException e){ logger.warn("Name has no nomenclatural reference"); + } catch (MatchException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } @@ -149,7 +162,7 @@ public class DuplicateArbitrator { private void checkDuplicateLatinNames(TaxonBase taxonBase) { NonViralName name = getName(taxonBase); - List result = CdmStore.getNameService().findNamesByTitle(name.getTitleCache()); + List result = new ArrayList(); //commonService.findMatching(name, null); for(Object object: result ){ TaxonNameBase duplicateName = HibernateProxyHelper.deproxy(object, TaxonNameBase.class); diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java index afadeb495..2b8e34620 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java @@ -106,7 +106,8 @@ public class MultiPageTaxonEditor extends MultiPageEditorPart implements IConver DuplicateArbitrator duplicateArbitrator = (DuplicateArbitrator) getAdapter(DuplicateArbitrator.class); if(duplicateArbitrator != null){ - duplicateArbitrator.arbitrate(); + // disable for now because of transaction problems. +// duplicateArbitrator.arbitrate(); } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionEditor.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionEditor.java index 231af1c50..8839280b0 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionEditor.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionEditor.java @@ -225,4 +225,13 @@ public class TaxonDescriptionEditor extends AbstractTaxonEditor public String getID() { return TaxonDescriptionEditor.ID; } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.editor.AbstractTaxonEditor#resetGroupComposites() + */ + @Override + protected void resetGroupComposites() { + // TODO Auto-generated method stub + + } } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/images/TaxonImageEditor.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/images/TaxonImageEditor.java index 43ffad6ad..3974e8201 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/images/TaxonImageEditor.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/images/TaxonImageEditor.java @@ -119,4 +119,13 @@ public class TaxonImageEditor extends AbstractTaxonEditor { public String getID() { return TaxonImageEditor.ID; } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.editor.AbstractTaxonEditor#resetGroupComposites() + */ + @Override + protected void resetGroupComposites() { + // TODO Auto-generated method stub + + } } \ No newline at end of file diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/AcceptedNameComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/AcceptedNameComposite.java index 4058b4773..09f54aedb 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/AcceptedNameComposite.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/AcceptedNameComposite.java @@ -30,6 +30,8 @@ public class AcceptedNameComposite extends NameComposite { public AcceptedNameComposite(AbstractTaxonEditor editor, Composite groupComposite) { super(editor, groupComposite, editor.getTaxon()); + + initializeComposite(); } public void initializeComposite(){ diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/ConceptComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/ConceptComposite.java index e21337687..1514c6e71 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/ConceptComposite.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/ConceptComposite.java @@ -47,6 +47,8 @@ public class ConceptComposite extends NameComposite { this.relatedTaxon = relatedTaxon; this.relationshipType = relationshipType; this.setAcceptedTaxonIsFromTaxon(acceptedTaxonIsFromTaxon); + + initializeComposite(); } /* (non-Javadoc) diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/MisappliedNameComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/MisappliedNameComposite.java index b532e2b4b..72b853f11 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/MisappliedNameComposite.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/MisappliedNameComposite.java @@ -31,6 +31,7 @@ public class MisappliedNameComposite extends NameComposite { public MisappliedNameComposite(TaxonNameEditor editor, Composite parent, Taxon misappliedName) { super(editor, parent, misappliedName); + initializeComposite(); } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/NameComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/NameComposite.java index 3264e1398..4b2b10349 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/NameComposite.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/NameComposite.java @@ -149,7 +149,6 @@ public abstract class NameComposite extends GroupedComposit createEmptyViewerPrompt(EMPTY_NAME_PROMPT); - initializeComposite(); createParser(); } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/SynonymComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/SynonymComposite.java index ad5fb4612..adf29f4f9 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/SynonymComposite.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/SynonymComposite.java @@ -36,6 +36,8 @@ public class SynonymComposite extends NameComposite { public SynonymComposite(TaxonNameEditor editor, Composite parent, Synonym synonym) { super(editor, parent, synonym); + + initializeComposite(); } /* (non-Javadoc) diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java index 062d1eedb..945a72f8d 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java @@ -63,8 +63,14 @@ public class TaxonNameEditor extends AbstractTaxonEditor private static final String ID = "eu.etaxonomy.taxeditor.taxonNameEditor"; + private Map homotypicGroupComposites; + + private MisappliedGroupComposite misappliedGroupComposite; + + private ConceptGroupComposite conceptGroupComposite; + public TaxonNameEditor(MultiPageTaxonEditor editor){ - super(editor); + super(editor); } /** @@ -78,12 +84,6 @@ public class TaxonNameEditor extends AbstractTaxonEditor } } }; - - private Map homotypicGroupComposites; - - private MisappliedGroupComposite misappliedGroupComposite; - - private ConceptGroupComposite conceptGroupComposite; @Override public void doSave(IProgressMonitor monitor) {} @@ -266,6 +266,9 @@ public class TaxonNameEditor extends AbstractTaxonEditor public Composite getMisappliedGroup() { + if (misappliedGroupComposite == null) { + misappliedGroupComposite = createMisappliedGroup(); + } return misappliedGroupComposite; } @@ -296,6 +299,9 @@ public class TaxonNameEditor extends AbstractTaxonEditor public Composite getConceptGroup() { + if (conceptGroupComposite == null) { + conceptGroupComposite = createConceptGroup(); + } return conceptGroupComposite; } @@ -359,7 +365,9 @@ public class TaxonNameEditor extends AbstractTaxonEditor groupComposite.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER); getManagedForm().getToolkit().paintBordersFor(groupComposite.getParent()); - getHomotypicGroups().put(group, groupComposite); + Map groups = getHomotypicGroups(); + + groups.put(group, groupComposite); return groupComposite; } @@ -387,9 +395,6 @@ public class TaxonNameEditor extends AbstractTaxonEditor // If there is no composite for misapplied names, // create one and add it to the repository Composite groupComposite = getMisappliedGroup(); - if (groupComposite == null) { - groupComposite = createMisappliedGroup(); - } // Create the name's composite Composite composite = new MisappliedNameComposite(this, groupComposite, misappliedName); @@ -404,7 +409,6 @@ public class TaxonNameEditor extends AbstractTaxonEditor misappliedGroupComposite.addFocusListener(new CompositeBorderDecorator(misappliedGroupComposite, this.getManagedForm())); // Put the group composite before concept group composite, if any - Composite conceptGroupComposite = this.getConceptGroup(); if (conceptGroupComposite != null) { misappliedGroupComposite.moveAbove(conceptGroupComposite); } @@ -417,9 +421,6 @@ public class TaxonNameEditor extends AbstractTaxonEditor // If there is no composite for misapplied names, // create one and add it to the repository Composite groupComposite = this.getConceptGroup(); - if (groupComposite == null) { - groupComposite = createConceptGroup(); - } // Create the name's composite Composite composite = ConceptComposite.getNewInstance(this, groupComposite, relationship); @@ -428,13 +429,12 @@ public class TaxonNameEditor extends AbstractTaxonEditor } - public Composite createConceptGroup() { + public ConceptGroupComposite createConceptGroup() { // Create the group composite conceptGroupComposite = new ConceptGroupComposite(this, this.getTopLevelComposite()); conceptGroupComposite.addFocusListener(new CompositeBorderDecorator(conceptGroupComposite, this.getManagedForm())); // Put the group composite after misapplied group composite, if any - Composite misappliedGroupComposite = this.getMisappliedGroup(); if (misappliedGroupComposite != null) { conceptGroupComposite.moveBelow(misappliedGroupComposite); } @@ -442,4 +442,14 @@ public class TaxonNameEditor extends AbstractTaxonEditor return conceptGroupComposite; } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.editor.AbstractTaxonEditor#resetGroupComposites() + */ + @Override + protected void resetGroupComposites() { + conceptGroupComposite = null; + misappliedGroupComposite = null; + homotypicGroupComposites = null; + } } \ No newline at end of file diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/LoginDialog.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/LoginDialog.java index 73f0abce5..c7a3e041f 100644 --- a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/LoginDialog.java +++ b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/LoginDialog.java @@ -112,12 +112,13 @@ public class LoginDialog extends Dialog { CdmStore.getLoginManager().authenticate(token); }catch(BadCredentialsException e){ logger.error("Bad credentials", e); - StoreUtil.warningDialog("Could not authenticate. Reason: Bad Credentials"); + StoreUtil.warningDialog("Could not authenticate. Reason: Bad Credentials."); }catch(LockedException e){ logger.error("Account is locked", e); - StoreUtil.warningDialog("Could not authenticate. Reason: Account is locked"); + StoreUtil.warningDialog("Could not authenticate. Reason: Account is locked."); }catch(IllegalArgumentException e){ logger.error("Null argument for either user or password", e); + StoreUtil.warningDialog("Could not authenticate. Reason: Username and/or Password empty."); } super.okPressed(); -- 2.34.1