X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/bec9df5af7423ad65819c1ecc92f9f0bf61225ba..30eec98647380b4f756df25697209a42088d5fff:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java 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 1b6552d70..08efabd7e 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 @@ -10,6 +10,10 @@ package eu.etaxonomy.taxeditor.ui.selection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; @@ -18,20 +22,30 @@ import org.eclipse.swt.events.SelectionListener; import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade; import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException; +import eu.etaxonomy.cdm.api.service.IService; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.agent.Institution; import eu.etaxonomy.cdm.model.agent.Person; import eu.etaxonomy.cdm.model.agent.Team; -import eu.etaxonomy.cdm.model.common.ICdmBase; +import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.User; +import eu.etaxonomy.cdm.model.molecular.Amplification; +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.MessagingUtils; import eu.etaxonomy.taxeditor.model.TextHelper; +import eu.etaxonomy.taxeditor.newWizard.AmplificationGeneralWizardPage; +import eu.etaxonomy.taxeditor.newWizard.PrimerWizardPage; import eu.etaxonomy.taxeditor.preference.PreferencesUtil; -import eu.etaxonomy.taxeditor.store.StoreUtil; -import eu.etaxonomy.taxeditor.ui.campanula.compatibility.IEntitySelectionElement; +import eu.etaxonomy.taxeditor.session.ICdmEntitySession; +import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled; +import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.section.agent.InstitutionWizardPage; import eu.etaxonomy.taxeditor.ui.section.agent.PersonWizardPage; @@ -39,37 +53,31 @@ import eu.etaxonomy.taxeditor.ui.section.agent.TeamWizardPage; import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameWizardPage; import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectionWizardPage; import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage; -import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldObservationDetailsWizardPage; -import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailsWizardPage; -import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldObservationGeneralWizardPage; +import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage; +import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage; +import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage; import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceWizardPage; import eu.etaxonomy.taxeditor.ui.section.user.UserDetailWizardPage; /** - *

- * EditFromSelectionWizard class. - *

- * * @author n.hoffmann * @created Jun 1, 2010 * @version 1.0 */ public class EditFromSelectionWizard extends Wizard implements - SelectionListener { - - private final IEntitySelectionElement selectionElement; - - /** - *

- * Constructor for EditFromSelectionWizard. - *

- * - * @param selectionElement - * a - * {@link eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement} - * object. - */ - public EditFromSelectionWizard(IEntitySelectionElement selectionElement) { + SelectionListener, ICdmEntitySessionEnabled { + + private ICdmEntitySession cdmEntitySession; + private ICdmEntitySession previousCdmEntitySession; + private final EntitySelectionElement selectionElement; + private CdmBase rootElement; + + public EditFromSelectionWizard(EntitySelectionElement selectionElement) { + if (CdmStore.isActive() && CdmStore.getCurrentSessionManager().isRemoting()) { + previousCdmEntitySession = CdmStore.getCurrentSessionManager().getActiveSession(); + cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true); + cdmEntitySession.bind(); + } this.selectionElement = selectionElement; this.setWindowTitle(String.format("Edit %s", TextHelper.deproxyClassName(selectionElement.getEntity().getClass()))); } @@ -79,70 +87,89 @@ public class EditFromSelectionWizard extends Wizard implements public void addPages() { CdmFormFactory formFactory = selectionElement.getFormFactory(); - ICdmBase entity = (ICdmBase) HibernateProxyHelper + CdmBase entity = (CdmBase) HibernateProxyHelper .deproxy(selectionElement.getEntity()); - - if (entity instanceof Reference) { + IService service = CdmStore.getService(entity); + rootElement = service.load(entity.getUuid()); + if (rootElement.isInstanceOf(Reference.class)) { addPage(new ReferenceWizardPage(formFactory, selectionElement.getConversationHolder(), - (Reference) entity)); - } else if (entity instanceof Team) { + (HibernateProxyHelper.deproxy(rootElement, Reference.class)))); + } else if (rootElement.isInstanceOf(Team.class)) { addPage(new TeamWizardPage(formFactory, - selectionElement.getConversationHolder(), (Team) entity)); - } else if (entity instanceof Person) { + selectionElement.getConversationHolder(), HibernateProxyHelper.deproxy(rootElement, Team.class))); + } else if (rootElement.isInstanceOf(Person.class)) { addPage(new PersonWizardPage(formFactory, - selectionElement.getConversationHolder(), (Person) entity)); - } else if (entity instanceof NonViralName) { + selectionElement.getConversationHolder(), HibernateProxyHelper.deproxy(rootElement, Person.class))); + } else if (rootElement.isInstanceOf(NonViralName.class)) { addPage(new NonViralNameWizardPage(formFactory, selectionElement.getConversationHolder(), - (NonViralName) entity)); - } else if (entity instanceof DerivedUnit) { + HibernateProxyHelper.deproxy(rootElement, NonViralName.class))); + } else if (rootElement.isInstanceOf(SpecimenOrObservationBase.class)) { DerivedUnitFacade facade; try { - facade = DerivedUnitFacade.NewInstance( - (DerivedUnit) entity, - PreferencesUtil.getDerivedUnitConfigurator()); + if(rootElement.isInstanceOf(DerivedUnit.class)){ + facade = DerivedUnitFacade.NewInstance( + HibernateProxyHelper.deproxy(rootElement, DerivedUnit.class), + PreferencesUtil.getDerivedUnitConfigurator()); + } + else { + facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, + HibernateProxyHelper.deproxy(rootElement, FieldUnit.class), + PreferencesUtil.getDerivedUnitConfigurator()); + } + } catch (DerivedUnitFacadeNotSupportedException e) { // we should never get here throw new IllegalStateException(); } - addPage(new FieldObservationGeneralWizardPage(formFactory, + addPage(new DerivedUnitGeneralWizardPage(formFactory, selectionElement.getConversationHolder(), facade)); - addPage(new GatheringEventDetailsWizardPage(formFactory, + addPage(new GatheringEventWizardPage(formFactory, selectionElement.getConversationHolder(), facade)); - addPage(new FieldObservationDetailsWizardPage(formFactory, + addPage(new FieldUnitWizardPage(formFactory, selectionElement.getConversationHolder(), facade)); - addPage(new DerivedUnitBaseWizardPage(formFactory, - selectionElement.getConversationHolder(), facade)); - } else if (entity instanceof Collection) { + if(facade.innerDerivedUnit()!=null){ + addPage(new DerivedUnitBaseWizardPage(formFactory, + selectionElement.getConversationHolder(), facade)); + } + } else if (rootElement.isInstanceOf(Collection.class)) { addPage(new CollectionWizardPage(formFactory, selectionElement.getConversationHolder(), - (Collection) entity)); - } else if (entity instanceof Institution) { + HibernateProxyHelper.deproxy(rootElement, Collection.class))); + } else if (rootElement instanceof Institution) { addPage(new InstitutionWizardPage(formFactory, selectionElement.getConversationHolder(), - (Institution) entity)); - } else if (entity instanceof User) { + HibernateProxyHelper.deproxy(rootElement, Institution.class))); + } else if (rootElement instanceof User) { addPage(new UserDetailWizardPage(formFactory, selectionElement.getConversationHolder(), - (User) entity)); - } else { - StoreUtil.warningDialog("Missing interface", this, + HibernateProxyHelper.deproxy(rootElement, User.class))); + } else if (rootElement instanceof Primer) { + addPage(new PrimerWizardPage(formFactory, + selectionElement.getConversationHolder(), + HibernateProxyHelper.deproxy(rootElement, Primer.class))); + } else if (rootElement instanceof Amplification) { + addPage(new AmplificationGeneralWizardPage(formFactory, + selectionElement.getConversationHolder(), + HibernateProxyHelper.deproxy(rootElement, Amplification.class))); + } else { + MessagingUtils.warningDialog("Missing interface", this, "No detail element for current selection"); } } - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.wizard.Wizard#performFinish() - */ /** {@inheritDoc} */ @Override public boolean performFinish() { + IService service = CdmStore.getService(rootElement); + service.merge(rootElement, true); + if(previousCdmEntitySession!=null){ + previousCdmEntitySession.load(rootElement, true); + } return true; } @@ -160,4 +187,30 @@ public class EditFromSelectionWizard extends Wizard implements @Override public void widgetDefaultSelected(SelectionEvent e) { } + + @Override + public void dispose() { + super.dispose(); + if(cdmEntitySession != null) { + cdmEntitySession.dispose(); + } + if(previousCdmEntitySession!=null){ + previousCdmEntitySession.bind(); + } + } + + @Override + public ICdmEntitySession getCdmEntitySession() { + return cdmEntitySession; + } + + @Override + public java.util.Collection getRootEntities() { + return Collections.singleton(rootElement); + } + + @Override + public Map> getPropertyPathsMap() { + return null; + } }