Project

General

Profile

feature request #8146

Adapt taxeditor UI to structure and property term type

Added by Patrick Plitzner 6 months ago. Updated 4 months ago.

Status:
Closed
Priority:
Highest
Category:
taxeditor
Target version:
Start date:
02/27/2019
Due date:
% Done:

100%

Severity:
normal
Tags:

Description

  1. Add term editor menu for each
  2. Restrict tree selection in CharacterEditor
  3. Restrict context menu, selection dialogs, drag&drop functionality
  4. Adapt DetailsView (if necessary)

remaining issues:

  • There is no TermType.Character. The character tree selection in the character editor is still unfiltered

picture937-1.png View (97.5 KB) Patrick Plitzner, 04/04/2019 07:45 AM


Related issues

Related to Edit - feature request #8012: Add termType for Structure and Property Closed 01/22/2019
Related to Edit - feature request #6794: Improve term structure In Progress 07/09/2017
Related to Edit - feature request #8153: Adapt cdmlib to FeatureNode/FeatureTree model changes Closed 02/28/2019
Related to Edit - feature request #8235: Create separate menu for term tree editors for each term tree type New 04/10/2019

Associated revisions

Revision f34f795b (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Adapt getEmptyDefinedTermBase() for new term types

Revision df0abd11 (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Refactor service method

Revision b6d3c69f (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Add service method for UuidAndTitleCache by termType for trees

Revision defd0d5c (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Restrict term tree selection by termType

Revision 1b28edc1 (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Restrict term tree selection by termType

Revision 47ce5432 (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Fix potential class cast exceptions

  • replace deprecated FeatureNode.getFeature() with getTerm()

Revision d4cccf9c (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Add termType to vocabulary selection dialog

Revision b9492486 (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Add termType to feature tree composite and selection dialog

Revision 4832aaf7 (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Add character voc selection in character editor

Revision 1c59050a (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Restrict tree selection in descriptive data set editor

Revision 62b71512 (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Adapt character matrix to termType model change

Revision d343a6cf (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Adapt feature tree editor and move operation to model change

Revision 77aef047 (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Restrict character matrix to characters

Revision 899c5dee (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Check term type compatibility for drag and drop

Revision de69ffd8 (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Restrict "add term wizard" by termType

Revision 80d9861f (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Check termType in term drop adapter

Revision ae31507c (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 i18n for term drop adapter

Revision 3d7968a9 (diff)
Added by Patrick Plitzner 6 months ago

ref #8146 Adapt AvailableFeaturesWizard

  • temporary disable usage of facet search

Revision daeb8ba2 (diff)
Added by Patrick Plitzner 5 months ago

ref #8146 Adapt "add term wizard" to termType restriction

Revision 61dee665 (diff)
Added by Patrick Plitzner 5 months ago

ref #8146 Adjust term type check

Revision 6ae3aa93 (diff)
Added by Andreas Müller 5 months ago

ref #8153 adapt ColumnAdder and ColumnTypeChanger to handle NOT NULL correctly for auditing tables

Revision 705a9fe6 (diff)
Added by Patrick Plitzner 4 months ago

ref #8146 Show term type of term trees in details view

Revision b2b10e70 (diff)
Added by Patrick Plitzner 4 months ago

ref #8146 move term type to top in details view

Revision 80f9d479 (diff)
Added by Patrick Plitzner 4 months ago

ref #8146 Adapt getEmptyDefinedTermBase() for new term types

Revision ca48edd7 (diff)
Added by Patrick Plitzner 4 months ago

ref #8146 Refactor service method

Revision 754fc710 (diff)
Added by Patrick Plitzner 4 months ago

ref #8146 Add service method for UuidAndTitleCache by termType for trees

History

#1 Updated by Patrick Plitzner 6 months ago

#2 Updated by Patrick Plitzner 6 months ago

#3 Updated by Patrick Plitzner 6 months ago

  • Description updated (diff)

#4 Updated by Patrick Plitzner 6 months ago

  • Description updated (diff)

#5 Updated by Patrick Plitzner 6 months ago

  • Description updated (diff)

#6 Updated by Patrick Plitzner 6 months ago

  • Description updated (diff)

#7 Updated by Patrick Plitzner 6 months ago

  • Description updated (diff)

#8 Updated by Patrick Plitzner 6 months ago

Add character to term menu with 2c98dda6165033a58c7df8c06b21518d380307b3

#9 Updated by Patrick Plitzner 6 months ago

  • Priority changed from New to Highest

#10 Updated by Patrick Plitzner 6 months ago

  • Description updated (diff)
  • Priority changed from Highest to New

#11 Updated by Patrick Plitzner 6 months ago

  • Priority changed from New to Highest

#12 Updated by Patrick Plitzner 5 months ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 50

#13 Updated by Patrick Plitzner 5 months ago

  • Assignee changed from Patrick Plitzner to Katja Luther

For review check the points in the description and play around with vocabularies and trees of different term types.

Check if the type check is correct:
*Vocabulary can only contain terms of their own type.
*TermTrees can only contain TermNodes of their type. The term of the TermNode can, however, be a subtype of the node's type

#14 Updated by Katja Luther 5 months ago

deleting a feature from termTree throws an exception but removing is successful


login : admin
editor version : 5.6.0.qualifier
server : test.e-taxonomy.eu (edit-test) / rem_conf_am
schema version : 5.5.0.0.20190221
os : Windows 7 6.1 amd64
java : 1.8.0_171
org.eclipse.swt.SWTException: Failed to execute runnable (org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement)
    at org.eclipse.swt.SWT.error(SWT.java:4533)
    at org.eclipse.swt.SWT.error(SWT.java:4448)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4211)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3827)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:693)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
    at eu.etaxonomy.taxeditor.Application.start(Application.java:24)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
Caused by: org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
    at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:164)
    at org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:741)
    at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:589)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:485)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291)
    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.$Proxy695.deleteFeatureNode(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    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.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:78)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
    at com.sun.proxy.$Proxy982.deleteFeatureNode(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:212)
    at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:39)
    at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
    at org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCreateResult(RemoteInvocationBasedExporter.java:114)
    at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:74)
    at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51)
    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)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    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.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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213)
    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.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)
    at org.springframework.remoting.support.RemoteInvocationUtils.fillInClientStackTraceIfPossible(RemoteInvocationUtils.java:45)
    at org.springframework.remoting.support.RemoteInvocationResult.recreate(RemoteInvocationResult.java:149)
    at org.springframework.remoting.support.RemoteInvocationBasedAccessor.recreateRemoteInvocationResult(RemoteInvocationBasedAccessor.java:85)
    at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:150)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
    at com.sun.proxy.$Proxy55.deleteFeatureNode(Unknown Source)
    at eu.etaxonomy.taxeditor.featuretree.e4.operation.RemoveFeatureOperation.execute(RemoveFeatureOperation.java:40)
    at eu.etaxonomy.taxeditor.model.AbstractUtility.lambda$3(AbstractUtility.java:147)
    at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:162)
    at org.eclipse.ui.internal.UISynchronizer$3.run(UISynchronizer.java:154)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
    ... 24 more
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement
    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59)
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:207)
    at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2886)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3386)
    at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:89)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:560)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:434)
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1282)
    at org.hibernate.envers.internal.synchronization.AuditProcess.doBeforeTransactionCompletion(AuditProcess.java:156)
    at org.hibernate.envers.internal.synchronization.AuditProcessManager$1.doBeforeTransactionCompletion(AuditProcessManager.java:46)
    at org.hibernate.engine.spi.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:899)
    at org.hibernate.engine.spi.ActionQueue.beforeTransactionCompletion(ActionQueue.java:481)
    at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2340)
    at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:485)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:147)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:231)
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:65)
    at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:581)
    ... 126 more
Caused by: java.sql.SQLIntegrityConstraintViolationException: Column 'termType' cannot be null
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:970)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1109)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1057)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1377)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1042)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:384)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204)
    ... 146 more

#15 Updated by Katja Luther 5 months ago

  • restricting tree selection seems to work
  • drag&drop of terms into a term tree works as expected

#16 Updated by Patrick Plitzner 5 months ago

Katja Luther wrote:

deleting a feature from termTree throws an exception but removing is successful

This exception is only thrown due to legacy data. TermTrees and -Nodes without termType set should not exist anymore. On which DB did you test? Maybe the update script did not run completely.

#17 Updated by Andreas Müller 5 months ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Katja Luther to Andreas Müller

Patrick Plitzner wrote:

Katja Luther wrote:

deleting a feature from termTree throws an exception but removing is successful

This exception is only thrown due to legacy data. TermTrees and -Nodes without termType set should not exist anymore. On which DB did you test? Maybe the update script did not run completely.

DB you find in log. cdm_rem_conf_am.
I guess the reason is FeatureNode_AUD.termType which is NOT NULL. This is probably an issue in the update script. I take this ticket to further investigate.

#18 Updated by Andreas Müller 5 months ago

#19 Updated by Andreas Müller 5 months ago

  • Status changed from Feedback to Resolved
  • Assignee changed from Andreas Müller to Katja Luther

I adjusted the update script. To test if the script works correctly now we should take a production database and move it to test or to localhost and test the update. Test if TaxonNode_AUD.termType is set to allow NULL as it should.

On rem_conf_am (and all other databases on test) I updated manually so you can continue testing this ticket.

#20 Updated by Patrick Plitzner 5 months ago

  • Assignee changed from Katja Luther to Patrick Plitzner

#21 Updated by Patrick Plitzner 5 months ago

I copied additivity_ontology to my local DBs and connected with the taxeditor. Seems like it worked.

#22 Updated by Katja Luther 5 months ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Katja Luther to Patrick Plitzner

tested on nightly:

open term editor for structures, create a new vocabulary, try drag&drop from one vocabulary to the another -> works
open term editor for properties try to drag&drop a term of type structure to a vocabulary of properties -> message box that the term hast not the same type as the vocabulary

in character editor:
selection dialogs show only the correct vocabularies.

in term tree editor:
tried to add features to different term trees and only the correct vocabularies are available to select a term

Maybe it would be nice to have a possibility to distinguish between the term tree types. neither in details view nor in term tree editor it is shown which type of terms are allowed.

#23 Updated by Patrick Plitzner 5 months ago

Katja Luther wrote:

Maybe it would be nice to have a possibility to distinguish between the term tree types. neither in details view nor in term tree editor it is shown which type of terms are allowed.

We could add the termtype to the label of term trees and terms and maybe make it toggleable in the preferences. Also in the details view it should be shown

#24 Updated by Patrick Plitzner 4 months ago

  • Status changed from Feedback to Resolved
  • Assignee changed from Patrick Plitzner to Katja Luther

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

#25 Updated by Katja Luther 4 months ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Katja Luther to Patrick Plitzner

Patrick Plitzner wrote:

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

I would put the termtype above the name, because it is more like an description.

#26 Updated by Patrick Plitzner 4 months ago

  • Status changed from Feedback to Resolved
  • Assignee changed from Patrick Plitzner to Katja Luther
  • % Done changed from 50 to 80

Katja Luther wrote:

Patrick Plitzner wrote:

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

I would put the termtype above the name, because it is more like an description.

I moved the termType to the top

#27 Updated by Katja Luther 4 months ago

  • Assignee changed from Katja Luther to Andreas Müller

Patrick Plitzner wrote:

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

@Patrick: Please open a new ticket for this discussion,
@Andreas M. Then we can close this ticket?

#28 Updated by Patrick Plitzner 4 months ago

Katja Luther wrote:

Patrick Plitzner wrote:

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

@Patrick: Please open a new ticket for this discussion,
@Andreas M. Then we can close this ticket?

new ticket #8235

#29 Updated by Patrick Plitzner 4 months ago

  • Related to feature request #8235: Create separate menu for term tree editors for each term tree type added

#30 Updated by Andreas Müller 4 months ago

Why not using the term type in the label, e.g. instead of FeatureTree => Structure Tree. Then users must not think about what a term type means if the label says "Feature Tree". Also it is not consistent to have term type structure under the label "FeatureTree". However, this is a minor issue and if we implement the term type specific Term Tree editors soon we may keep it as it is for now.

#31 Updated by Andreas Müller 4 months ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Andreas Müller to Patrick Plitzner

Generally it should be possible to move a Character subtree to a Feature tree as Character is a subtype. But of course then all term nodes need to change its term type to the more general term type "Feature". We have discussed this already on cdmlib level for the "add" method. Please open a new ticket for this issue as probably it is not simple enough to be implemented still in this ticket.

Also the other way round we need to discuss. Feature nodes may be moved to character trees if and only if all the feature nodes contain characters. This is important to make the operation reversable. But it requires an additional check if the condition holds and user feedback if the operation is not possible.

#32 Updated by Andreas Müller 4 months ago

All the rest seems to work and ticket can be closed then.

#33 Updated by Patrick Plitzner 4 months ago

  • Status changed from Feedback to Closed
  • % Done changed from 80 to 100

Added #8146#note-30 to #8235

Created #8238 for #8146#note-31

Closing this ticket

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 40 MB)