allow DefinedTerms to be partOf
authorAndreas Müller <a.mueller@bgbm.org>
Fri, 6 Sep 2013 14:16:51 +0000 (14:16 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 6 Sep 2013 14:16:51 +0000 (14:16 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DefinedTerm.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/DefinedTermBase.java
cdmlib-model/src/main/resources/terms/MeasurementUnit.csv
cdmlib-model/src/main/resources/terms/PreservationMethod.csv
cdmlib-model/src/main/resources/terms/State.csv

index 032bf442db9b2917ee595ec29a48a98f1a76e152..a0092bb6e9e3b26de11e8c8c2a636323c5b42e6f 100644 (file)
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.model.common;\r
 \r
 import java.util.HashMap;\r
+import java.util.List;\r
 import java.util.Map;\r
 import java.util.UUID;\r
 \r
@@ -18,9 +19,12 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;\r
 import javax.xml.bind.annotation.XmlType;\r
 \r
+import org.codehaus.plexus.util.StringUtils;\r
 import org.hibernate.envers.Audited;\r
 import org.hibernate.search.annotations.Indexed;\r
 \r
+import eu.etaxonomy.cdm.model.location.NamedArea;\r
+\r
 \r
 /**\r
  * @author a.mueller\r
@@ -146,4 +150,22 @@ public class DefinedTerm extends DefinedTermBase<DefinedTerm> {
                }               \r
        }\r
 \r
+       @Override\r
+       protected int partOfCsvLineIndex(){\r
+               return 5;\r
+       }\r
+\r
+//     @Override\r
+//     void readIsPartOf(DefinedTerm newInstance, List<String> csvLine, Map<UUID, DefinedTermBase> terms) {\r
+//        int index = 7;\r
+//             String partOfString = csvLine.get(index);\r
+//\r
+//        if(StringUtils.isNotBlank(partOfString)) {\r
+//            UUID partOfUuid = UUID.fromString(partOfString);\r
+//            DefinedTerm partOf = (DefinedTerm)terms.get(partOfUuid);\r
+//            partOf.addIncludes(newInstance);\r
+//        }\r
+//             \r
+//     }\r
+\r
 }\r
index 3922aa3889a3cb619e8028007eca221eb86eebb0..ec738d6a1ec3287e6c8e423dda552bb679d6dfaf 100644 (file)
@@ -337,29 +337,40 @@ public abstract class DefinedTermBase<T extends DefinedTermBase> extends TermBas
     public T readCsvLine(Class<T> termClass, List<String> csvLine, Map<UUID,DefinedTermBase> terms, boolean abbrevAsId) {
         try {
             T newInstance = getInstance(termClass);
-            return readCsvLine(newInstance, csvLine, Language.CSV_LANGUAGE(), abbrevAsId);
+            readCsvLine(newInstance, csvLine, Language.CSV_LANGUAGE(), abbrevAsId);
+            readIsPartOf(newInstance, csvLine, terms);
+            return newInstance;
         } catch (Exception e) {
             logger.error(e);
             for(StackTraceElement ste : e.getStackTrace()) {
                 logger.error(ste);
             }
+            throw new RuntimeException(e);
         }
-
-        return null;
     }
     
-       private  <T extends DefinedTermBase> T getInstance(Class<? extends DefinedTermBase> termClass) {
-               try {
-                       Constructor<T> c = ((Class<T>)termClass).getDeclaredConstructor();
-                       c.setAccessible(true);
-                       T termInstance = c.newInstance();
-                       return termInstance;
-               } catch (Exception e) {
-                       throw new RuntimeException(e);
-               }
+    protected void readIsPartOf(T newInstance, List<String> csvLine, Map<UUID, DefinedTermBase> terms){
+        int index = partOfCsvLineIndex();
+               if (index != -1){
+               String partOfString = csvLine.get(index);
+                if(StringUtils.isNotBlank(partOfString)) {
+                    UUID partOfUuid = UUID.fromString(partOfString);
+                    DefinedTermBase partOf = (DefinedTermBase)terms.get(partOfUuid);
+                    partOf.addIncludes(newInstance);
+                }
+               }
+       
+    }
+    
+       /**
+        * Get the 
+        * @return
+        */
+       protected int partOfCsvLineIndex() {
+               return -1;
        }
 
-    protected static <TERM extends DefinedTermBase> TERM readCsvLine(TERM newInstance, List<String> csvLine, Language lang, boolean abbrevAsId) {
+       protected static <TERM extends DefinedTermBase> TERM readCsvLine(TERM newInstance, List<String> csvLine, Language lang, boolean abbrevAsId) {
         newInstance.setUuid(UUID.fromString(csvLine.get(0)));
         newInstance.setUri( URI.create(csvLine.get(1)));
         String label = csvLine.get(2).trim();
@@ -372,9 +383,21 @@ public abstract class DefinedTermBase<T extends DefinedTermBase> extends TermBas
                newInstance.setIdInVocabulary(abbreviatedLabel);  //new in 3.3
         }
         newInstance.addRepresentation(Representation.NewInstance(description, label, abbreviatedLabel, lang) );
+        
         return newInstance;
     }
 
+       private  <T extends DefinedTermBase> T getInstance(Class<? extends DefinedTermBase> termClass) {
+               try {
+                       Constructor<T> c = ((Class<T>)termClass).getDeclaredConstructor();
+                       c.setAccessible(true);
+                       T termInstance = c.newInstance();
+                       return termInstance;
+               } catch (Exception e) {
+                       throw new RuntimeException(e);
+               }
+       }
+
     @Override
     public void writeCsvLine(CSVWriter writer, T term) {
         String [] line = new String[4];
index 98c9071039f79e7759cbd9756ef8e7b92978c5d4..27d1b6df6989ba85c2d997d3b7644c5bd52b9ece 100644 (file)
@@ -1,2 +1,2 @@
 "3b82c375-66bb-4636-be74-dc9cd087292a",,"Measurement Unit","Measurement Unit","MU","1"\r
-"e19dd590-5be8-4c93-978f-b78554116289",,"measurement_unit_dummy","mudummy description","m","mud",
\ No newline at end of file
+"e19dd590-5be8-4c93-978f-b78554116289",,"measurement_unit_dummy","mudummy description","mud",
\ No newline at end of file
index 056edd75cafc4202ed561a7825cf1817b033f5a8..809397897bc34e09095dfd71516a6fc56fddc8eb 100644 (file)
@@ -1,2 +1,2 @@
 "a7dc20c9-e6b3-459e-8f05-8d6d8fceb465",,"Preservation Method","Preservation Method","PRM","1"\r
-"3edc2633-365b-4a9b-bc3a-f3f85f59dbdf",,"preservation_method_dummy","pmdummy","p","pmd",
\ No newline at end of file
+"3edc2633-365b-4a9b-bc3a-f3f85f59dbdf",,"preservation_method_dummy","pmdummy","pmd",
\ No newline at end of file
index 9a44226b113fb7e79b50b89acc6ee650842957ae..5e317e1b918ac01a37a3da8c0108f873ab313f2d 100644 (file)
@@ -1,2 +1,2 @@
 "ceb65a53-c6cf-42bb-862f-daca7f2fc11d",,"State","State","STA","1"\r
-"881b9c80-626d-47a6-b308-a63ee5f4178f",,"state_dummy","stdummy","s","std",
\ No newline at end of file
+"881b9c80-626d-47a6-b308-a63ee5f4178f",,"state_dummy","stdummy","std",
\ No newline at end of file