ref #6794 change FeatureTree to TermTree
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / persistence / hibernate / CdmDeleteListener.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.cdm.persistence.hibernate;
11
12 import java.util.Set;
13
14 import org.apache.log4j.Logger;
15 import org.hibernate.HibernateException;
16 import org.hibernate.event.spi.DeleteEvent;
17 import org.hibernate.event.spi.DeleteEventListener;
18
19 import eu.etaxonomy.cdm.model.common.RelationshipBase;
20
21 /**
22 * @author a.mueller
23 * @since 04.03.2009
24 */
25 public class CdmDeleteListener implements DeleteEventListener {
26
27 private static final long serialVersionUID = -5511287200489449838L;
28 protected static final Logger logger = Logger.getLogger(CdmDeleteListener.class);
29
30 @Override
31 public void onDelete(DeleteEvent event) throws HibernateException {
32 Object entity = event.getObject();
33 if(entity != null && RelationshipBase.class.isAssignableFrom(entity.getClass())) {
34 logger.info("Deleting " + entity);
35 deleteRelationship(event, entity);
36 }
37 }
38
39 @Override
40 public void onDelete(DeleteEvent event, Set transientEntities)throws HibernateException {
41 Object entity = event.getObject();
42 if(entity != null && RelationshipBase.class.isAssignableFrom(entity.getClass())) {
43 logger.info("Deleting " + entity);
44 deleteRelationship(event, entity);
45 }
46 }
47
48 /**
49 * @param event
50 * @param entity
51 */
52 private void deleteRelationship(DeleteEvent event, Object entity) {
53 RelationshipBase relationshipEntity = (RelationshipBase)entity;
54 /* if (relationshipEntity.isRemoved()){
55 Set<IRelated> deletedObjects = relationshipEntity.getDeletedObjects();
56 for (IRelated rel : deletedObjects){
57 if (rel != null){
58 logger.info("Updating related entity " + rel);
59 Object o = CdmBase.deproxy(rel, CdmBase.class);
60 EntityEntry entry = event.getSession().getPersistenceContext().getEntry(o);
61 if (entry == null){
62 // System.out.println();
63 }
64 if (!entry.getStatus().equals(Status.DELETED)){
65 event.getSession().update(rel);
66 }
67 }
68 }
69 }*/
70 }
71 }