/*******************************************************************************
* Copyright (c) 2012 Olivier Moises
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Olivier Moises- initial API and implementation
*******************************************************************************/
package org.eclipse.wazaabi.engine.edp;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.wazaabi.engine.edp.adapters.EventHandlerAdapter;
import org.eclipse.wazaabi.engine.edp.exceptions.OperationAborted;
import org.eclipse.wazaabi.mm.edp.EventDispatcher;
import org.eclipse.wazaabi.mm.edp.events.Event;
import org.eclipse.wazaabi.mm.edp.handlers.EventHandler;
public class EDPUtils {
/**
* This method throws a given event to the dispatcher.
*
* @param dispatcher
* @param event
*/
public static void throwEvent(EventDispatcher dispatcher, Event event) {
if (dispatcher == null || event == null || "".equals(event.getId())) //$NON-NLS-1$
return;
for (EventHandler eventHandler : dispatcher.getHandlers())
for (Event listenedEvent : eventHandler.getEvents())
if (event.getId().equals(listenedEvent.getId()))
for (Adapter adapter : eventHandler.eAdapters())
if (adapter instanceof EventHandlerAdapter)
try {
((EventHandlerAdapter) adapter).trigger(event);
} catch (OperationAborted e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println(e.getErrorMessage());
}
}
/**
* Returns the (smart) concatenation of the prefix and the relativePath.
*
* @param prefix
* @param relativePath
* @return A normalized URI or null
*/
public static String normalizeURI(String prefix, String relativePath) {
if (prefix == null)
return relativePath;
if (relativePath == null)
return prefix;
if (relativePath.startsWith(prefix)) //$NON-NLS-1$
return relativePath;
if (!relativePath.startsWith("//")) {
if (relativePath.startsWith("/")) //$NON-NLS-1$
relativePath = relativePath.substring(1);
if (prefix.endsWith("/")) //$NON-NLS-1$
return prefix + relativePath;
else if (prefix.startsWith("urn:")) //$NON-NLS-1$
return prefix + relativePath;
else
return prefix + '/' + relativePath;
}
return null;
}
}