- fixed potential NPEs in Amplification DetailsView
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / AmplificationGeneralDetailElement.java
index 36f45695d4dc34b7840a2dc7f10d5dda33ae5cb8..c62ebf749b47732642ae0145bc819c2bbbe28eda 100644 (file)
@@ -9,13 +9,20 @@
 */
 package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
+import org.eclipse.swt.widgets.Label;
+
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.molecular.Amplification;
+import eu.etaxonomy.cdm.model.molecular.Cloning;
+import eu.etaxonomy.cdm.model.molecular.Primer;
+import eu.etaxonomy.cdm.model.molecular.Sequence;
+import eu.etaxonomy.cdm.model.occurrence.MaterialOrMethodEvent;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
@@ -86,22 +93,67 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement<
         numberGelRunningTime = formFactory.createNumberTextWithLabelElement(formElement, "Gel Ruinning Time (Min)", entity.getGelRunningTime(), style);
         textLadderUsed = formFactory.createTextWithLabelElement(formElement, "Ladder Used", entity.getLadderUsed(), style);
         textGelPhoto = formFactory.createTextWithLabelElement(formElement, "Gel Photo", "XXX", style);
-        comboPurificationMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Purification Mat. & Meth.", entity.getPurification().getDefinedMaterialOrMethod(), style);
+        comboPurificationMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Purification Mat. & Meth.",
+                entity.getPurification()==null?null:entity.getPurification().getDefinedMaterialOrMethod(), style);
 
+        Label createHorizontalSeparator1 = formFactory.createHorizontalSeparator(formElement, style);
+        createHorizontalSeparator1.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
         //first primer
-        textPrimerForwardName = formFactory.createTextWithLabelElement(formElement, "Forward Primer", entity.getForwardPrimer().getLabel(), style);
-        textPrimerForwardSequence = formFactory.createTextWithLabelElement(formElement, "Fw. Primer Sequence", entity.getForwardPrimer().getSequence().getSequenceString(), style);
-        selectionPrimerForwardReference = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Fw. Primer Reference", entity.getForwardPrimer().getPublishedIn(), EntitySelectionElement.ALL, style);
+        Primer forwardPrimer = entity.getForwardPrimer();
+        String initialName;
+        String initalSequenceString;
+        Reference initialReference;
+        if(forwardPrimer==null){
+            initialName = "";
+            initalSequenceString = null;
+            initialReference = null;
+        }
+        else{
+            initialName = forwardPrimer.getLabel();
+            initialReference = forwardPrimer.getPublishedIn();
+            if(forwardPrimer.getSequence()==null){
+                initalSequenceString = "";
+            }
+            else{
+                initalSequenceString = forwardPrimer.getSequence().getSequenceString();
+            }
+        }
+        textPrimerForwardName = formFactory.createTextWithLabelElement(formElement, "Forward Primer", initialName, style);
+        textPrimerForwardSequence = formFactory.createTextWithLabelElement(formElement, "Fw. Primer Sequence", initalSequenceString, style);
+        selectionPrimerForwardReference = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Fw. Primer Reference", initialReference, EntitySelectionElement.ALL, style);
 
         //second primer
-        textPrimerReverseName = formFactory.createTextWithLabelElement(formElement, "Reverse Primer", entity.getReversePrimer().getLabel(), style);
-        textPrimerReverseSequence = formFactory.createTextWithLabelElement(formElement, "Rv. Primer Sequence", entity.getReversePrimer().getSequence().getSequenceString(), style);
-        selectionPrimerReverseReference = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Rv. Primer Reference", entity.getReversePrimer().getPublishedIn(), EntitySelectionElement.ALL, style);
-
-        textCloningStrain = formFactory.createTextWithLabelElement(formElement, "Cloning Strain", entity.getCloning().getStrain(), style);
-        dateCloning = formFactory.createTimePeriodElement(formElement, "Cloning Date", entity.getCloning().getTimeperiod(), style);
-        selectionCloningStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Cloning Staff", entity.getCloning().getActor(), EntitySelectionElement.ALL, style);
-        comboCloningMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Cloning Mat. & Meth.", entity.getCloning().getDefinedMaterialOrMethod(), style);
+        Primer reversePrimer = entity.getForwardPrimer();
+        String initialNameReverse;
+        String initalSequenceStringReverse;
+        Reference initialReferenceReverse;
+        if(reversePrimer==null){
+            initialNameReverse = "";
+            initalSequenceStringReverse = null;
+            initialReferenceReverse = null;
+        }
+        else{
+            initialNameReverse = reversePrimer.getLabel();
+            initialReferenceReverse = reversePrimer.getPublishedIn();
+            if(reversePrimer.getSequence()==null){
+                initalSequenceStringReverse = "";
+            }
+            else{
+                initalSequenceStringReverse = reversePrimer.getSequence().getSequenceString();
+            }
+        }
+        textPrimerReverseName = formFactory.createTextWithLabelElement(formElement, "Reverse Primer", initialNameReverse, style);
+        textPrimerReverseSequence = formFactory.createTextWithLabelElement(formElement, "Rv. Primer Sequence", initalSequenceStringReverse, style);
+        selectionPrimerReverseReference = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Rv. Primer Reference", initialReferenceReverse, EntitySelectionElement.ALL, style);
+
+        Label createHorizontalSeparator = formFactory.createHorizontalSeparator(formElement, style);
+        createHorizontalSeparator.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+
+        Cloning cloning = entity.getCloning();
+        textCloningStrain = formFactory.createTextWithLabelElement(formElement, "Cloning Strain", cloning==null?"":cloning.getStrain(), style);
+        dateCloning = formFactory.createTimePeriodElement(formElement, "Cloning Date", cloning==null?null:cloning.getTimeperiod(), style);
+        selectionCloningStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Cloning Staff", cloning==null?null:cloning.getActor(), EntitySelectionElement.ALL, style);
+        comboCloningMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Cloning Mat. & Meth.", cloning==null?null:cloning.getDefinedMaterialOrMethod(), style);
     }
 
     /*
@@ -113,6 +165,112 @@ public class AmplificationGeneralDetailElement extends AbstractCdmDetailElement<
      */
     @Override
     public void handleEvent(Object eventSource) {
+        if(eventSource==comboMarker){
+            getEntity().setDnaMarker(comboMarker.getSelection());
+        }
+        else if(eventSource==dateAmplification){
+            getEntity().setTimeperiod(dateAmplification.getTimePeriod());
+        }
+        else if(eventSource==selectionAmplificationStaff){
+            getEntity().setActor(selectionAmplificationStaff.getEntity());
+        }
+        else if(eventSource==textAmplificationSuccess){
+            getEntity().setSuccessful(Boolean.valueOf(textAmplificationSuccess.getText()));
+        }
+        else if(eventSource==textAmplificationSuccessDetails){
+            getEntity().setSuccessText(textAmplificationSuccessDetails.getText());
+        }
+        else if(eventSource==comboAmplificationMaterialOrMethod){
+
+        }
+        else if(eventSource==numberGelVoltage){
+            getEntity().setElectrophoresisVoltage(numberGelVoltage.getDouble());
+        }
+        else if(eventSource==numberGelConcentration){
+            getEntity().setGelConcentration(numberGelConcentration.getDouble());
+        }
+        else if(eventSource==numberGelRunningTime){
+            getEntity().setGelRunningTime(numberGelRunningTime.getDouble());
+        }
+        else if(eventSource==textLadderUsed){
+            getEntity().setLadderUsed(textLadderUsed.getText());
+        }
+        else if(eventSource==textGelPhoto){
+//            getEntity().
+        }
+        else if(eventSource==comboPurificationMaterialOrMethod){
+            MaterialOrMethodEvent purification = getEntity().getPurification();
+            if(purification==null){
+                purification = MaterialOrMethodEvent.NewInstance();
+                getEntity().setPurification(purification);
+            }
+            purification.setDefinedMaterialOrMethod(comboPurificationMaterialOrMethod.getSelection());
+        }
+        else if(eventSource==textPrimerForwardName || eventSource==textPrimerForwardSequence || eventSource==selectionPrimerForwardReference){
+            Primer forwardPrimer = getEntity().getForwardPrimer();
+            if(forwardPrimer==null){
+                forwardPrimer = Primer.NewInstance("");
+                getEntity().setForwardPrimer(forwardPrimer);
+            }
+            if(eventSource==textPrimerForwardName){
+                forwardPrimer.setLabel(textPrimerForwardName.getText());
+            }
+            else if(eventSource==textPrimerForwardSequence){
+                Sequence sequence = forwardPrimer.getSequence();
+                if(sequence==null){
+                    sequence = Sequence.NewInstance(textPrimerForwardSequence.getText());
+                    forwardPrimer.setSequence(sequence);
+                }
+                else{
+                    sequence.setSequenceString(textPrimerForwardSequence.getText());
+                }
+            }
+            else if(eventSource==selectionPrimerForwardReference){
+                forwardPrimer.setPublishedIn(selectionPrimerForwardReference.getSelection());
+            }
+        }
+        else if(eventSource==textPrimerReverseName || eventSource==textPrimerReverseSequence || eventSource==selectionPrimerReverseReference){
+            Primer reversePrimer = getEntity().getReversePrimer();
+            if(reversePrimer==null){
+                reversePrimer = Primer.NewInstance("");
+                getEntity().setReversePrimer(reversePrimer);
+            }
+            if(eventSource==textPrimerReverseName){
+                reversePrimer.setLabel(textPrimerReverseName.getText());
+            }
+            else if(eventSource==textPrimerReverseSequence){
+                Sequence sequence = reversePrimer.getSequence();
+                if(sequence==null){
+                    sequence = Sequence.NewInstance(textPrimerReverseSequence.getText());
+                    reversePrimer.setSequence(sequence);
+                }
+                else{
+                    sequence.setSequenceString(textPrimerReverseSequence.getText());
+                }
+            }
+            else if(eventSource==selectionPrimerReverseReference){
+                reversePrimer.setPublishedIn(selectionPrimerReverseReference.getSelection());
+            }
+        }
+        else if(eventSource==textCloningStrain || eventSource==dateCloning|| eventSource==selectionCloningStaff || eventSource==comboCloningMaterialOrMethod){
+            Cloning cloning = getEntity().getCloning();
+            if(cloning==null){
+                cloning = Cloning.NewInstance();
+                getEntity().setCloning(cloning);
+            }
+            if(eventSource==textCloningStrain){
+                cloning.setStrain(textCloningStrain.getText());
+            }
+            else if(eventSource==dateCloning){
+                cloning.setTimeperiod(dateCloning.getTimePeriod());
+            }
+            else if(eventSource==selectionCloningStaff){
+                cloning.setActor(selectionCloningStaff.getSelection());
+            }
+            else if(eventSource==comboCloningMaterialOrMethod){
+                cloning.setDefinedMaterialOrMethod(comboCloningMaterialOrMethod.getSelection());
+            }
+        }
     }
 
 }
\ No newline at end of file