import eu.etaxonomy.cdm.model.location.Country;
import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.molecular.DnaSample;
+import eu.etaxonomy.cdm.model.molecular.Sequence;
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveDerivate(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.occurrence.DerivedUnit)
+ */
+ @Override
+ public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
+ return defaultService.moveDerivate(from, to, derivate);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveSequence(eu.etaxonomy.cdm.model.molecular.DnaSample, eu.etaxonomy.cdm.model.molecular.DnaSample, eu.etaxonomy.cdm.model.molecular.Sequence)
+ */
+ @Override
+ public boolean moveSequence(DnaSample from, DnaSample to, Sequence sequence) {
+ return defaultService.moveSequence(from, to, sequence);
+ }
+
}
import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.swt.dnd.TransferData;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.model.molecular.Amplification;
import eu.etaxonomy.cdm.model.molecular.DnaSample;
import eu.etaxonomy.cdm.model.molecular.Sequence;
import eu.etaxonomy.cdm.model.molecular.SingleRead;
-import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* @author pplitzner
TreeNode targetNode = (TreeNode) target;
TreeNode draggednode = (TreeNode) ((IStructuredSelection) data).getFirstElement();
if(moveDropTarget(draggednode, targetNode)){
- derivateView.changed(null);
return true;
}
}
Object targetValue = target.getValue();
TreeNode dragParentNode = draggedObject.getParent();
Object dragParentSpecimen = dragParentNode.getValue();
+ IOccurrenceService occurrenceService = CdmStore.getService(IOccurrenceService.class);
// drag'n'drop for SpecimenOrObservationBase
if(dragValue instanceof DerivedUnit && targetValue instanceof SpecimenOrObservationBase<?>){
DerivedUnit draggedSpecimen = (DerivedUnit) dragValue;
SpecimenOrObservationBase<?> targetSpecimen = (SpecimenOrObservationBase<?>) targetValue;
- SpecimenOrObservationType dragType = draggedSpecimen.getRecordBasis();
- SpecimenOrObservationType targetType = targetSpecimen.getRecordBasis();
//check if type is a sub derivate type
- if(!dragParentNode.equals(target) //don't drag on direct parent node
- && (targetType==SpecimenOrObservationType.FieldUnit //dragging on FieldUnit always works (except when direct parent)
- || (dragType.isKindOf(targetType) && targetType!=dragType))){ //dragging only on parent derivate type
- //remove derivation event from parent specimen of dragged object
- DerivationEvent eventToRemove = null;
- if(dragParentSpecimen instanceof SpecimenOrObservationBase<?>){
- SpecimenOrObservationBase<?> parentDragSpecimen = (SpecimenOrObservationBase<?>) dragParentSpecimen;
- for(DerivationEvent event:parentDragSpecimen.getDerivationEvents()){
- if(event.getDerivatives().contains(draggedSpecimen)){
- eventToRemove = event;
- break;
- }
- }
- parentDragSpecimen.removeDerivationEvent(eventToRemove);
- }
- //add new derivation event to target
- targetSpecimen.addDerivationEvent(DerivationEvent.NewSimpleInstance(targetSpecimen, draggedSpecimen, eventToRemove==null?null:eventToRemove.getType()));
+ if(!dragParentNode.equals(target)//don't drag on direct parent node
+ && dragParentSpecimen instanceof SpecimenOrObservationBase<?>){
+ occurrenceService.moveDerivate((SpecimenOrObservationBase<?>)dragParentSpecimen, targetSpecimen, draggedSpecimen);
return true;
}
}
// drag'n'drop for Sequence
else if(dragValue instanceof Sequence && targetValue instanceof DnaSample ){
Sequence sequence = (Sequence)dragValue;
- //remove dragged sequence
if(dragParentSpecimen instanceof DnaSample){
- ((DnaSample) dragParentSpecimen).removeSequence(sequence);
+ occurrenceService.moveSequence((DnaSample)dragParentSpecimen, (DnaSample)targetValue, sequence);
+ return true;
}
- //drop on DnaSample
- ((DnaSample) targetValue).addSequence(sequence);
- return true;
}
return false;
}