fix #7088 fix NPE when saving Media in bulk editor hotfix/4.11.4
authorAndreas Müller <a.mueller@bgbm.org>
Thu, 23 Nov 2017 11:10:51 +0000 (12:10 +0100)
committerKatja Luther <k.luther@bgbm.org>
Thu, 23 Nov 2017 11:21:35 +0000 (12:21 +0100)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java

index 13ca2c371256305a24c28e8243c133d2c6665e8d..f93b5d4455bdf0645c7ac832fbb599333e0302a5 100644 (file)
@@ -19,6 +19,7 @@ import org.springframework.core.io.Resource;
 import org.springframework.security.access.PermissionEvaluator;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.context.SecurityContext;
 import org.springframework.security.core.context.SecurityContextHolder;
 
@@ -29,31 +30,67 @@ import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.IAgentService;
+import eu.etaxonomy.cdm.api.service.IAnnotationService;
+import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.api.service.ICollectionService;
 import eu.etaxonomy.cdm.api.service.ICommonService;
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.api.service.IEntityConstraintViolationService;
+import eu.etaxonomy.cdm.api.service.IEntityValidationService;
+import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
+import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
+import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;
+import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.api.service.IMarkerService;
+import eu.etaxonomy.cdm.api.service.IMediaService;
 import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
 import eu.etaxonomy.cdm.api.service.IReferenceService;
+import eu.etaxonomy.cdm.api.service.IRegistrationService;
+import eu.etaxonomy.cdm.api.service.IRightsService;
 import eu.etaxonomy.cdm.api.service.IService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IUserService;
+import eu.etaxonomy.cdm.api.service.IVocabularyService;
+import eu.etaxonomy.cdm.api.service.IWorkingSetService;
 import eu.etaxonomy.cdm.api.service.molecular.IAmplificationService;
 import eu.etaxonomy.cdm.api.service.molecular.IPrimerService;
+import eu.etaxonomy.cdm.api.service.statistics.Statistics;
 import eu.etaxonomy.cdm.config.ICdmSource;
 import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.model.description.WorkingSet;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.media.Rights;
 import eu.etaxonomy.cdm.model.molecular.Amplification;
 import eu.etaxonomy.cdm.model.molecular.Primer;
+import eu.etaxonomy.cdm.model.name.Registration;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.validation.EntityConstraintViolation;
+import eu.etaxonomy.cdm.model.validation.EntityValidation;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
@@ -241,11 +278,7 @@ public class CdmStore {
      */
     public static void close(final IProgressMonitor monitor) {
         Display.getDefault().asyncExec(new Runnable() {
-            /*
-             * (non-Javadoc)
-             *
-             * @see java.lang.Runnable#run()
-             */
+
             @Override
             public void run() {
                 getContextManager().notifyContextAboutToStop(monitor);
@@ -651,20 +684,80 @@ public class CdmStore {
             else if (cdmBase instanceof SpecimenOrObservationBase) {
                 service = (IService<T>) getService(IOccurrenceService.class);
             }
+            else if (cdmBase instanceof Media) {
+                service = (IService<T>) getService(IMediaService.class);
+            }
             else if (cdmBase instanceof Collection) {
                 service = (IService<T>) getService(ICollectionService.class);
             }
             else if (cdmBase instanceof User) {
                 service = (IService<T>) getService(IUserService.class);
             }
+            else if (cdmBase instanceof Group) {
+               service = (IService<T>) getService(IGroupService.class);
+            }
+            else if (cdmBase instanceof WorkingSet) {
+               service = (IService<T>) getService(IWorkingSetService.class);
+            }
+            else if (cdmBase instanceof TermVocabulary<?>) {
+               service = (IService<T>) getService(IVocabularyService.class);
+            }
+            else if (cdmBase instanceof DefinedTermBase<?>) {
+               service = (IService<T>) getService(ITermService.class);
+            }
             else if (cdmBase instanceof Primer) {
                 service = (IService<T>) getService(IPrimerService.class);
             }
             else if (cdmBase instanceof Amplification) {
                 service = (IService<T>) getService(IAmplificationService.class);
-            } else if (cdmBase instanceof PolytomousKey) {
+            } 
+            else if (cdmBase instanceof PolytomousKey) {
                 service = (IService<T>) getService(IPolytomousKeyService.class);
             }
+            else if (cdmBase instanceof PolytomousKeyNode) {
+                service = (IService<T>) getService(IPolytomousKeyNodeService.class);
+            }
+            else if (cdmBase instanceof Annotation) {
+                service = (IService<T>) getService(IAnnotationService.class);
+            }
+//            else if (cdmBase instanceof AuditEvent) {
+//                service = (IService<T>) getService(IAuditEventService.class);
+//            }
+            else if (cdmBase instanceof Classification) {
+                service = (IService<T>) getService(IClassificationService.class);
+            }
+            else if (cdmBase instanceof DescriptionBase<?>) {
+                service = (IService<T>) getService(IDescriptionService.class);
+            }
+            else if (cdmBase instanceof EntityConstraintViolation) {
+                service = (IService<T>) getService(IEntityConstraintViolationService.class);
+            }
+            else if (cdmBase instanceof EntityValidation) {
+                service = (IService<T>) getService(IEntityValidationService.class);
+            }
+            else if (cdmBase instanceof FeatureNode) {
+                service = (IService<T>) getService(IFeatureNodeService.class);
+            }
+            else if (cdmBase instanceof FeatureTree) {
+                service = (IService<T>) getService(IFeatureTreeService.class);
+            }
+            else if (cdmBase instanceof GrantedAuthority) {
+                service = (IService<T>) getService(IGrantedAuthorityService.class);
+            }
+            else if (cdmBase instanceof Marker) {
+                service = (IService<T>) getService(IMarkerService.class);
+            }
+            else if (cdmBase instanceof Registration) {
+                service = (IService<T>) getService(IRegistrationService.class);
+            }
+            else if (cdmBase instanceof Rights) {
+                service = (IService<T>) getService(IRightsService.class);
+            }
+            else{
+               String message = "Service for entity of class %s not yet implemented in TaxEditor";
+               message = String.format(message, cdmBase.getClass().getSimpleName());
+               throw new RuntimeException(message);
+            }
         }
         return service;
     }