From e4e1656cfefc79ffb9bee462ffc5ff0498cdf1a2 Mon Sep 17 00:00:00 2001
From: Patrick Plitzner
Date: Tue, 27 Oct 2015 14:13:32 +0100
Subject: [PATCH 1/1] Add support for generic SpecimenOrObservationBase class
to EntitySelectionElement and selection wizard
---
.../selection/SelectionDialogFactory.java | 8 ++-
...cimenOrObservationBaseSelectionDialog.java | 67 +++++++++++++++++++
.../IndividualsAssociationDetailElement.java | 36 ++--------
.../ui/selection/EditFromSelectionWizard.java | 25 +++++--
4 files changed, 99 insertions(+), 37 deletions(-)
create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SpecimenOrObservationBaseSelectionDialog.java
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java
index f6752d972..a90ce1c9b 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java
@@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.occurrence.Collection;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.Synonym;
@@ -103,10 +104,13 @@ public class SelectionDialogFactory {
return null;
}
if(clazz.equals(DerivedUnit.class)){
- return (T) DerivedUnitSelectionDialog.select(shell, conversation, (DerivedUnit) currentSelection);
+ return (T) DerivedUnitSelectionDialog.select(shell, conversation, (DerivedUnit) currentSelection);
}
if(clazz.equals(FieldUnit.class)){
- return (T) FieldUnitSelectionDialog.select(shell, conversation, (FieldUnit) currentSelection);
+ return (T) FieldUnitSelectionDialog.select(shell, conversation, (FieldUnit) currentSelection);
+ }
+ if(clazz.equals(SpecimenOrObservationBase.class)){
+ return (T) SpecimenOrObservationBaseSelectionDialog.select(shell, conversation, (SpecimenOrObservationBase) currentSelection);
}
if(clazz.equals(NamedArea.class)){
if(parentElement instanceof IEntityElement && ((IEntityElement) parentElement).getEntity() instanceof DerivedUnitFacade){
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SpecimenOrObservationBaseSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SpecimenOrObservationBaseSelectionDialog.java
new file mode 100644
index 000000000..589b08440
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SpecimenOrObservationBaseSelectionDialog.java
@@ -0,0 +1,67 @@
+// $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.ui.dialog.selection;
+
+import java.util.UUID;
+
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
+import eu.etaxonomy.taxeditor.newWizard.NewDerivedUnitBaseWizard;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author pplitzner
+ */
+public class SpecimenOrObservationBaseSelectionDialog extends
+ AbstractFilteredCdmResourceSelectionDialog {
+
+ public static SpecimenOrObservationBase select(Shell shell, ConversationHolder conversation, SpecimenOrObservationBase observation){
+ SpecimenOrObservationBaseSelectionDialog dialog = new SpecimenOrObservationBaseSelectionDialog(shell, conversation,
+ "Choose field unit or derived unit", false, SpecimenOrObservationBaseSelectionDialog.class.getCanonicalName(), observation);
+ return getSelectionFromDialog(dialog);
+ }
+
+ protected SpecimenOrObservationBaseSelectionDialog(Shell shell, ConversationHolder conversation,
+ String title, boolean multi, String settings,
+ SpecimenOrObservationBase cdmObject) {
+ super(shell, conversation, title, multi, settings, cdmObject);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected SpecimenOrObservationBase getPersistentObject(UUID uuid) {
+ Object object = CdmStore.getService(IOccurrenceService.class).load(uuid);
+ return HibernateProxyHelper.deproxy(object, SpecimenOrObservationBase.class);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected void initModel() {
+ model = CdmStore.getService(IOccurrenceService.class).getUuidAndTitleCache();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
+ return new NewDerivedUnitBaseWizard();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected String getNewWizardLinkText() {
+ return String.format("Create a new %1s", "field unit/derived unit");
+ }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/IndividualsAssociationDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/IndividualsAssociationDetailElement.java
index acfbf7c6d..b91fc58b7 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/IndividualsAssociationDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/IndividualsAssociationDetailElement.java
@@ -1,9 +1,9 @@
// $Id$
/**
* Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy
+ * 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.
*/
@@ -16,7 +16,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -24,10 +24,6 @@ import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
/**
- *
- * IndividualsAssociationDetailElement class.
- *
- *
* @author n.hoffmann
* @created Jun 10, 2010
* @version 1.0
@@ -36,26 +32,8 @@ public class IndividualsAssociationDetailElement extends
AbstractDetailedDescriptionDetailElement {
private TextWithLabelElement text_description;
- private EntitySelectionElement selection_derivedUnit;
+ private EntitySelectionElement selection_derivedUnit;
- /**
- *
- * Constructor for IndividualsAssociationDetailElement.
- *
- *
- * @param formFactory
- * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
- * object.
- * @param formElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param entity
- * a
- * {@link eu.etaxonomy.cdm.model.description.IndividualsAssociation}
- * object.
- * @param style
- * a int.
- */
public IndividualsAssociationDetailElement(CdmFormFactory formFactory,
ICdmFormElement formElement, IndividualsAssociation entity,
int style) {
@@ -67,9 +45,9 @@ public class IndividualsAssociationDetailElement extends
protected void createControls(ICdmFormElement formElement,
IndividualsAssociation entity, int style) {
selection_derivedUnit = formFactory
- .createSelectionElement(DerivedUnit.class,
- getConversationHolder(), formElement, "Unit",
- CdmBase.deproxy(entity.getAssociatedSpecimenOrObservation(),DerivedUnit.class),
+ .createSelectionElement(SpecimenOrObservationBase.class,
+ getConversationHolder(), formElement, "Occurrence/Unit",
+ CdmBase.deproxy(entity.getAssociatedSpecimenOrObservation(),SpecimenOrObservationBase.class),
EntitySelectionElement.ALL, style);
text_description = formFactory.createMultiLineTextWithLabel(
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
index a91756818..22d5dd7a3 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
@@ -30,6 +30,9 @@ import eu.etaxonomy.cdm.model.molecular.Primer;
import eu.etaxonomy.cdm.model.name.NonViralName;
import eu.etaxonomy.cdm.model.occurrence.Collection;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
@@ -102,13 +105,21 @@ public class EditFromSelectionWizard extends Wizard implements
addPage(new NonViralNameWizardPage(formFactory,
selectionElement.getConversationHolder(),
(NonViralName) entity));
- } else if (entity instanceof DerivedUnit) {
+ } else if (entity instanceof SpecimenOrObservationBase) {
DerivedUnitFacade facade;
try {
- facade = DerivedUnitFacade.NewInstance(
- (DerivedUnit) entity,
- PreferencesUtil.getDerivedUnitConfigurator());
+ if(((SpecimenOrObservationBase) entity).isInstanceOf(DerivedUnit.class)){
+ facade = DerivedUnitFacade.NewInstance(
+ HibernateProxyHelper.deproxy(entity, DerivedUnit.class),
+ PreferencesUtil.getDerivedUnitConfigurator());
+ }
+ else {
+ facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit,
+ HibernateProxyHelper.deproxy(entity, FieldUnit.class),
+ PreferencesUtil.getDerivedUnitConfigurator());
+ }
+
} catch (DerivedUnitFacadeNotSupportedException e) {
// we should never get here
throw new IllegalStateException();
@@ -120,8 +131,10 @@ public class EditFromSelectionWizard extends Wizard implements
selectionElement.getConversationHolder(), facade));
addPage(new FieldUnitWizardPage(formFactory,
selectionElement.getConversationHolder(), facade));
- addPage(new DerivedUnitBaseWizardPage(formFactory,
- selectionElement.getConversationHolder(), facade));
+ if(facade.innerDerivedUnit()!=null){
+ addPage(new DerivedUnitBaseWizardPage(formFactory,
+ selectionElement.getConversationHolder(), facade));
+ }
} else if (entity instanceof Collection) {
addPage(new CollectionWizardPage(formFactory,
selectionElement.getConversationHolder(),
--
2.34.1