package com.idega.slide.jcr; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.jcr.RepositoryException; import javax.jcr.UnsupportedRepositoryOperationException; import javax.jcr.observation.Event; import javax.jcr.observation.EventIterator; import javax.jcr.observation.EventListener; import javax.jcr.observation.EventListenerIterator; import javax.jcr.observation.ObservationManager; import org.apache.slide.event.AbstractEventMethod; import org.apache.slide.event.ContentEvent; import org.apache.slide.event.EventCollection; import org.apache.slide.event.EventCollectionListener; import org.apache.slide.event.VetoException; /** * <p> * Trigger to map against the JCR Observation mechanism - not finished * </p> * Last modified: $Date: 2009/01/06 15:17:20 $ by $Author: tryggvil $ * * @author <a href="mailto:tryggvil@idega.com">tryggvil</a> * @version $Revision: 1.2 $ */ public class SlideJCRChangeTrigger implements EventCollectionListener { private SlideRepository slideRepository; @Override public void collected(EventCollection events) { List collectedEvents = events.getCollection(); List<Event> jcrEvents = new ArrayList<Event>(); for (Iterator i = collectedEvents.iterator(); i.hasNext();) { EventCollection.Event event = (EventCollection.Event) i.next(); AbstractEventMethod method = event.getMethod(); if(ContentEvent.REMOVE.equals(method) || ContentEvent.CREATE.equals(method) || ContentEvent.STORE.equals(method) ){ //ContentEvent contentEvent = (ContentEvent)event.getEvent(); //IWContentEvent iwContentEvent = new IWContentEvent(event); SlideJCREvent jcrEvent = new SlideJCREvent(event); jcrEvents.add(jcrEvent); } } //Repository repository = getRepository(); //Session session = getSession(); SlideRepository slideRepo=getSlideRepository(); ObservationManager observationManager; try { if(slideRepo!=null){ observationManager = slideRepo.getDefaultObservationManager(); EventListenerIterator iterator = observationManager.getRegisteredEventListeners(); while(iterator.hasNext()){ EventListener listener = iterator.nextEventListener(); EventIterator eventiterator = new IteratorHelper<Event>(jcrEvents); listener.onEvent(eventiterator); } } } catch (UnsupportedRepositoryOperationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (RepositoryException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /*private Session getSession() { // TODO Auto-generated method stub return getRepository().l; } private Repository getRepository() { // TODO Auto-generated method stub return null; }*/ @Override public void vetoableCollected(EventCollection collection) throws VetoException { // TODO Auto-generated method stub } @SuppressWarnings("unused") private void setSlideRepository(SlideRepository slideRepository) { this.slideRepository = slideRepository; } private SlideRepository getSlideRepository() { return slideRepository; } }