ref #7502 Add various occurrence columns
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 5 Oct 2018 09:16:41 +0000 (11:16 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 5 Oct 2018 10:27:33 +0000 (12:27 +0200)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java

index 206edb8f65319974beb723b44f31cd5b9aabb606..43e99fc3d30cca66655578e3056a5d81da22b963 100644 (file)
@@ -21,6 +21,10 @@ import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurato
 import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.GatheringEvent;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
@@ -40,6 +44,13 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput<SpecimenOrObs
        public static final String ID = "bulkeditor.input.occurrence"; //$NON-NLS-1$
 
        private static final String PROPERTY_PUBLISH = "Publish";
+       private static final String PROPERTY_COUNTRY = "Country";
+       private static final String PROPERTY_COLLECTOR = "Collector";
+       private static final String PROPERTY_FIELD_NUMBER = "Field Number";
+       private static final String PROPERTY_ACCESSION_NUMBER = "Acc. Number";
+       private static final String PROPERTY_BARCODE = "Barcode";
+       private static final String PROPERTY_CATALOG_NUMBER = "Catalog Number";
+       private static final String PROPERTY_COLLECTION = "Collection";
 
        private static OccurrenceEditorInput instance;
 
@@ -54,6 +65,13 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput<SpecimenOrObs
     protected List<String> getPropertyKeys_internal() {
         List<String> propertyKeysInternal = new ArrayList<>();
         propertyKeysInternal.add(PROPERTY_PUBLISH);
+        propertyKeysInternal.add(PROPERTY_COUNTRY);
+        propertyKeysInternal.add(PROPERTY_COLLECTOR);
+        propertyKeysInternal.add(PROPERTY_FIELD_NUMBER);
+        propertyKeysInternal.add(PROPERTY_ACCESSION_NUMBER);
+        propertyKeysInternal.add(PROPERTY_BARCODE);
+        propertyKeysInternal.add(PROPERTY_CATALOG_NUMBER);
+        propertyKeysInternal.add(PROPERTY_COLLECTION);
         return propertyKeysInternal;
     }
 
@@ -62,10 +80,89 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput<SpecimenOrObs
         if(property.equals(PROPERTY_PUBLISH)){
             return cdmBase.isPublish();
         }
+        else if(property.equals(PROPERTY_COUNTRY)){
+            return getCountry(cdmBase);
+        }
+        else if(property.equals(PROPERTY_COLLECTOR)){
+            return getCollector(cdmBase);
+        }
+        else if(property.equals(PROPERTY_FIELD_NUMBER)){
+            return getFieldNumber(cdmBase);
+        }
+        else if(property.equals(PROPERTY_ACCESSION_NUMBER)){
+            return getAccessionNumber(cdmBase);
+        }
+        else if(property.equals(PROPERTY_BARCODE)){
+            return getBarcode(cdmBase);
+        }
+        else if(property.equals(PROPERTY_CATALOG_NUMBER)){
+            return getCatalogNumber(cdmBase);
+        }
+        else if(property.equals(PROPERTY_COLLECTION)){
+            return getCollection(cdmBase);
+        }
         return super.getPropertyValue(cdmBase, property);
     }
 
-       @Override
+    private Object getCollector(SpecimenOrObservationBase<?> cdmBase) {
+        if(cdmBase.isInstanceOf(FieldUnit.class)){
+            GatheringEvent gatheringEvent = HibernateProxyHelper.deproxy(cdmBase, FieldUnit.class).getGatheringEvent();
+            if(gatheringEvent!=null){
+                return gatheringEvent.getCollector();
+            }
+        }
+        return null;
+    }
+
+    private Object getCountry(SpecimenOrObservationBase<?> cdmBase) {
+           if(cdmBase.isInstanceOf(FieldUnit.class)){
+               GatheringEvent gatheringEvent = HibernateProxyHelper.deproxy(cdmBase, FieldUnit.class).getGatheringEvent();
+               if(gatheringEvent!=null && gatheringEvent.getCountry()!=null){
+                   return gatheringEvent.getCountry().getLabel();
+               }
+           }
+        return null;
+    }
+
+    private Object getFieldNumber(SpecimenOrObservationBase<?> cdmBase) {
+        if(cdmBase.isInstanceOf(FieldUnit.class)){
+            return HibernateProxyHelper.deproxy(cdmBase, FieldUnit.class).getFieldNumber();
+        }
+        return null;
+    }
+
+    private Object getAccessionNumber(SpecimenOrObservationBase<?> cdmBase) {
+        if(cdmBase.isInstanceOf(DerivedUnit.class)){
+            return HibernateProxyHelper.deproxy(cdmBase, DerivedUnit.class).getAccessionNumber();
+        }
+        return null;
+    }
+
+    private Object getBarcode(SpecimenOrObservationBase<?> cdmBase) {
+        if(cdmBase.isInstanceOf(DerivedUnit.class)){
+            return HibernateProxyHelper.deproxy(cdmBase, DerivedUnit.class).getBarcode();
+        }
+        return null;
+    }
+
+    private Object getCatalogNumber(SpecimenOrObservationBase<?> cdmBase) {
+        if(cdmBase.isInstanceOf(DerivedUnit.class)){
+            return HibernateProxyHelper.deproxy(cdmBase, DerivedUnit.class).getCatalogNumber();
+        }
+        return null;
+    }
+
+    private Object getCollection(SpecimenOrObservationBase<?> cdmBase) {
+        if(cdmBase.isInstanceOf(DerivedUnit.class)){
+            Collection collection = HibernateProxyHelper.deproxy(cdmBase, DerivedUnit.class).getCollection();
+            if(collection!=null){
+                return collection.getTitleCache();
+            }
+        }
+        return null;
+    }
+
+    @Override
        protected long countEntities(IIdentifiableEntityServiceConfigurator configurator) {
            return CdmStore.getService(IOccurrenceService.class).countByTitle(configurator);
        }