bug #10269
closedSelecting existing name for typification
100%
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
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
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.
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)
Updated by Andreas Müller about 1 year ago
- Related to task #10268: Selecting an existing name as basionym added
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;
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.
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.
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?
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?
Updated by Andreas Müller about 1 year ago
- Status changed from Feedback to Resolved
- % Done changed from 0 to 70
Applied in changeset cdm-vaadin|81e29f64521293f86c78c6deb172a9b7c3ac0f89.
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.
Updated by Andreas Müller about 1 year ago
- Status changed from Feedback to Resolved
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?
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.
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
Updated by Andreas Müller about 1 year ago
- Copied to bug #10301: Allow curators to edit missing name informations added