9a7510a040eb4af13d8368fcc8abac6dde08b99c
[taxeditor.git] / taxeditor-navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / TaxonNavigatorDataChangeBehavior.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.taxeditor.navigation.navigator;
11
12 import org.apache.log4j.Logger;
13 import org.eclipse.ui.navigator.CommonViewer;
14
15 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
16 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeEvent.EventType;
17 import eu.etaxonomy.taxeditor.model.AbstractDataChangeBehaviour;
18 import eu.etaxonomy.taxeditor.model.IDataChangeBehavior;
19
20 /**
21 * @author n.hoffmann
22 * @created 01.04.2009
23 * @version 1.0
24 */
25 public class TaxonNavigatorDataChangeBehavior extends AbstractDataChangeBehaviour implements
26 IDataChangeBehavior {
27 private static final Logger logger = Logger
28 .getLogger(TaxonNavigatorDataChangeBehavior.class);
29
30 private TaxonNavigator source;
31
32 public TaxonNavigatorDataChangeBehavior(TaxonNavigator taxonNavigator) {
33 source = taxonNavigator;
34 }
35
36
37 /* (non-Javadoc)
38 * @see eu.etaxonomy.taxeditor.store.model.IDataChangeBehavior#isRelevant(java.lang.Object, eu.etaxonomy.cdm.persistence.hibernate.CdmCrudEvent)
39 */
40 public boolean isRelevant(CdmDataChangeMap events) {
41 // react on everything except load
42 if(events.sizeByEventType(EventType.INSERT) > 0){
43 return true;
44 }else if(events.sizeByEventType(EventType.UPDATE) > 0){
45 return true;
46 }else if(events.sizeByEventType(EventType.DELETE) > 0){
47 return true;
48 }else{
49 return false;
50 }
51 }
52
53
54 /* (non-Javadoc)
55 * @see eu.etaxonomy.taxeditor.store.model.IDataChangeBehavior#reactOnDataChange(java.lang.Object, eu.etaxonomy.cdm.persistence.hibernate.CdmCrudEvent)
56 */
57 public void reactOnDataChange(CdmDataChangeMap events) {
58
59 if(isRelevant(events)){
60
61 CommonViewer viewer = source.getCommonViewer();
62
63 viewer.refresh();
64
65 logger.info("DataStore update caused a refresh of the taxonomic tree");
66
67 }
68 }
69 }