/* * 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.util; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.teiid.core.designer.util.CoreArgCheck; import org.teiid.designer.core.refactor.AbstractRefactorModelHandler; import org.teiid.designer.core.workspace.ModelDiagrams; 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.metamodels.diagram.Diagram; /** * This class provides the mapping plugin a mechanism to affect changes internal to any model during * Model refactoring operations. (i.e. Move & Rename) * * In particular, a Rename of model could result in mis-named hrefs in diagram entity references that could become * stale. * * * * @since 8.0 */ public class DiagramRefactorModelHandler extends AbstractRefactorModelHandler { @Override public boolean preProcess(RefactorType refactorType, IResource refactoredResource, IProgressMonitor monitor) { CoreArgCheck.isNotNull(refactoredResource, "modelResource"); //$NON-NLS-1$ try { if(! ModelUtil.isXmiFile(refactoredResource)) return true; ModelResource modelResource = ModelUtil.getModel(refactoredResource); if (modelResource == null) return true; // If no resource then no diagrams to clean up! ModelDiagrams modelDiagrams = modelResource.getModelDiagrams(); if (modelDiagrams != null) { for( Object diagram : modelDiagrams.getDiagrams() ) { DiagramEntityManager.cleanDiagramEntities((Diagram)diagram); DiagramEntityManager.cleanUpDiagram((Diagram)diagram); } } } catch (ModelWorkspaceException e) { DiagramUiConstants.Util.log(IStatus.ERROR, e, e.getMessage()); return false; } return true; } }