blob: cbaff694ca340b6ea482cc87738be97eed8ef59c [file] [log] [blame]
/*******************************************************************************
* Copyright (C) 2020
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
******************************************************************************/
package org.polarsys.chess.core.internal.extensionpoint;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.ISafeRunnable;
import org.eclipse.core.runtime.SafeRunner;
import org.eclipse.emf.ecore.resource.ResourceSet;
//import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.uml2.uml.Model;
import org.polarsys.chess.core.Activator;
import org.polarsys.chess.core.extensionpoint.IAddProfile;
/**
* The Class AddProfileHandler.
*/
public class AddProfileHandler {
/** The Constant ADDPROFILE_ID. */
private static final String ADDPROFILE_ID =
"org.polarsys.chess.addprofile";
/**
* Execute add profile.
*
* @param registry the registry
* @param owner the owner
* @param resourceSet the resource set
*/
public void executeAddProfile(IExtensionRegistry registry, Model owner, ResourceSet resourceSet) {
evaluateAddProfile(registry, owner, resourceSet);
}
/**
* Evaluate add profile.
*
* @param registry the registry
* @param owner the owner
* @param resourceSet the resource set
*/
private void evaluateAddProfile(IExtensionRegistry registry, Model owner, ResourceSet resourceSet) {
IConfigurationElement[] config =
registry.getConfigurationElementsFor(ADDPROFILE_ID);
try {
for (IConfigurationElement e : config) {
System.out.println("Evaluating extension");
final Object o =
e.createExecutableExtension("class");
if (o instanceof IAddProfile) {
addProfile(o, owner, resourceSet);
}
}
} catch (CoreException ex) {
System.out.println(ex.getMessage());
Activator.error("evaluateAddProfile error", ex);
}
}
/**
* Adds the profile.
*
* @param o the o
* @param owner the owner
* @param resourceSet the resource set
*/
private void addProfile(final Object o, final Model owner, final ResourceSet resourceSet) {
ISafeRunnable runnable = new ISafeRunnable() {
@Override
public void handleException(Throwable e) {
System.out.println("Exception in client");
Activator.error("Exception in client", e);
}
@Override
public void run() throws Exception {
((IAddProfile) o).addProfile(owner, resourceSet);
}
};
SafeRunner.run(runnable);
}
/**
* Execute load profile.
*
* @param registry the registry
* @param resourceSet the resource set
*/
public void executeLoadProfile(IExtensionRegistry registry, ResourceSet resourceSet) {
evaluateLoadProfile(registry, resourceSet);
}
/**
* Evaluate load profile.
*
* @param registry the registry
* @param resourceSet the resource set
*/
private void evaluateLoadProfile(IExtensionRegistry registry, ResourceSet resourceSet) {
IConfigurationElement[] config =
registry.getConfigurationElementsFor(ADDPROFILE_ID);
try {
for (IConfigurationElement e : config) {
System.out.println("Evaluating extension");
final Object o =
e.createExecutableExtension("class");
if (o instanceof IAddProfile) {
loadProfile(o, resourceSet);
}
}
} catch (CoreException ex) {
System.out.println(ex.getMessage());
Activator.error("EvaluateLoadProfile error", ex);
}
}
/**
* Load profile.
*
* @param o the o
* @param resourceSet the resource set
*/
private void loadProfile(final Object o, final ResourceSet resourceSet) {
ISafeRunnable runnable = new ISafeRunnable() {
@Override
public void handleException(Throwable e) {
System.out.println("Exception in client");
Activator.error("Exception in client", e);
}
@Override
public void run() throws Exception {
((IAddProfile) o).loadProfile(resourceSet);
}
};
SafeRunner.run(runnable);
}
}