package eu.etaxonomy.taxeditor.editor.view.derivate;
+import java.util.UUID;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.actions.CompoundContributionItem;
import org.eclipse.ui.handlers.IHandlerService;
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
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.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.store.CdmStore;
public class CreateDerivateContextMenu extends CompoundContributionItem {
- private final IHandlerService handlerService = (IHandlerService) EditorUtil.getService(IHandlerService.class);
+ private final IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
/* (non-Javadoc)
* @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
@Override
public void widgetSelected(SelectionEvent e) {
- IOccurrenceService occurrenceService = CdmStore.getCurrentApplicationConfiguration().getOccurrenceService();
- SpecimenOrObservationBase fieldUnit = occurrenceService.load(((FieldUnit) selectedElement).getUuid());
+ ICdmApplicationConfiguration currentApplicationConfiguration = CdmStore.getCurrentApplicationConfiguration();
+// TransactionStatus transaction = currentApplicationConfiguration.startTransaction();
+ IOccurrenceService occurrenceService = currentApplicationConfiguration.getOccurrenceService();
+ FieldUnit fieldUnit = (FieldUnit)selectedElement;
+ UUID uuid = fieldUnit.getUuid();
+ fieldUnit = (FieldUnit) occurrenceService.load(uuid);
+// fieldUnit = (FieldUnit)HibernateProxyHelper.deproxy(fieldUnit);
DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
fieldUnit.addDerivationEvent(DerivationEvent.NewSimpleInstance(fieldUnit, specimen, DerivationEventType.GATHERING_IN_SITU()));
specimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
-// specimen.getTitleCache(); //update title cache
+ specimen.getTitleCache(); //update title cache
IWorkbenchPart activePart = AbstractUtility.getActivePart();
- occurrenceService.saveOrUpdate(fieldUnit);
+// occurrenceService.saveOrUpdate(fieldUnit);
+// occurrenceService.saveOrUpdate(specimen);
+// currentApplicationConfiguration.commitTransaction(transaction);
if(activePart instanceof DerivateView){
DerivateView derivateView = (DerivateView)activePart;
derivateView.viewer.refresh();
+ derivateView.getEditor().doSave(new NullProgressMonitor());
}
-// DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
-// fieldUnit.addDerivationEvent(DerivationEvent.NewSimpleInstance(fieldUnit, specimen, DerivationEventType.GATHERING_IN_SITU()));
-// specimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
-// specimen.getTitleCache(); //update title cache
-// IEditorPart activeEditor = AbstractUtility.getActiveEditor();
-// IWorkbenchPart activePart = AbstractUtility.getActivePart();
-// ConversationHolder conversation = CdmStore.createConversation();
-// CdmStore.getService(IOccurrenceService.class).saveOrUpdate(fieldUnit);
-// conversation.commit();
-// conversation.close();
-// if(activePart instanceof DerivateView){
-// DerivateView derivateView = (DerivateView)activePart;
-// derivateView.viewer.refresh();
-// }
}
@Override