bug #6825
closedSpecimen map shows point data only if ALL field units are georeferenced
100%
Description
Example: http://test.e-taxonomy.eu/dataportal/preview/salvador/cdm_dataportal/taxon/507e13f3-5db7-45a6-a41e-07f0de20348a/specimens has many georeferenced data but also has data without georeferenced data such as El Salvador, Republic of, 6Km al S de la Ciudad de Ahuachapán, Finca Santa Lina, por la carretera a Tacuba, 5.12.1994, Linares & Martínez 1967 [JBL01637].
In this case NO points are shown, while http://test.e-taxonomy.eu/dataportal/preview/salvador/cdm_dataportal/taxon/c3868e31-f2b7-4157-8fc0-a9d99c28154d/specimens or http://test.e-taxonomy.eu/dataportal/preview/salvador/cdm_dataportal/taxon/85161701-1297-40c5-8829-56da37e8852b/specimens shows points on the map.
Some more examples with missing geodata: http://test.e-taxonomy.eu/dataportal/preview/salvador/cdm_dataportal/taxon/a5aefc2c-e45c-45b7-a736-9526a3589ea6/specimens or http://test.e-taxonomy.eu/dataportal/preview/salvador/cdm_dataportal/taxon/a5aefc2c-e45c-45b7-a736-9526a3589ea6/specimens http://test.e-taxonomy.eu/dataportal/preview/salvador/cdm_dataportal/taxon/6df5b277-2947-4b12-a03f-7ccbe20a479b/specimens
Updated by Andreas Kohlbecker almost 6 years ago
- Category changed from cdm-dataportal to cdmlib
- Assignee changed from Andreas Kohlbecker to Andreas Müller
the root cause for this is a NPE in EditGeoServiceUtilities
Caused by: java.lang.NullPointerException at eu.etaxonomy.cdm.ext.geo.EditGeoServiceUtilities.addToStyleAndData(EditGeoServiceUtilities.java:626) at eu.etaxonomy.cdm.ext.geo.EditGeoServiceUtilities.getOccurrenceServiceRequestParameterString(EditGeoServiceUtilities.java:579) at eu.etaxonomy.cdm.ext.geo.EditGeoService.getOccurrenceServiceRequestParameterString(EditGeoService.java:230) at sun.reflect.GeneratedMethodAccessor3185.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) at com.sun.proxy.$Proxy6786.getOccurrenceServiceRequestParameterString(Unknown Source) at eu.etaxonomy.cdm.remote.controller.ext.ExternalGeoController.doGetOccurrenceMapUriParams(ExternalGeoController.java:221) at sun.reflect.GeneratedMethodAccessor3184.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
Updated by Andreas Kohlbecker almost 6 years ago
The code line throwing the exception is:
data.append(point.getLatitude() + "," + point.getLongitude());
so there must be incomplete point data.
Updated by Andreas Müller almost 6 years ago
The main problem is in EditGeoService l221ff
if (specimenOrObservation instanceof FieldUnit) {
fieldUnitPoints.add(((FieldUnit) specimenOrObservation).getGatheringEvent()
.getExactLocation());
}
a check is missing if point data is available (we can't expect that all gatheringEvents do have point data
Updated by Andreas Müller almost 6 years ago
- Status changed from New to Resolved
- % Done changed from 0 to 50
Applied in changeset cdmlib|699c82249407dfd626386ebc3b20a5cb6ad50496.
Updated by Andreas Müller almost 6 years ago
- Assignee changed from Andreas Müller to Andreas Kohlbecker
- % Done changed from 50 to 90
please review
Updated by Andreas Kohlbecker almost 6 years ago
- Status changed from Resolved to Closed
- % Done changed from 90 to 100
using
try {
...
} catch (NullPointerException e){ /*IGONRE*/ }
would improve readability, but anyway, this is a matter of taste.
well done & 150% fixed
Andreas
Updated by Andreas Müller over 5 years ago
- Assignee changed from Andreas Kohlbecker to Andreas Müller
it's more a matter of performance :-)