+++ /dev/null
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.taxeditor.editor.e4;
-
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
-import eu.etaxonomy.taxeditor.model.AbstractDataChangeBehaviour_;
-
-/**
- * @author pplitzner
- * @date Aug 24, 2017
- */
-public class TaxonEditorInputDataChangeBehaviourE4_ extends
- AbstractDataChangeBehaviour_ {
-
- private TaxonEditorInputE4 source;
-
- public TaxonEditorInputDataChangeBehaviourE4_(TaxonEditorInputE4 taxonEditorInput) {
- source = taxonEditorInput;
- }
-
- @Override
- public void reactOnDataChange(CdmDataChangeMap events) {
- //source.update(events);
-
- }
-}
+++ /dev/null
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.taxeditor.editor.key.e4;
-
-import java.util.Vector;
-
-import eu.etaxonomy.cdm.model.description.PolytomousKey;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
-import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput;
-import eu.etaxonomy.taxeditor.editor.key.polytomous.e4.PolytomousKeyListEditorE4;
-import eu.etaxonomy.taxeditor.model.AbstractDataChangeBehaviour_;
-
-/**
- * @author n.hoffmann
- * @created May 5, 2011
- */
-public class KeyEditorDataChangeBehaviourE4_ extends AbstractDataChangeBehaviour_ {
-
- private final PolytomousKeyListEditorE4 source;
- private PolytomousKeyEditorInput input;
-
- public KeyEditorDataChangeBehaviourE4_(PolytomousKeyListEditorE4 keyEditor) {
- source = keyEditor;
- }
-
- @Override
- public void reactOnDataChange(CdmDataChangeMap changeEvents) {
- input = source.getEditorInput();
-
- if(changeEvents.sizeByEventType(EventType.UPDATE) > 0){
- reactOnUpdate(changeEvents.getEvents(EventType.UPDATE));
- }
- }
-
- @Override
- public void reactOnUpdate(Vector<CdmDataChangeEvent> events){
-
- for(CdmDataChangeEvent event : events){
-
- // update editor title
- if(event.getEntity() instanceof PolytomousKey){
- if(input.getKey().equals(event.getEntity())){
- // set the name of the editor window
- source.setPartName();
- }
- }
- }
- }
-}
+++ /dev/null
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.taxeditor.navigation.key.polytomous.e4;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.swt.widgets.Display;
-
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.description.PolytomousKey;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
-import eu.etaxonomy.taxeditor.model.AbstractDataChangeBehaviour_;
-import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
-
-/**
- *
- * @author pplitzner
- * @since Sep 28, 2017
- *
- */
-public class PolytomousKeyViewPartDataChangeBehaviorE4_ extends
- AbstractDataChangeBehaviour_ {
-
- private static final String UPDATING_POLYTOMOUS_KEY_VIEWER = Messages.PolytomousKeyViewPartDataChangeBehavior_UPDATE;
- private final PolytomousKeyViewPartE4 source;
-
- public PolytomousKeyViewPartDataChangeBehaviorE4_(
- PolytomousKeyViewPartE4 polytomousKeyViewPart) {
- source = polytomousKeyViewPart;
- }
-
- @Override
- public void reactOnDataChange(CdmDataChangeMap changeEvents) {
- if(isRelevant(changeEvents)){
- final Display display = Display.getCurrent();
- Job job = new Job(UPDATING_POLYTOMOUS_KEY_VIEWER) {
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- monitor.beginTask(UPDATING_POLYTOMOUS_KEY_VIEWER, 3);
- monitor.worked(1);
-
- // clear the session completely
- monitor.subTask(Messages.PolytomousKeyViewPartDataChangeBehavior_CLEAR);
- display.asyncExec(new Runnable() {
- @Override
- public void run() {
-// source.getConversationHolder().clear();
- }
- });
- // FIXME completely clearing the session is a brute force approach.
- // It would be much more elegant to clear only those elements that have been changed.
- // I could not get that to work but we should consider workin on this because we might
- // run into serious performance issues, especially when it comes to large trees
- //
- // at least, we moved this to a job so it can run in a background thred
- // seems to improve the situation but not sure if final solution
- monitor.worked(1);
-
- monitor.subTask(Messages.PolytomousKeyViewPartDataChangeBehavior_REFRESH);
-
- display.asyncExec(new Runnable() {
- @Override
- public void run() {
- source.refresh();
- }
- });
-
-
-
- monitor.worked(1);
- monitor.done();
- return Status.OK_STATUS;
- }
- };
-
- job.setPriority(Job.SHORT);
- job.schedule();
-
- }
- }
-
- private boolean isRelevant(CdmDataChangeMap changeEvents) {
- for(CdmDataChangeEvent event : changeEvents.getAllEvents()){
- EventType eventType = event.getEventType();
- CdmBase eventEntity = event.getEntity();
-
- // all poyltomous key changes are relevant
- if((eventType == EventType.INSERT || eventType == EventType.DELETE || eventType == EventType.UPDATE)
- && eventEntity instanceof PolytomousKey){
- return true;
- }
- }
- return false;
- }
-}
+++ /dev/null
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.taxeditor.navigation.navigator.e4;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.swt.widgets.Display;
-
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
-import eu.etaxonomy.taxeditor.model.AbstractDataChangeBehaviour_;
-import eu.etaxonomy.taxeditor.model.IDataChangeBehavior;
-import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
-
-/**
- * <p>TaxonNavigatorDataChangeBehavior class.</p>
- *
- * @author n.hoffmann
- * @created 01.04.2009
- * @version 1.0
- */
-public class TaxonNavigatorDataChangeBehaviorE4_ extends AbstractDataChangeBehaviour_ implements
- IDataChangeBehavior {
-
- private static final String UPDATING_TAXON_NAVIGATOR = Messages.TaxonNavigatorDataChangeBehavior_UPDATE_NAVIGATOR;
-
- private final TaxonNavigatorE4 source;
-
- private Set<CdmBase> staleObjects;
-
- /**
- * <p>Constructor for TaxonNavigatorDataChangeBehavior.</p>
- *
- * @param taxonNavigator a {@link eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator} object.
- */
- public TaxonNavigatorDataChangeBehaviorE4_(TaxonNavigatorE4 taxonNavigator) {
- source = taxonNavigator;
- }
-
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.store.model.IDataChangeBehavior#isRelevant(java.lang.Object, eu.etaxonomy.cdm.persistence.hibernate.CdmCrudEvent)
- */
- /**
- * <p>isRelevant</p>
- *
- * @param events a {@link eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap} object.
- * @return a boolean.
- */
- public boolean isRelevant(CdmDataChangeMap events) {
-
- // TODO react only on insert/update/delete of taxon and synonym objects
- // and on update of name objects
- boolean relevant = false;
- staleObjects = new HashSet<CdmBase>();
-
- for(CdmDataChangeEvent event : events.getAllEvents()){
- EventType eventType = event.getEventType();
- CdmBase eventEntity = event.getEntity();
-
- Set<CdmBase> affectedObjects = event.getAffectedObjects();
- if(affectedObjects != null) {
- for(CdmBase cb : affectedObjects) {
- staleObjects.add(HibernateProxyHelper.deproxy(cb));
- }
- }
-
- // all tree node changes are relevant
- if((eventType == EventType.INSERT || eventType == EventType.DELETE || eventType == EventType.UPDATE)
- && event.getEntity() instanceof ITaxonTreeNode){
- return true;
- }
-
- if (eventType == EventType.DELETE){
- return true;
- }
-
-
-
- if(eventType == EventType.UPDATE && event.getEntity() instanceof Taxon){
- TaxonName name = null;
- if(eventEntity instanceof Taxon){
- name = ((Taxon) eventEntity).getName();
- }else{
- continue;
- }
-
- // Set<IEditorPart> openEditors = NavigationUtil.getOpenEditors();
- /*for(IEditorPart editor : openEditors){
-
- if(name.equals(((TaxonEditorInput) editor.getEditorInput()).getTaxon().getName())){
- return true;
- }
- }*/
- }
-
-// if(eventType == EventType.UPDATE){
-// relevant = true;
-// CdmBase entity = event.getEntity();
-// if((entity instanceof TaxonNameBase)
-// || (entity instanceof Taxon)
-// || (entity instanceof Synonym)){
-// staleObjects.add(entity);
-// }
-// }
- }
-
- return false;
-
- // @deprecated
- // react on everything except load
-// if(events.sizeByEventType(EventType.INSERT) > 0){
-// return true;
-// }else if(events.sizeByEventType(EventType.UPDATE) > 0){
-// return true;
-// }else if(events.sizeByEventType(EventType.DELETE) > 0){
-// return true;
-// }else{
-// return false;
-// }
- }
-
- /** {@inheritDoc} */
- @Override
- public void reactOnDataChange(CdmDataChangeMap events) {
- if(isRelevant(events)){
-
- final Display display = Display.getCurrent();
- Job job = new Job(UPDATING_TAXON_NAVIGATOR) {
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- monitor.beginTask(UPDATING_TAXON_NAVIGATOR, 3);
- monitor.worked(1);
-
- // clear the session completely
- monitor.subTask(Messages.TaxonNavigatorDataChangeBehavior_CLEAR_SESSION);
- display.asyncExec(new Runnable() {
- @Override
- public void run() {
- //TODO: check wether we can remove this
-
- //source.getConversationHolder().clear();
- }
- });
- // FIXME completely clearing the session is a brute force approach.
- // It would be much more elegant to clear only those elements that have been changed.
- // I could not get that to work but we should consider workin on this because we might
- // run into serious performance issues, especially when it comes to large trees
- //
- // at least, we moved this to a job so it can run in a background thred
- // seems to improve the situation but not sure if final solution
- monitor.worked(1);
-
- monitor.subTask(Messages.TaxonNavigatorDataChangeBehavior_REFRESH_VIEWER);
-
- display.asyncExec(new Runnable() {
- @Override
- public void run() {
- if(staleObjects != null && staleObjects.size() > 0) {
- source.refresh(staleObjects);
- } else {
- source.refresh();
- }
- }
- });
-
-
-
- monitor.worked(1);
- monitor.done();
- return Status.OK_STATUS;
- }
- };
-
- job.setPriority(Job.SHORT);
- job.schedule();
-
- }
- }
-}
+++ /dev/null
-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.taxeditor.model;
-
-import java.util.Vector;
-
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
-
-/**
- * Reactions on specific EventyTypes are overridden here for convenience.
- *
- * @author n.hoffmann
- * @created 09.04.2009
- * @version 1.0
- */
-public abstract class AbstractDataChangeBehaviour_ implements IDataChangeBehavior {
-
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.store.model.IDataChangeBehavior#reactOnDataChange(java.lang.Object, java.util.List)
- */
- /** {@inheritDoc} */
- public abstract void reactOnDataChange(CdmDataChangeMap events);
-
- /**
- * {@inheritDoc}
- *
- * Implementors should overwrite this method if needed
- * @see eu.etaxonomy.taxeditor.model.IDataChangeBehavior#reactOnDelete(java.lang.Object, eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent)
- */
- public void reactOnDelete(Vector<CdmDataChangeEvent> event) {}
-
- /**
- * {@inheritDoc}
- *
- * Implementors should overwrite this method if needed
- * @see eu.etaxonomy.taxeditor.model.IDataChangeBehavior#reactOnInsert(java.lang.Object, eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent)
- */
- public void reactOnInsert(Vector<CdmDataChangeEvent> event) {}
-
- /**
- * {@inheritDoc}
- *
- * Implementors should overwrite this method if needed
- * @see eu.etaxonomy.taxeditor.model.IDataChangeBehavior#reactOnUpdate(java.lang.Object, eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent)
- */
- public void reactOnUpdate(Vector<CdmDataChangeEvent> event) {}
-}