Project

General

Profile

Actions

feature request #6694

closed

feature request #6565: [MASTER] Eclipse 4 Migration

Migrate FeatureTreeEditor

Added by Patrick Plitzner almost 7 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Highest
Assignee:
Patrick Plitzner
Category:
taxeditor
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:
Severity:
critical
Tags:

Description

This should also be implemented or moved outside of the preferences


Related issues

Related to EDIT - bug #6726: NPE in FactualDataView and feature selection does not show any entries in Factual Data ViewClosedPatrick Plitzner

Actions
Related to EDIT - feature request #6805: Implement drag and drop from Term Editor (Feature) to FeatureTreeEditorClosedPatrick Plitzner

Actions
Related to EDIT - feature request #6806: Add context menu to FeatureTreeEditorClosedPatrick Plitzner

Actions
Related to EDIT - bug #6838: Implement i18n for FeatureTreeEditorClosedPatrick Plitzner

Actions
Related to EDIT - bug #6844: New feature tree selection does not allow "no save"RejectedPatrick Plitzner

Actions
Related to EDIT - bug #6845: dirty button does not work in feature tree editorWorksformePatrick Plitzner

Actions
Precedes EDIT - bug #6786: Remaining feature tree editor issuesClosedPatrick Plitzner

Actions
Actions #1

Updated by Patrick Plitzner almost 7 years ago

  • Status changed from New to Resolved
  • Assignee changed from Patrick Plitzner to Andreas Müller
  • Target version changed from Unassigned CDM tickets to Release 4.8
  • % Done changed from 0 to 80
Actions #2

Updated by Andreas Müller almost 7 years ago

  • Related to bug #6726: NPE in FactualDataView and feature selection does not show any entries in Factual Data View added
Actions #3

Updated by Andreas Müller almost 7 years ago

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

Please check #6726 if these bugs are related to the changes in this ticket.

Actions #4

Updated by Andreas Müller almost 7 years ago

Please move the menu entry to "Term Editor" and there below "Others" separated with 2 separators; and call in "Feature Tree", not "Feature Tree Editor".

@Katja: Could you try to implement this already?

Actions #5

Updated by Andreas Müller almost 7 years ago

  • Severity changed from normal to critical

When moving the Edtior with in the UI I got an IllegalAurgumentException (Message: null). Title: "Could not get conversatoin for AbstractFormSection". Description: "There is an error in the implementation. There should have been an active editor but wasn't".

The error occurred recursively. Showing up in 2 dialogs. One with Details/Error trace, one without (this should not happen). I needed to close it at least 10x to make it go away completely. The element getting the focus afterwards was a synonym in Name Editor.

java.lang.IllegalArgumentException
  login : admin
  editor version : 4.8.0.201706140848
  server : test.e-taxonomy.eu (edit-test) / rem_conf_am
  schema version : 4.7.0.0.201710040000
  os : Windows Server 2012 R2 6.3 amd64
  java : 1.8.0_121
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:591)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:587)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:101)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:107)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.updateContent(AuthorshipDetailElement.java:125)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:94)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:127)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection.setTaxonBase(NonViralNameDetailSection.java:129)
    at eu.etaxonomy.taxeditor.view.detail.CdmSectionPart.setFormInput(CdmSectionPart.java:91)
    at org.eclipse.ui.forms.ManagedForm.setInput(ManagedForm.java:210)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.refresh(AbstractCdmDataViewer.java:123)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.setInput(AbstractCdmDataViewer.java:109)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewer.setInput(DetailsViewer.java:161)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.showViewer(DetailsViewPart.java:268)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.selectionChanged_internal(DetailsViewPart.java:136)
    at eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart$DelaySelection.run(AbstractCdmEditorViewPart.java:52)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
    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)

Setting to critical because of this bug.

Actions #6

Updated by Andreas Müller almost 7 years ago

If entering text into the "Title" search box has no effect, the text box should be disabled for entering text.

Actions #7

Updated by Andreas Müller almost 7 years ago

Layout: The search box is longer then the textbox for the data. It should be aligned.

Actions #8

Updated by Andreas Müller almost 7 years ago

If moving nodes in the tree everything seems to be saved immediately. This is unexpected behavior as users are used to have to save results of editing. If this is wanted there should be a warning at least.
Is it necessary that we do not use "save" and set the save button dirty?

Actions #9

Updated by Andreas Müller almost 7 years ago

Sometimes there is a bug when moving nodes. The node does not get deleted at the old position but is added at the new position at the same time.

At the same time I also got a never ending resursion as "Conservation" & "Habitat" iterated as being children of each other.

This is difficult to reproduce but similar problems occurred in the old Feature Treee Editor already.

Actions #10

Updated by Patrick Plitzner almost 7 years ago

  • Assignee changed from Patrick Plitzner to Andreas Müller

Andreas Müller wrote:

If moving nodes in the tree everything seems to be saved immediately. This is unexpected behavior as users are used to have to save results of editing. If this is wanted there should be a warning at least.
Is it necessary that we do not use "save" and set the save button dirty?

This has been fixed

Actions #11

Updated by Patrick Plitzner almost 7 years ago

  • Assignee changed from Andreas Müller to Patrick Plitzner

Andreas Müller wrote:

When moving the Edtior with in the UI I got an IllegalAurgumentException (Message: null). Title: "Could not get conversatoin for AbstractFormSection". Description: "There is an error in the implementation. There should have been an active editor but wasn't".

The error occurred recursively. Showing up in 2 dialogs. One with Details/Error trace, one without (this should not happen). I needed to close it at least 10x to make it go away completely. The element getting the focus afterwards was a synonym in Name Editor.

java.lang.IllegalArgumentException
  login : admin
  editor version : 4.8.0.201706140848
  server : test.e-taxonomy.eu (edit-test) / rem_conf_am
  schema version : 4.7.0.0.201710040000
  os : Windows Server 2012 R2 6.3 amd64
  java : 1.8.0_121
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:591)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:587)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:101)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:107)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.updateContent(AuthorshipDetailElement.java:125)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:94)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:127)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection.setTaxonBase(NonViralNameDetailSection.java:129)
    at eu.etaxonomy.taxeditor.view.detail.CdmSectionPart.setFormInput(CdmSectionPart.java:91)
    at org.eclipse.ui.forms.ManagedForm.setInput(ManagedForm.java:210)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.refresh(AbstractCdmDataViewer.java:123)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.setInput(AbstractCdmDataViewer.java:109)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewer.setInput(DetailsViewer.java:161)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.showViewer(DetailsViewPart.java:268)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.selectionChanged_internal(DetailsViewPart.java:136)
    at eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart$DelaySelection.run(AbstractCdmEditorViewPart.java:52)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
    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)

Setting to critical because of this bug.

This should be fixed by propagating the selection of the editor so that the Details view is emptied.

Actions #12

Updated by Patrick Plitzner almost 7 years ago

Andreas Müller wrote:

If entering text into the "Title" search box has no effect, the text box should be disabled for entering text.

This is not for searching but for editing the label (titleCache) of the feature tree.

Actions #13

Updated by Patrick Plitzner almost 7 years ago

Andreas Müller wrote:

Sometimes there is a bug when moving nodes. The node does not get deleted at the old position but is added at the new position at the same time.

At the same time I also got a never ending resursion as "Conservation" & "Habitat" iterated as being children of each other.

This is difficult to reproduce but similar problems occurred in the old Feature Treee Editor already.

This should also be fixed now. I do not know how to reproduce the recursion but maybe it is fixed as well.

Actions #14

Updated by Patrick Plitzner almost 7 years ago

  • Assignee changed from Patrick Plitzner to Andreas Müller

Andreas Müller wrote:

Please move the menu entry to "Term Editor" and there below "Others" separated with 2 separators; and call in "Feature Tree", not "Feature Tree Editor".

@Katja: Could you try to implement this already?

All issues mentioned above should be fixed now

Actions #15

Updated by Andreas Müller almost 7 years ago

  • Status changed from Feedback to Resolved
  • Priority changed from New to Highest
Actions #16

Updated by Andreas Müller over 6 years ago

  • Status changed from Resolved to Feedback

Patrick Plitzner wrote:

Andreas Müller wrote:

When moving the Edtior with in the UI I got an IllegalAurgumentException (Message: null). Title: "Could not get conversatoin for AbstractFormSection". Description: "There is an error in the implementation. There should have been an active editor but wasn't".

The error occurred recursively. Showing up in 2 dialogs. One with Details/Error trace, one without (this should not happen). I needed to close it at least 10x to make it go away completely. The element getting the focus afterwards was a synonym in Name Editor.

java.lang.IllegalArgumentException
  login : admin
  editor version : 4.8.0.201706140848
  server : test.e-taxonomy.eu (edit-test) / rem_conf_am
  schema version : 4.7.0.0.201710040000
  os : Windows Server 2012 R2 6.3 amd64
  java : 1.8.0_121
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:591)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:587)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:101)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:107)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.updateContent(AuthorshipDetailElement.java:125)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:94)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:127)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection.setTaxonBase(NonViralNameDetailSection.java:129)
    at eu.etaxonomy.taxeditor.view.detail.CdmSectionPart.setFormInput(CdmSectionPart.java:91)
    at org.eclipse.ui.forms.ManagedForm.setInput(ManagedForm.java:210)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.refresh(AbstractCdmDataViewer.java:123)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.setInput(AbstractCdmDataViewer.java:109)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewer.setInput(DetailsViewer.java:161)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.showViewer(DetailsViewPart.java:268)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.selectionChanged_internal(DetailsViewPart.java:136)
    at eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart$DelaySelection.run(AbstractCdmEditorViewPart.java:52)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
    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)

Setting to critical because of this bug.

This should be fixed by propagating the selection of the editor so that the Details view is emptied.

The problem still exists. I moved the Feature Tree Editor from one place to another and then clicked on any feature and it happened (editor version 4.8.0.201706190848)

Actions #17

Updated by Andreas Müller over 6 years ago

  • Assignee changed from Andreas Müller to Patrick Plitzner

Patrick Plitzner wrote:

Andreas Müller wrote:

Please move the menu entry to "Term Editor" and there below "Others" separated with 2 separators; and call in "Feature Tree", not "Feature Tree Editor".

@Katja: Could you try to implement this already?

All issues mentioned above should be fixed now

The menu is at the right position now, but the 2 separators are still missing

Actions #18

Updated by Andreas Müller over 6 years ago

Patrick Plitzner wrote:

Andreas Müller wrote:

If entering text into the "Title" search box has no effect, the text box should be disabled for entering text.

This is not for searching but for editing the label (titleCache) of the feature tree.

2 problems:

  • even if NO feature tree is selected the field can still be edited (this does not make sense)
  • if the search dialog button is just beside the field it is not intuitive that this is an editing field. Search and editing should be clearly separated. Can we have a search section and an editing section which are separated? Also the search part should have an according label "Search"
Actions #19

Updated by Andreas Müller over 6 years ago

Can you provide according translations for the tab title and the title lable. Something like "Merkmals Baum Editor" und "Merkmals Baum"?

Actions #20

Updated by Andreas Müller over 6 years ago

Patrick Plitzner wrote:

Andreas Müller wrote:

Sometimes there is a bug when moving nodes. The node does not get deleted at the old position but is added at the new position at the same time.

At the same time I also got a never ending resursion as "Conservation" & "Habitat" iterated as being children of each other.

This is difficult to reproduce but similar problems occurred in the old Feature Treee Editor already.

This should also be fixed now. I do not know how to reproduce the recursion but maybe it is fixed as well.

I still managed to create 3 nodes for IndividualsAssociations in the same feature tree just by moving around FeatureNodes. This time no recursion appeared. Still I can't say how to reproduce except for "move nodes often enough, it will occur sooner or later.

Actions #21

Updated by Andreas Müller over 6 years ago

Andreas Müller wrote:

Patrick Plitzner wrote:

Andreas Müller wrote:

Sometimes there is a bug when moving nodes. The node does not get deleted at the old position but is added at the new position at the same time.

At the same time I also got a never ending resursion as "Conservation" & "Habitat" iterated as being children of each other.

This is difficult to reproduce but similar problems occurred in the old Feature Treee Editor already.

This should also be fixed now. I do not know how to reproduce the recursion but maybe it is fixed as well.

I still managed to create 3 nodes for IndividualsAssociations in the same feature tree just by moving around FeatureNodes. This time no recursion appeared. Still I can't say how to reproduce except for "move nodes often enough, it will occur sooner or later.

Now I also managed to create recursion. Afterwards I tried to save but pressing the save button had no result. Also trying to close the tab had no result, no matter if I answered the save request with "save" or cancel".

Actions #22

Updated by Patrick Plitzner over 6 years ago

Andreas Müller wrote:

Patrick Plitzner wrote:

Andreas Müller wrote:

Please move the menu entry to "Term Editor" and there below "Others" separated with 2 separators; and call in "Feature Tree", not "Feature Tree Editor".

@Katja: Could you try to implement this already?

All issues mentioned above should be fixed now

The menu is at the right position now, but the 2 separators are still missing

I added a separator. It seems that RCP will not render two separator after each other by default so there is only one.

Actions #23

Updated by Andreas Müller over 6 years ago

Patrick Plitzner wrote:

Andreas Müller wrote:

Patrick Plitzner wrote:
The menu is at the right position now, but the 2 separators are still missing

I added a separator. It seems that RCP will not render two separator after each other by default so there is only one.

This is strange as I know for sure that I already saw double separators (and usually didn't like them). Can it be that they came up because there were menu items in between which where set to invisible in certain surroundings. Is this maybe a work around to add an extra menu item in between and set it always to invisible?
However, this issue is not release critical, so please first try to solve those issues which are critical.

Actions #24

Updated by Patrick Plitzner over 6 years ago

  • Assignee changed from Patrick Plitzner to Andreas Müller
  • % Done changed from 80 to 90
Actions #25

Updated by Andreas Müller over 6 years ago

  • Assignee changed from Andreas Müller to Patrick Plitzner

Now, when trying to add a new feature in the feature tree I always get an LIE

login : admin
editor version : 4.8.0.201706201949
server : test.e-taxonomy.eu (edit-test) / rem_conf_am
schema version : 4.7.0.0.201710040000
os : Windows Server 2012 R2 6.3 amd64
java : 1.8.0_121
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:148)
    at org.hibernate.Hibernate.initialize(Hibernate.java:62)
    at eu.etaxonomy.cdm.hibernate.HibernateProxyHelper.deproxy(HibernateProxyHelper.java:45)
    at eu.etaxonomy.cdm.model.common.CdmBase.deproxy(CdmBase.java:304)
    at eu.etaxonomy.cdm.persistence.hibernate.CdmPreDataChangeListener.generateCaches(CdmPreDataChangeListener.java:110)
    at eu.etaxonomy.cdm.persistence.hibernate.CacheStrategyGenerator.saveOrUpdateOrMerge(CacheStrategyGenerator.java:48)
    at eu.etaxonomy.cdm.persistence.hibernate.CacheStrategyGenerator.onSaveOrUpdate(CacheStrategyGenerator.java:33)
    at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:648)
    at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:640)
    at org.hibernate.engine.spi.CascadingActions$5.cascade(CascadingActions.java:218)
    at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:398)
    at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323)
    at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162)
    at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:111)
    at org.hibernate.event.internal.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:425)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:249)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:178)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
    at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
    at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
    at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:679)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:671)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:666)
    at eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase.save(CdmEntityDaoBase.java:327)
    at eu.etaxonomy.cdm.api.service.ServiceBase.save(ServiceBase.java:268)
    at eu.etaxonomy.cdm.api.service.ServiceBase.save(ServiceBase.java:35)
    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.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.$Proxy697.save(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.$Proxy983.save(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.$Proxy49.save(Unknown Source)
    at eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor$AddButtonListener.widgetSelected(FeatureTreeEditor.java:166)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:249)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4418)
...

After reloading the feature tree the new feature exists. However, the error pops up and without reloading the new feature is not shown in the tree.

Actions #26

Updated by Andreas Müller over 6 years ago

and when deleting a feature I get an NPE:

login : admin
editor version : 4.8.0.201706201949
server : test.e-taxonomy.eu (edit-test) / rem_conf_am
schema version : 4.7.0.0.201710040000
os : Windows Server 2012 R2 6.3 amd64
java : 1.8.0_121
java.lang.NullPointerException
    at eu.etaxonomy.cdm.api.service.FeatureNodeServiceImpl.isDeletable(FeatureNodeServiceImpl.java:103)
    at eu.etaxonomy.cdm.api.service.FeatureNodeServiceImpl.deleteFeatureNode(FeatureNodeServiceImpl.java:56)
    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.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
 ...
Actions #27

Updated by Andreas Müller over 6 years ago

  • % Done changed from 90 to 70
Actions #28

Updated by Andreas Müller over 6 years ago

Andreas Müller wrote:

and when deleting a feature I get an NPE:

login : admin
...

This only happens for NON top level feature (feature which do have a parent).

Actions #29

Updated by Andreas Müller over 6 years ago

Adding a new top level feature is not possible once a feature node is selected

Actions #30

Updated by Andreas Müller over 6 years ago

Supplemental data are not yet shown (view is grey). It will not show many data but created, id and uuid might be very helpful, at least for debugging.

Also the details view might be needed for editing "inapplicableIf" and "onlyApplicableIf". Feel free to open new tickets for these issues.

Actions #31

Updated by Andreas Müller over 6 years ago

Andreas Müller wrote:

Patrick Plitzner wrote:

2 problems:

  • even if NO feature tree is selected the field can still be edited (this does not make sense)
  • if the search dialog button is just beside the field it is not intuitive that this is an editing field. Search and editing should be clearly separated. Can we have a search section and an editing section which are separated? Also the search part should have an according label "Search"

The search button is still beside the titleCache button

Actions #32

Updated by Andreas Müller over 6 years ago

Also for the trees themselves no supplemental data and details view is available, but might be a nice feature.

Actions #33

Updated by Patrick Plitzner over 6 years ago

Andreas Müller wrote:

Adding a new top level feature is not possible once a feature node is selected

To do this you have to de-select the current feature (CTRL+Click on the selected item) or just move it to root after having added it

Actions #34

Updated by Patrick Plitzner over 6 years ago

Andreas Müller wrote:

Supplemental data are not yet shown (view is grey). It will not show many data but created, id and uuid might be very helpful, at least for debugging.

Also the details view might be needed for editing "inapplicableIf" and "onlyApplicableIf". Feel free to open new tickets for these issues.

Added new ticket: #6746

Actions #35

Updated by Andreas Müller over 6 years ago

Patrick Plitzner wrote:

Andreas Müller wrote:

Adding a new top level feature is not possible once a feature node is selected

To do this you have to de-select the current feature (CTRL+Click on the selected item) or just move it to root after having added it

As adding top level elements makes 98% of the work you do in the feature tree editor this is not an acceptable solution. CTRL+Click is hidden knowledge which we can't expect the user to have. Moving it to root is a workaround users may find, but not very nice.

There might be different solutions: my preferred one is to have a right click menu like in the term editor and in many other editors and views. This would be more consistent throughout the application. It was ok to have "+" Button when the FeatureTree Editor was still in the preferences as most preferences work with "+". But now it is an "editor" and should follow the look and feel of editors.
We can still keep the buttons but additionally could have a right click menu.

Another solution could be to allow toggle focus without having CTRL pressed (only by clicking). This makes it a bit easier to find. But still this is not really intuitive.

A third solution could be to always add features as top level elements and move them manually to the place were you need them. For the current use cases this is absolutely enough as it is very seldom that users really build trees. Usually they build lists. But for use cases like "additivity" this might be different.

Another solution could be 2 different button, one for top level one for children, but this is also not consistent with other editors (and maybe not intuitive)

Actions #36

Updated by Patrick Plitzner over 6 years ago

  • Assignee changed from Patrick Plitzner to Andreas Müller

Andreas Müller wrote:

Patrick Plitzner wrote:

Andreas Müller wrote:

Adding a new top level feature is not possible once a feature node is selected

To do this you have to de-select the current feature (CTRL+Click on the selected item) or just move it to root after having added it

As adding top level elements makes 98% of the work you do in the feature tree editor this is not an acceptable solution. CTRL+Click is hidden knowledge which we can't expect the user to have. Moving it to root is a workaround users may find, but not very nice.

There might be different solutions: my preferred one is to have a right click menu like in the term editor and in many other editors and views. This would be more consistent throughout the application. It was ok to have "+" Button when the FeatureTree Editor was still in the preferences as most preferences work with "+". But now it is an "editor" and should follow the look and feel of editors.
We can still keep the buttons but additionally could have a right click menu.

Another solution could be to allow toggle focus without having CTRL pressed (only by clicking). This makes it a bit easier to find. But still this is not really intuitive.

A third solution could be to always add features as top level elements and move them manually to the place were you need them. For the current use cases this is absolutely enough as it is very seldom that users really build trees. Usually they build lists. But for use cases like "additivity" this might be different.

Another solution could be 2 different button, one for top level one for children, but this is also not consistent with other editors (and maybe not intuitive)

Now new features are added to root always. Also the other session issues should be fixed now. But there were also cdmlib changes so you have to wait for the build if you test on the test DB

Actions #37

Updated by Andreas Müller over 6 years ago

  • Precedes bug #6786: Remaining feature tree editor issues added
Actions #38

Updated by Andreas Müller over 6 years ago

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

I close this ticket as there was a release and open a new one with remaining issues: #6786

Also some new issues were found. The most important issues are marked as critical and should be handled soon.

Actions #39

Updated by Andreas Müller over 6 years ago

  • Related to feature request #6805: Implement drag and drop from Term Editor (Feature) to FeatureTreeEditor added
Actions #40

Updated by Andreas Müller over 6 years ago

Actions #41

Updated by Andreas Müller over 6 years ago

  • Related to bug #6838: Implement i18n for FeatureTreeEditor added
Actions #42

Updated by Andreas Müller over 6 years ago

  • Related to bug #6844: New feature tree selection does not allow "no save" added
Actions #43

Updated by Andreas Müller over 6 years ago

  • Related to bug #6845: dirty button does not work in feature tree editor added
Actions #44

Updated by Patrick Plitzner over 6 years ago

  • % Done changed from 70 to 100
Actions

Also available in: Atom PDF