ref #8248 Add feature to export (partially)
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 25 Jun 2019 11:39:37 +0000 (13:39 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 25 Jun 2019 11:39:37 +0000 (13:39 +0200)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/in/OwlImportUtil.java

index 657b11bfceb84d7f8d4724630301363675d38b5a..0724944ebba42a42e35f229b69f74ced959ceb87 100644 (file)
@@ -23,6 +23,7 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.io.descriptive.owl.OwlUtil;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.description.Character;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
@@ -43,12 +44,40 @@ public class OwlImportUtil {
 
     static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(OwlImportUtil.class);
 
+    static Feature createFeature(Resource termResource, ITermService termService, Model model, StructureTreeOwlImportState state){
+        Feature feature = Feature.NewInstance();
+        if(termResource.hasProperty(OwlUtil.propFeatureIsCategorical)){
+            feature.setSupportsCategoricalData(termResource.getProperty(OwlUtil.propFeatureIsCategorical).getBoolean());
+        }
+        if(termResource.hasProperty(OwlUtil.propFeatureIsQuantitative)){
+            feature.setSupportsQuantitativeData(termResource.getProperty(OwlUtil.propFeatureIsQuantitative).getBoolean());
+        }
+//        // import measurement units
+//        Set<DefinedTermBase> measurementUnits = new HashSet<>();
+//        List<Statement> measurementUnitStatements = termResource.listProperties(OwlUtil.propFeatureHasRecommendedMeasurementUnit).toList();
+//        for (Statement statement : measurementUnitStatements) {
+//            Resource measurementUnitResource = model.createResource(statement.getObject().toString());
+//            measurementUnits.add(OwlImportUtil.createTerm(measurementUnitResource, termService, model, state));
+//        }
+//        measurementUnits.forEach(unit->feature.addRecommendedMeasurementUnit(unit));
+
+        return feature;
+    }
+
+    static Character createCharacter(Resource termResource, ITermService termService, Model model, StructureTreeOwlImportState state){
+        Character character = Character.NewInstance();
+        return character;
+    }
+
     static DefinedTermBase createTerm(Resource termResource, ITermService termService, Model model, StructureTreeOwlImportState state){
         TermType termType = TermType.getByKey(termResource.getProperty(OwlUtil.propType).getString());
         DefinedTermBase term;
         // create new term
         if(termType.equals(TermType.Feature)){
-            term = Feature.NewInstance();
+            term = createFeature(termResource, termService, model, state);
+        }
+        else if(termType.equals(TermType.Character)){
+            term = createCharacter(termResource, termService, model, state);
         }
         else{
             term = DefinedTerm.NewInstance(termType);