blob: aa4acd7b0c465fdcc65aeddbd8be180ba7d3c12e [file] [log] [blame]
package org.eclipse.epf.toolbox.actions;
import java.util.List;
import java.util.Set;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.epf.common.CommonPlugin;
import org.eclipse.epf.diagram.core.DiagramCorePlugin;
import org.eclipse.epf.diagram.core.services.DiagramHelper;
import org.eclipse.epf.diagram.core.services.DiagramManager;
import org.eclipse.epf.library.LibraryService;
import org.eclipse.epf.library.edit.util.IDiagramManager;
import org.eclipse.epf.services.Services;
import org.eclipse.epf.services.ILibraryPersister.FailSafeMethodLibraryPersister;
import org.eclipse.epf.toolbox.ToolboxPlugin;
import org.eclipse.epf.toolbox.libutil.LibUtil;
import org.eclipse.epf.uma.Activity;
import org.eclipse.epf.uma.MethodLibrary;
import org.eclipse.epf.uma.Process;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
public class ConvertTosynFree implements IWorkbenchWindowActionDelegate {
private static boolean debug = ToolboxPlugin.getDefault().isDebugging();
public void dispose() {
// TODO Auto-generated method stub
}
public void init(IWorkbenchWindow window) {
// TODO Auto-generated method stub
}
public void run(IAction action) {
if (debug) {
System.out.println("");
System.out.println("LD> Begin: ConvertTosynFree.run()");
}
MethodLibrary lib = LibraryService.getInstance().getCurrentMethodLibrary();
// Converstion test
// SynFreeProcessConverter converter = new SynFreeProcessConverter();
// converter.convertLibrary(lib);
// Diagram clean-up test
Set<Process> processes = LibUtil.collectProcesses(lib);
for (Process proc : processes) {
System.out.println("LD> proc: " + proc);
DiagramManager mgr = DiagramManager.getInstance(proc, this);
for (Activity act : LibUtil.collectActivities(proc)) {
if (act.getName().equals("fi_Provide Input to RFQ")) {
System.out.println("LD> act: " + act);
try {
List<Diagram> diagrams = mgr.getDiagrams(act,
IDiagramManager.ACTIVITY_DIAGRAM);
Resource resource = null;
boolean toDelete = false;
for (Diagram diagram : diagrams) {
if (toDelete) {
DiagramHelper.deleteDiagram(diagram, false);
} else {
resource = diagram.eResource();
toDelete = true;
}
}
FailSafeMethodLibraryPersister persister = Services
.getLibraryPersister(
Services.XMI_PERSISTENCE_TYPE)
.getFailSafePersister();
try {
persister.save(resource);
persister.commit();
} catch (Exception e) {
CommonPlugin.getDefault().getLogger().logError(e);
persister.rollback();
throw new CoreException(new Status(IStatus.ERROR,
DiagramCorePlugin.PLUGIN_ID, 1, e
.getLocalizedMessage(), null));
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
System.out.println("");
}
if (debug) {
System.out.println("LD> End: ConvertTosynFree.run()");
}
}
public void selectionChanged(IAction action, ISelection selection) {
// TODO Auto-generated method stub
}
}