ref #8477 Check if duplicates are allowed before adding terms to trees
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / featuretree / CharacterTransfer.java
index 739232ab1d9aa7a8d15fab4d28d827c709f044c4..766f719f894e4b17a761de69f4d6c7695119bdfa 100644 (file)
@@ -23,9 +23,11 @@ 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.Representation;
+import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.Character;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermNode;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -100,19 +102,9 @@ public class CharacterTransfer extends ByteArrayTransfer {
                         String string = in.readUTF();
                         String[] split = string.split(",");
                         IFeatureNodeService featureNodeService = CdmStore.getService(IFeatureNodeService.class);
-                        FeatureNode structure = featureNodeService.load(UUID.fromString(split[0]));
-                        FeatureNode 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));
+                        TermNode<DefinedTerm> structure = featureNodeService.load(UUID.fromString(split[0]));
+                        TermNode<DefinedTerm> property = featureNodeService.load(UUID.fromString(split[1]));
+                        characters.add(createCharacter(structure, property));
                     }
                 }catch(EOFException e){
                     return characters.toArray();
@@ -124,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;
+    }
+
 }