/* * $Id: IWSlideChangeTrigger.java,v 1.6 2008/04/24 23:55:01 laddi Exp $ Created on Mar 24, * 2006 * * Copyright (C) 2006 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. Use is subject to * license terms. */ package com.idega.slide.business; import java.rmi.RemoteException; import java.util.Iterator; import java.util.List; 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; import com.idega.business.IBOLookup; import com.idega.business.IBOLookupException; import com.idega.idegaweb.IWMainApplication; /** * Listens for any change to the slide filesystem and notifies * IWSlideChangeListener classes. Useful for decaching stuff and more... * * Last modified: $Date: 2008/04/24 23:55:01 $ by $Author: laddi $ * * @author <a href="mailto:eiki@idega.com">eiki</a> * @version $Revision: 1.6 $ */ public class IWSlideChangeTrigger implements EventCollectionListener { private IWSlideService service; public IWSlideChangeTrigger() { // empty } public void vetoableCollected(EventCollection events) throws VetoException { // Throw a vetoexception if you want to stop the change,add,remove.... /* * ContentEvent[] changedEvents = * EventCollectionFilter.getChangedContents(events); * * for (int i = 0; i < changedEvents.length; i++) { ContentEvent event = * changedEvents[i]; System.out.println("VETO changed: "+event); } * * changedEvents = EventCollectionFilter.getCreatedContents(events); * * for (int i = 0; i < changedEvents.length; i++) { ContentEvent event = * changedEvents[i]; System.out.println("VETO created: "+event); } * * changedEvents = EventCollectionFilter.getRemovedContents(events); * * for (int i = 0; i < changedEvents.length; i++) { ContentEvent event = * changedEvents[i]; System.out.println("VETO removed: "+event); } */ } public void collected(EventCollection events) { this.service = getIWSlideService(); try { IWSlideChangeListener[] listeners = this.service.getIWSlideChangeListeners(); if (listeners != null && listeners.length>0) { // notify on any type of content change List collectedEvents = events.getCollection(); 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); for (int j = 0; j < listeners.length; j++) { IWSlideChangeListener listener = listeners[j]; listener.onSlideChange(iwContentEvent); } } } } // OR WE COULD DO IT FOR EACH TYPE OF CHANGE // ContentEvent[] changedEvents = // EventCollectionFilter.getChangedContents(events); // for (int i = 0; i < changedEvents.length; i++) { // ContentEvent event = changedEvents[i]; // System.out.println("Collected changed: " + event); // } // changedEvents = EventCollectionFilter.getCreatedContents(events); // for (int i = 0; i < changedEvents.length; i++) { // ContentEvent event = changedEvents[i]; // System.out.println("Collected created: " + event); // } // changedEvents = EventCollectionFilter.getRemovedContents(events); // for (int i = 0; i < changedEvents.length; i++) { // ContentEvent event = changedEvents[i]; // System.out.println("Collected removed: " + event); // } } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected IWSlideService getIWSlideService() { try { if (this.service == null) { this.service = (IWSlideService) IBOLookup.getServiceInstance( IWMainApplication.getDefaultIWApplicationContext(), IWSlideService.class); } } catch (IBOLookupException e) { e.printStackTrace(); } return this.service; } }