Project

General

Profile

Actions

bug #10269

closed

Selecting existing name for typification

Added by Wolf-Henning Kusber about 1 year ago. Updated about 1 year ago.

Status:
Closed
Priority:
Highest
Category:
cdm-vaadin
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:
Severity:
blocker
Found in Version:

Description

Rights: User
Action: User wants to provide a new type for an existing scientific name

Here: in Testsystem:

User wants to use an existing name to insert a new lecto-, neo- or epitype designation in a current workingset.

This is not anymore blocked because the user gets only the the form for the existing name.
Bug: the name is shown but without reference, thus the name cannot be used as is (see Navicula brekkaensoides)
Because the reference and reference detail is already in the system, it should be possible to include this name into the dataset (by save) to link a new type to it.

It is expected to have a button "save" to be availabele to use the given name for a new typification.

This bug is a follow up to the main description of #10167 but also is related to #10268.


Related issues

Related to EDIT - bug #10167: Selecting an existing name and adding a new journal does not work for phycobank registrationClosedAndreas Müller

Actions
Related to EDIT - task #10268: Selecting an existing name as basionymIn ProgressWolf-Henning Kusber

Actions
Copied to EDIT - bug #10301: Allow curators to edit missing name informationsRejectedAndreas Müller

Actions
Actions #1

Updated by Andreas Müller about 1 year ago

  • Related to bug #10167: Selecting an existing name and adding a new journal does not work for phycobank registration added
Actions #2

Updated by Wolf-Henning Kusber about 1 year ago

The issue is more a data issue, NOT related to #10167

I was not aware that the given example has a reference in the production system but has not in the test system.

However, if a user wants to use a name without reference, the user should enter the reference before he/she can continue.
The problem: the user with user rights is not able to select given references.

There are douzends (hundred?) species names accidently without references (imported from the IPNI registration 1998/1999) which are basionyms etc.

The more important problem: All genera have been imported as names without authors/references to be available for new combinations to be entered, but if a user wish to register the genus name or use the name for typification, this is not possible yet.

Actions #3

Updated by Wolf-Henning Kusber about 1 year ago

Testsystem;: User selected genus name "Lepocinclis" and selected the availabele reference "Perty 1849" and got the following exception:

com.vaadin.data.Property$ReadOnlyException
    at com.vaadin.ui.AbstractField.setValue(AbstractField.java:493)
    at eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField.setValue(TeamOrPersonField.java:359)
    at eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditor.updateAuthorshipFieldData(TaxonNamePopupEditor.java:804)
    at eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditor.updateAuthorshipFields(TaxonNamePopupEditor.java:745)
    at eu.etaxonomy.cdm.vaadin.view.name.TaxonNamePopupEditor.lambda$updateAuthorshipFieldData$c3f3f4e5$1(TaxonNamePopupEditor.java:827)
    at sun.reflect.GeneratedMethodAccessor1556.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.AbstractField.setValue(AbstractField.java:453)
    at org.vaadin.viritin.fields.TypedSelect.setValue(TypedSelect.java:503)
    at org.vaadin.viritin.fields.TypedSelect$5.valueChange(TypedSelect.java:516)
    at sun.reflect.GeneratedMethodAccessor1556.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.AbstractSelect.setValue(AbstractSelect.java:735)
    at com.vaadin.ui.AbstractField.setValue(AbstractField.java:468)
    at com.vaadin.ui.ComboBox.changeVariables(ComboBox.java:743)
    at org.vaadin.viritin.fields.LazyComboBox$5.changeVariables(LazyComboBox.java:197)
    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:755)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:182)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
    at eu.etaxonomy.cdm.servlet.DateHeaderFilter.doFilter(DateHeaderFilter.java:56)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1596)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:590)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1607)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1297)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1577)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1212)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    at eu.etaxonomy.cdm.server.logging.InstanceLogWrapper.handle(InstanceLogWrapper.java:48)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:221)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    at org.eclipse.jetty.server.Server.handle(Server.java:500)
    at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
    at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
    at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
    at java.lang.Thread.run(Thread.java:748)
Actions #4

Updated by Andreas Müller about 1 year ago

  • Related to task #10268: Selecting an existing name as basionym added
Actions #5

Updated by Andreas Müller about 1 year ago

Names without nom. reference can be found via:

SELECT tn.id, tn.titleCache, tn.nameCache, dtb.titleCache rank
FROM TaxonName tn
LEFT JOIN DefinedTermBase dtb ON dtb.id = tn.rank_id
LEFT JOIN OriginalSourceBase osb ON tn.id = osb.sourcedName_id
WHERE osb.citation_id IS NULL
ORDER BY dtb.orderIndex, tn.titleCache, tn.id;
Actions #6

Updated by Andreas Müller about 1 year ago

  • Status changed from New to Feedback
  • Assignee changed from Andreas Müller to Wolf-Henning Kusber

List of names with missing nom. ref. sent to WHK. Data needs to be cleaned.

Until then we need to decide how to handle these cases.

To implement the possibility that the user may add the nom.ref. though he has no rights to change the name is possible but time consuming as it is against the general rights management architecture of the CDM which allows setting rights on single instances (e.g. a name) but not on single parts(attributes) of an instance (e.g. nom. ref. for a taxon name).
A possible solution could be to implement a warning that the name is incomplete and will be completed by the curator during the curation process. This should be relatively easy to implement.

Actions #7

Updated by Wolf-Henning Kusber about 1 year ago

  • Assignee changed from Wolf-Henning Kusber to Andreas Müller

WHK: no changes in the user-rights, the references of stored names (as names only) should be completed on the PhycoBank side at B.

AM: A possible solution could be to implement a warning that the name is incomplete and will be completed by the curator during the curation process. This should be relatively easy to implement.

WHK: This is the only way to proceed. But my question is: Do we allow submitters to continue???.

Currently it is not possibel to bring a name without reference in a registration working set. In this case, the data entry by the submitter would be abordet with a message:
"Scientific name currently not available, please contact the PhycoBank curator to solve this issue" or something simliar.

Actions #8

Updated by Andreas Müller about 1 year ago

Wolf-Henning Kusber wrote in #note-7:

...
WHK: This is the only way to proceed. But my question is: Do we allow submitters to continue???.

Currently it is not possible to bring a name without reference in a registration working set. In this case, the data entry by the submitter would be abordet with a message:
"Scientific name currently not available, please contact the PhycoBank curator to solve this issue" or something simliar.

So what needs to be done? I can't implement questions but only given requirements. Is it wanted to abort the registration or is it wanted to allow to continue?

Actions #9

Updated by Wolf-Henning Kusber about 1 year ago

In any case the curator has to fix the problem.
Currently the data entry by the submitter is aborted and the submitter is lost.

Therefore the following requirement:
If a name is selected that has no author and/or reference an error message should occur:
The data entry is aborted due to a data issue that should be fixed by the curator. Please send a mail with the scientific name to curation at phycobank.org

This should be the easiest procedure, correct?

Actions #10

Updated by Andreas Müller about 1 year ago

  • Status changed from Feedback to Resolved
  • % Done changed from 0 to 70
Actions #11

Updated by Andreas Müller about 1 year ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Andreas Müller to Wolf-Henning Kusber
  • Target version changed from Phycobank ready for submitters to Release 5.36

Please review.

Actions #12

Updated by Andreas Müller about 1 year ago

  • Status changed from Feedback to Resolved
Actions #13

Updated by Wolf-Henning Kusber about 1 year ago

  • Assignee changed from Wolf-Henning Kusber to Andreas Müller
  • % Done changed from 70 to 90

Implemented as expected.
On an small screen the red text is hard to read. Is it possible to set the Warning Bold?

Actions #14

Updated by Andreas Müller about 1 year ago

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

Wolf-Henning Kusber wrote in #note-13:

On an small screen the red text is hard to read. Is it possible to set the Warning Bold?

It was bold already but I used a different red color (tomato). I adapted it to normal red.

Please check if this looks better. I close the ticket already. Please reopen if there is still something left.

Actions #15

Updated by Andreas Müller about 1 year ago

WHK:

viel besser lesbar jetzt, vielen Dank

ABER: Als Curator bekomme ich die selbe Meldung, d.h. der Nachtrag der fehlenden Referenz ist auch für Curator-Rechte in Vaadin nicht möglich.

AM:

will be done in separate ticket

Actions #16

Updated by Andreas Müller about 1 year ago

  • Copied to bug #10301: Allow curators to edit missing name informations added
Actions

Also available in: Atom PDF