fix #8044: remove injected method
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / featuretree / CharacterTransfer.java
index c4f614b51e8271bd1041c89a73ba85fb4408f1dc..766f719f894e4b17a761de69f4d6c7695119bdfa 100644 (file)
@@ -23,6 +23,7 @@ import org.eclipse.swt.dnd.ByteArrayTransfer;
 import org.eclipse.swt.dnd.TransferData;
 
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
+import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.Character;
 import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.term.Representation;
@@ -103,17 +104,7 @@ public class CharacterTransfer extends ByteArrayTransfer {
                         IFeatureNodeService featureNodeService = CdmStore.getService(IFeatureNodeService.class);
                         TermNode<DefinedTerm> structure = featureNodeService.load(UUID.fromString(split[0]));
                         TermNode<DefinedTerm> property = featureNodeService.load(UUID.fromString(split[1]));
-                        Representation structureRepresentation = structure.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
-                        Representation propertyRepresentation = property.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
-                        String label = null;
-                        String abbrevLabel = null;
-                        if(structureRepresentation.getLabel()!=null && propertyRepresentation.getLabel()!=null){
-                            label = structureRepresentation.getLabel()+" "+propertyRepresentation.getLabel();
-                        }
-                        if(structureRepresentation.getAbbreviatedLabel()!=null && propertyRepresentation.getAbbreviatedLabel()!=null){
-                            abbrevLabel = structureRepresentation.getAbbreviatedLabel()+" "+propertyRepresentation.getAbbreviatedLabel();
-                        }
-                        characters.add(Character.NewInstance(structure, property, null, label, abbrevLabel));
+                        characters.add(createCharacter(structure, property));
                     }
                 }catch(EOFException e){
                     return characters.toArray();
@@ -125,4 +116,33 @@ public class CharacterTransfer extends ByteArrayTransfer {
         return null;
     }
 
+    public static Character createCharacter(TermNode<DefinedTerm> structureNode,
+            TermNode<DefinedTerm> propertyNode) {
+        Representation structureRepresentation = structureNode.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
+        if(structureRepresentation==null){
+            structureRepresentation = structureNode.getTerm().getRepresentation(Language.DEFAULT());
+        }
+        Representation propertyRepresentation = propertyNode.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
+        if(propertyRepresentation==null){
+            propertyRepresentation = propertyNode.getTerm().getRepresentation(Language.DEFAULT());
+        }
+        String label = null;
+        String abbrevLabel = null;
+        if(structureRepresentation!=null && propertyRepresentation!=null){
+            if(structureRepresentation.getLabel()!=null && propertyRepresentation.getLabel()!=null){
+                label = structureRepresentation.getLabel()+" "+propertyRepresentation.getLabel();
+            }
+            if(structureRepresentation.getAbbreviatedLabel()!=null && propertyRepresentation.getAbbreviatedLabel()!=null){
+                abbrevLabel = structureRepresentation.getAbbreviatedLabel()+" "+propertyRepresentation.getAbbreviatedLabel();
+            }
+        }
+        if(label!=null){
+            //default label
+            label = structureNode.getTerm().getLabel()+" "+propertyNode.getTerm().getLabel();
+        }
+        //create new Character
+        Character character = Character.NewInstance(structureNode, propertyNode, null, label, abbrevLabel);
+        return character;
+    }
+
 }