1 21 package com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate; 22 23 import java.util.Iterator ; 24 import java.util.List ; 25 26 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryEventListener; 27 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryEventListenerRegistry; 28 import com.jaspersoft.jasperserver.api.metadata.common.service.ResourceFactory; 29 import com.jaspersoft.jasperserver.api.metadata.common.service.impl.HibernateDeleteListener; 30 import com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent.RepoResource; 31 32 36 public class HibernateResourceDeleteListener implements HibernateDeleteListener, RepositoryEventListenerRegistry { 37 38 private ResourceFactory persistentClassMappings; 39 private List listeners; 40 41 public List getListeners() { 42 return listeners; 43 } 44 45 public void setListeners(List listeners) { 46 this.listeners = listeners; 47 } 48 49 public void registerListener(RepositoryEventListener listener) { 50 this.listeners.add(listener); 51 } 52 53 public void deregisterListener(RepositoryEventListener listener) { 54 this.listeners.remove(listener); 55 } 56 57 public ResourceFactory getPersistentClassMappings() { 58 return persistentClassMappings; 59 } 60 61 public void setPersistentClassMappings(ResourceFactory persistentClassMappings) { 62 this.persistentClassMappings = persistentClassMappings; 63 } 64 65 public void onDelete(Object o) { 66 if (o instanceof RepoResource) { 67 fireListeners((RepoResource) o); 68 } 69 } 70 71 protected void fireListeners(RepoResource resource) { 72 if (listeners != null && !listeners.isEmpty()) { 73 Class resourceItf = persistentClassMappings.getInterface(resource.getClass()); 74 String resourceURI = resource.getResourceURI(); 75 for (Iterator it = listeners.iterator(); it.hasNext();) { 76 RepositoryEventListener listener = (RepositoryEventListener) it.next(); 77 fireListener(listener, resourceItf, resourceURI); 78 } 79 } 80 } 81 82 protected void fireListener(RepositoryEventListener listener, Class resourceItf, String resourceURI) { 83 listener.onResourceDelete(resourceItf, resourceURI); 84 } 85 86 } 87 | Popular Tags |