/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.diagram.ui.pakkage; import org.eclipse.core.runtime.IStatus; import org.eclipse.emf.ecore.EObject; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.core.workspace.ModelResource; import org.teiid.designer.core.workspace.ModelUtil; import org.teiid.designer.core.workspace.ModelWorkspaceException; import org.teiid.designer.diagram.ui.DiagramUiConstants; import org.teiid.designer.diagram.ui.PluginConstants; import org.teiid.designer.metamodels.diagram.Diagram; /** * @since 8.0 */ public class PackageDiagramUtil { private static boolean PERSIST_PACKAGE_DIAGRAMS = true; private static boolean DO_NOT_PERSIST_PACKAGE_DIAGRAMS = false; public static Diagram createPackageDiagram(EObject target, ModelResource modelResource) { Diagram result = null; boolean requiresStart = false; boolean succeeded = false; boolean persist = PERSIST_PACKAGE_DIAGRAMS; if( modelResource != null && modelResource.getResource() != null ){ if(ModelUtil.isIResourceReadOnly(modelResource.getResource())) persist = DO_NOT_PERSIST_PACKAGE_DIAGRAMS; } try { requiresStart = ModelerCore.startTxn(false, true, "Create Package Diagram", target); //$NON-NLS-1$ result = modelResource.getModelDiagrams().createNewDiagram(target, persist); result.setType(PluginConstants.PACKAGE_DIAGRAM_TYPE_ID); succeeded = true; } catch (ModelWorkspaceException e) { if ( !modelResource.hasErrors() ) { // Unexpected ... String message = DiagramUiConstants.Util.getString("PackageDiagramContentProvider.createPackageDiagramError", modelResource.toString()); //$NON-NLS-1$ DiagramUiConstants.Util.log(IStatus.ERROR, e, message); } } finally { if( requiresStart ) { if ( succeeded ) { ModelerCore.commitTxn( ); } else { ModelerCore.rollbackTxn( ); } } } return result; } }