Project

General

Profile

feature request #7217

SpecimenTypedesignationsWorkingsetEditor: Longitute Latitude fields allow values in degrees minutes seconds formats

Added by Andreas Kohlbecker almost 2 years ago. Updated about 1 year ago.

Status:
Closed
Priority:
Priority14
Category:
cdmlib
Target version:
Start date:
01/25/2018
Due date:
% Done:

100%

Severity:
normal
Tags:

Description

there are various degrees minutes seconds formats, it is impossible to support all of them, we thus need to select the most common formats to support.

also support degree in decimal notation:

  • 49°13'39.0''N
  • 20°00'31.5''E

Maybe the http://docs.geotools.org/ provide a suitable parser? Also a possibility, the https://dev.e-taxonomy.eu/gitweb/geo.git/blob/HEAD:/coordinateConverter/CoordinateConverter.cs


Related issues

Related to Edit - bug #7314: support for dot and comma in Georeferenz, Error radius, Altitude, Distance to ... Closed 03/15/2018
Copied to Edit - feature request #7264: SpecimenTypedesignationsWorkingsetEditor: Longitute Latitude fields allow values as Gauss-Krüger Koordinates Rejected 01/25/2018

Associated revisions

Revision 3ca67b85 (diff)
Added by Andreas Kohlbecker about 1 year ago

ref #7217 creating test to reproduce long lat parsing problem

Revision ac6f2b2b (diff)
Added by Andreas Müller about 1 year ago

ref #7217 add double apostrophe as second marker

Revision f610b87d (diff)
Added by Andreas Kohlbecker about 1 year ago

ref #7217 validator and converter for geolocations used in GeoLocationField

Revision a3a78809 (diff)
Added by Andreas Kohlbecker about 1 year ago

ref #7217 better geo coordinate validation and parsing error feedback by creating LongLatField

History

#1 Updated by Andreas Kohlbecker almost 2 years ago

  • Tracker changed from bug to feature request

#2 Updated by Andreas Müller almost 2 years ago

  • Target version changed from Release 4.13 to Release 4.14

#3 Updated by Andreas Kohlbecker almost 2 years ago

  • Copied to feature request #7264: SpecimenTypedesignationsWorkingsetEditor: Longitute Latitude fields allow values as Gauss-Krüger Koordinates added

#4 Updated by Andreas Müller almost 2 years ago

  • Target version changed from Release 4.14 to Release 5.0

#5 Updated by Andreas Kohlbecker over 1 year ago

  • Related to bug #7314: support for dot and comma in Georeferenz, Error radius, Altitude, Distance to ... added

#6 Updated by Andreas Kohlbecker over 1 year ago

  • Description updated (diff)

#7 Updated by Andreas Kohlbecker over 1 year ago

  • Target version changed from Release 5.0 to Release 5.1

#8 Updated by Andreas Kohlbecker over 1 year ago

  • Target version changed from Release 5.1 to Release 5.2

#9 Updated by Andreas Kohlbecker over 1 year ago

  • Priority changed from New to Priority14

#10 Updated by Andreas Kohlbecker over 1 year ago

  • Description updated (diff)

#11 Updated by Wolf-Henning Kusber over 1 year ago

Known minor point:
On my computer, decimal values are only accepted if a Komma is used. A full stop is ignored by the system.

#12 Updated by Andreas Kohlbecker over 1 year ago

  • Target version changed from Release 5.2 to Release 5.3

#13 Updated by Andreas Müller over 1 year ago

Andreas Kohlbecker wrote:

...
Maybe the http://docs.geotools.org/ provide a suitable parser? Also a possibility, the https://dev.e-taxonomy.eu/gitweb/geo.git/blob/HEAD:/coordinateConverter/CoordinateConverter.cs

The CoordinateConverter has been integrated into cdmlib and is available at eu.etaxonomy.cdm.strategy.parser.location.CoordinateConverter . Have you tried this?

#14 Updated by Andreas Kohlbecker over 1 year ago

  • Target version changed from Release 5.3 to Release 5.4

#15 Updated by Andreas Kohlbecker about 1 year ago

  • Target version changed from Release 5.4 to Release 5.5

#16 Updated by Andreas Kohlbecker about 1 year ago

  • Description updated (diff)

#17 Updated by Andreas Müller about 1 year ago

  • Category changed from cdm-vaadin to cdmlib
  • Status changed from New to Resolved
  • % Done changed from 0 to 50

I added double apostrophe as marker for seconds. This fixes the tests.

I also replaced the UTF8 constants by links to the UTF8 class, to have them all at 1 place.

#18 Updated by Andreas Kohlbecker about 1 year ago

Parsing now works perfectly, the GeoLocationField needs some changes thought ...

#19 Updated by Andreas Kohlbecker about 1 year ago

  • Assignee changed from Andreas Kohlbecker to Wolf-Henning Kusber

please review

#20 Updated by Wolf-Henning Kusber about 1 year ago

Parser is workin fine, except of "forbidden entries"

50°61'15"N seems to produce not only a warn "Latitude !" in red colour, but also the following error:

com.vaadin.data.util.converter.Converter$ConversionException: java.text.ParseException: Latitude 50?61'15"N could not be parsed
at eu.etaxonomy.cdm.vaadin.util.converter.GeoLocationConverterValidator.convertToModel(GeoLocationConverterValidator.java:59)
at eu.etaxonomy.cdm.vaadin.util.converter.GeoLocationConverterValidator.convertToModel(GeoLocationConverterValidator.java:30)
at eu.etaxonomy.cdm.vaadin.component.common.GeoLocationField.updateMap(GeoLocationField.java:144)
at eu.etaxonomy.cdm.vaadin.component.common.GeoLocationField.lambda$initContent$6ecb4440$2(GeoLocationField.java:118)
at sun.reflect.GeneratedMethodAccessor1645.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:200)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:163)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1015)
at com.vaadin.ui.AbstractField.fireValueChange(AbstractField.java:1161)
at com.vaadin.ui.AbstractField.setValue(AbstractField.java:571)
at com.vaadin.ui.AbstractField.setValue(AbstractField.java:468)
at com.vaadin.ui.AbstractTextField.changeVariables(AbstractTextField.java:205)
at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:616)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:463)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:406)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:273)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1435)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:380)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:497)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.text.ParseException: Latitude 50?61'15"N could not be parsed
at eu.etaxonomy.cdm.model.location.Point.parseLatitude(Point.java:504)
at eu.etaxonomy.cdm.vaadin.util.converter.GeoLocationConverterValidator.convertToModel(GeoLocationConverterValidator.java:55)
... 80 more

#21 Updated by Wolf-Henning Kusber about 1 year ago

Fehler im Testsystem reproduzierbar.

#22 Updated by Andreas Kohlbecker about 1 year ago

Problem solved please test again

#23 Updated by Wolf-Henning Kusber about 1 year ago

  • Assignee changed from Wolf-Henning Kusber to Andreas Kohlbecker

Fehler reproduzierbar, gleiche Fehlermeldung.

#24 Updated by Andreas Kohlbecker about 1 year ago

Test server was not yet build, please try again.

#25 Updated by Wolf-Henning Kusber about 1 year ago

Nach wie vor internal error bei
http://test.e-taxonomy.eu/cdmserver/phycobank/app/registration#!workingset/a0ddaa05-622f-42c3-aa0f-fda3b2b3fbd5
4. Eintrag von unten

Nach wie vor Vaadin-Fehler bei unnormalen Einträgen. 2018-11-22 17:40

#26 Updated by Wolf-Henning Kusber about 1 year ago

  • Status changed from Resolved to Closed
  • % Done changed from 50 to 100

Test (Test system) 2018-11-23
Error radius shown
Normal Geo references converted
Forbidden entries result in an error allert and disallow saving
Corrected fields allow saving
No Vaadin errors.
Ticket can be closed.

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 40 MB)