adapted to latest model changes (references)
authorn.hoffmann <n.hoffmann@localhost>
Wed, 23 Sep 2009 09:14:08 +0000 (09:14 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 23 Sep 2009 09:14:08 +0000 (09:14 +0000)
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/TaxonEditorInput.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/TaxonEditorInputFactory.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/ParseHandler.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/ChangeAcceptedTaxonToSynonymHandler.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/ReferencePropertySource.java

index b2db92a4dae8923216190704d8b6eddf0ebc8644..f8974eb7a11788cf9d730e05bbb0cbdf4b2d7ad7 100644 (file)
@@ -268,7 +268,6 @@ public class MultiPageTaxonEditor extends FormEditor implements IConversationEna
        \r
        @Override\r
        public void setFocus(){\r
-               logger.warn("");\r
                // bind the conversation\r
                getConversationHolder().bind();\r
                // pass focus to the active editor page\r
index 763c5d67ab8b42a7e67551da1c085b4e1b0a8d49..07e811e3c7dab126b45f7ecc082bec88062ea5f8 100644 (file)
@@ -56,7 +56,7 @@ public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPe
     public static TaxonEditorInput NewInstance(UUID taxonNodeUuid){
        ConversationHolder conversation = CdmStore.NewTransactionalConversation();
        
-       TaxonNode taxonNode = CdmStore.getTaxonService().getTaxonNodeByUuid(taxonNodeUuid);
+       TaxonNode taxonNode = CdmStore.getTaxonTreeService().getTaxonNodeByUuid(taxonNodeUuid);
                
                if(taxonNode == null){
                        MessageDialog.openWarning(EditorUtil.getShell(), "Not yet implemented", "Selected element is not type TaxonBase.");
@@ -95,13 +95,13 @@ public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPe
        ConversationHolder conversation = CdmStore.NewTransactionalConversation();
                
                TaxonNameBase<?, ?> name = PreferencesUtil.getPreferredNomenclaturalCode().getNewTaxonNameInstance(null);
-               ITreeNode parentNode = CdmStore.getTaxonService().getTreeNodeByUuid(parentNodeUuid);
+               ITreeNode parentNode = CdmStore.getTaxonTreeService().getTreeNodeByUuid(parentNodeUuid);
                
                Taxon newTaxon = Taxon.NewInstance(name, parentNode.getReference());
                TaxonNode newTaxonNode = parentNode.addChildTaxon(newTaxon, parentNode.getReference(), parentNode.getMicroReference(), null);
                
                // add the new taxon to the editors persistence context
-               CdmStore.getTaxonService().saveTaxonNode(newTaxonNode);
+               CdmStore.getTaxonTreeService().saveTaxonNode(newTaxonNode);
                
                return new TaxonEditorInput(newTaxonNode, conversation);
     }
@@ -136,8 +136,8 @@ public class TaxonEditorInput implements IEditorInput, IConversationEnabled, IPe
         * @see org.eclipse.ui.IEditorInput#getPersistable()
         */
        public IPersistableElement getPersistable() {
-               TaxonNode test = CdmStore.getTaxonService().getTaxonNodeByUuid(taxonNode.getUuid());
-               boolean isPersistable = CdmStore.getTaxonService().getTaxonNodeByUuid(taxonNode.getUuid()) != null;
+               TaxonNode test = CdmStore.getTaxonTreeService().getTaxonNodeByUuid(taxonNode.getUuid());
+               boolean isPersistable = CdmStore.getTaxonTreeService().getTaxonNodeByUuid(taxonNode.getUuid()) != null;
                if (isPersistable) {
                        return this;
                } else {
index 86829286bb0afd6e04f2c685597c25bb74de3745..ffc55a877b973af19a00c3a24c1862f41f977968 100644 (file)
@@ -46,7 +46,7 @@ public class TaxonEditorInputFactory implements IElementFactory {
        public IAdaptable createElement(IMemento memento) {\r
         // Get the uuid\r
         String taxonNodeUuid = memento.getString(TAXON_NODE_UUID);\r
-        if (taxonNodeUuid == null || CdmStore.getTaxonService().getTaxonNodeByUuid(UUID.fromString(taxonNodeUuid)) == null) {\r
+        if (taxonNodeUuid == null || CdmStore.getTaxonTreeService().getTaxonNodeByUuid(UUID.fromString(taxonNodeUuid)) == null) {\r
                logger.warn("Couldn't find taxon node with UUID " + taxonNodeUuid);\r
 //             return MementoOutOfSyncInput.NewInstance(memento);\r
                return null;\r
index b08e349d9680b1bd25e32d621aeaa44366bf473b..db21c4541d7f43e7c95c8d1a6e7b73c8750cb8c5 100644 (file)
@@ -3,11 +3,13 @@
  */
 package eu.etaxonomy.taxeditor.editor.name;
 
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.log4j.Logger;
-import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
@@ -19,6 +21,8 @@ import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.MatchException;
 import eu.etaxonomy.cdm.strategy.match.MatchMode;
 import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;
+import eu.etaxonomy.taxeditor.parser.ParserUtil;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -43,19 +47,42 @@ public class ParseHandler{
 
        private NonViralName name;
 
-       private StyledText textWidget;
+       private Control textWidget;
        
-       private ParseHandler(StyledText textWidget, TaxonNameBase name){
+       private ParseHandler(Control textWidget, TaxonNameBase name){
+                               
                nonViralNameParser = NonViralNameParserImpl.NewInstance();
-               this.textWidget = textWidget;
-               this.name = (NonViralName) HibernateProxyHelper.deproxy(name);
+               
+               if(textWidget != null){
+                       this.textWidget = textWidget;
+                       checkControlHasText();
+               }else{
+                       throw new IllegalArgumentException("text widget must not be null");
+               }
+               
+               if(name == null){
+                       this.name = nonViralNameParser.getNonViralNameInstance("", PreferencesUtil.getPreferredNomenclaturalCode());
+               }else{
+                       this.name = (NonViralName) HibernateProxyHelper.deproxy(name);
+               }
        }
        
-       public static ParseHandler NewInstance(StyledText textWidget, TaxonNameBase name){
+       public static ParseHandler NewInstance(Control textWidget, TaxonNameBase name){
                return new ParseHandler(textWidget, name);
                
        }
        
+       private void checkControlHasText(){
+               Class clazz = textWidget.getClass();
+               
+               try {
+                       clazz.getDeclaredMethod("getText", null);
+               } catch (SecurityException e) {
+               } catch (NoSuchMethodException e) {     
+                       throw new IllegalArgumentException("Given composite does not have a getText method");
+               }
+       }
+       
        /**
         * 
         * @param unparsedNameString
@@ -63,7 +90,18 @@ public class ParseHandler{
         * @return
         */
        public NonViralName parse(){
-               String unparsedNameString = textWidget.getText();
+               
+               
+               String unparsedNameString = "";
+               try {
+                       Method getText;
+                       getText = textWidget.getClass().getDeclaredMethod("getText", null);
+                       unparsedNameString = (String) getText.invoke(textWidget, null);
+               } catch (Exception e) {
+                       // we should never get here
+                       logger.error("Error trying to invoke getText method");
+               }
+               
                
                nonViralNameParser.parseReferencedName(name, unparsedNameString,
                                name.getRank(), true);
@@ -236,14 +274,15 @@ public class ParseHandler{
        /**
         * @return the textWidget
         */
-       public StyledText getTextWidget() {
+       public Control getTextWidget() {
                return textWidget;
        }
 
        /**
         * @param textWidget the textWidget to set
         */
-       public void setTextWidget(StyledText textWidget) {
+       public void setTextWidget(Control textWidget) {
                this.textWidget = textWidget;
+               checkControlHasText();
        }
 }
index de39c9ae9d649336522a386ca41c23daaa0ae19b..ba3a7cc905e0e9cd705ed7593ad73074bf51dc6a 100644 (file)
@@ -60,7 +60,7 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
                // Choose new accepted taxon    \r
                List<UUID> excludeTaxa = new ArrayList<UUID>();\r
                excludeTaxa.add(oldAcceptedTaxon.getUuid());\r
-               Taxon newAcceptedTaxon = FilteredTaxonNodeSelectionDialog.selectTaxonNode(HandlerUtil.getActiveShell(event), "Choose the accepted taxon", excludeTaxa).getTaxon();\r
+               Taxon newAcceptedTaxon = FilteredTaxonNodeSelectionDialog.selectTaxonNode(HandlerUtil.getActiveShell(event), "Choose the accepted taxon", excludeTaxa, null).getTaxon();\r
                \r
                \r
                if (newAcceptedTaxon == null) {\r
@@ -169,7 +169,7 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
                }\r
 \r
 \r
-               oldTaxon.getTaxonNodes().iterator().next().remove();\r
+               oldTaxon.getTaxonNodes().iterator().next().delete();\r
                \r
        }\r
        \r
index 5d06b0054d31a2b7bec30398ace007401de69f8d..046d64017a8bd12df850f2cd06a177581a43fa01 100644 (file)
@@ -34,7 +34,6 @@ import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;\r
 import eu.etaxonomy.cdm.model.common.TimePeriod;\r
 import eu.etaxonomy.cdm.model.reference.Article;\r
-import eu.etaxonomy.cdm.model.reference.BibtexReference;\r
 import eu.etaxonomy.cdm.model.reference.Book;\r
 import eu.etaxonomy.cdm.model.reference.BookSection;\r
 import eu.etaxonomy.cdm.model.reference.CdDvd;\r
@@ -52,7 +51,6 @@ import eu.etaxonomy.cdm.model.reference.PublicationBase;
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
 import eu.etaxonomy.cdm.model.reference.Report;\r
 import eu.etaxonomy.cdm.model.reference.SectionBase;\r
-import eu.etaxonomy.cdm.model.reference.StrictReferenceBase;\r
 import eu.etaxonomy.cdm.model.reference.Thesis;\r
 import eu.etaxonomy.cdm.model.reference.WebPage;\r
 import eu.etaxonomy.taxeditor.model.Resources;\r
@@ -287,7 +285,7 @@ public class ReferencePropertySource implements ICdmBasePropertySource {
 //                     displayFields.add(P_ID_CROSSREF);\r
 //             }\r
        \r
-               if (reference instanceof StrictReferenceBase) {\r
+               if (reference instanceof ReferenceBase) {\r
                        \r
                        displayFields.add(P_ID_DATEPUBLISHED);\r
                        displayFields.add(P_ID_TITLE);\r
@@ -731,8 +729,8 @@ public class ReferencePropertySource implements ICdmBasePropertySource {
                                        new TimePeriodPropertySource(datePublished);\r
                        timePeriodPropertySource.addPropertyChangeListener(new PropertyChangeListener() {\r
                                public void propertyChange(PropertyChangeEvent evt) {\r
-                                       if (reference instanceof StrictReferenceBase && evt.getNewValue() instanceof TimePeriod) {      \r
-                                               ((StrictReferenceBase) reference).setDatePublished((TimePeriod) evt.getNewValue());\r
+                                       if (reference instanceof ReferenceBase && evt.getNewValue() instanceof TimePeriod) {    \r
+                                               ((ReferenceBase) reference).setDatePublished((TimePeriod) evt.getNewValue());\r
                                        }\r
                                }\r
                        });\r
@@ -997,8 +995,8 @@ public class ReferencePropertySource implements ICdmBasePropertySource {
                // Year - only set directly by Bibtex refs\r
                if (id.equals(P_ID_YEAR)) {\r
                        String year = (String) value;\r
-                       if (reference instanceof BibtexReference) {\r
-                               ((BibtexReference) reference).setYear(year);\r
+                       if (reference instanceof ReferenceBase) {\r
+//                             ((ReferenceBase) reference).setYear(year);\r
                        }\r
                }\r
 \r
@@ -1083,7 +1081,7 @@ public class ReferencePropertySource implements ICdmBasePropertySource {
                // Date published\r
                if (id.equals(P_ID_DATEPUBLISHED)) {\r
                        \r
-                       if (!(reference instanceof StrictReferenceBase)) {\r
+                       if (!(reference instanceof ReferenceBase)) {\r
                                return;\r
                        }\r
                        \r
@@ -1098,10 +1096,10 @@ public class ReferencePropertySource implements ICdmBasePropertySource {
                                        yearsPublished = TimeHelper.convertTimePeriod(year);\r
                                        \r
                                        // Update reference's dataPublished field\r
-                                       TimePeriod datePublished = ((StrictReferenceBase<?>) reference).getDatePublished();\r
+                                       TimePeriod datePublished = ((ReferenceBase<?>) reference).getDatePublished();\r
                                        \r
                                        if (datePublished == null) {\r
-                                               ((StrictReferenceBase<?>) reference).setDatePublished(yearsPublished);\r
+                                               ((ReferenceBase<?>) reference).setDatePublished(yearsPublished);\r
                                        } else {\r
                                                \r
                                                // Any months or days should be left as is - only update years \r
@@ -1109,7 +1107,7 @@ public class ReferencePropertySource implements ICdmBasePropertySource {
                                                datePublished.setEndYear(yearsPublished.getEndYear());\r
                                        }\r
                                } else {\r
-                                       ((StrictReferenceBase<?>) reference).setDatePublished(null);\r
+                                       ((ReferenceBase<?>) reference).setDatePublished(null);\r
                                }\r
                                \r
 \r