/* * 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.ui.actions; import org.eclipse.core.resources.IFile; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Shell; import org.teiid.designer.core.util.ModelStatisticsVisitor; import org.teiid.designer.core.util.ModelVisitorProcessor; import org.teiid.designer.core.util.PrimaryMetamodelStatisticsVisitor; import org.teiid.designer.core.workspace.ModelResource; import org.teiid.designer.core.workspace.ModelUtil; import org.teiid.designer.ui.UiConstants; import org.teiid.designer.ui.UiPlugin; import org.teiid.designer.ui.viewsupport.ModelStatisticsDialog; /** * @since 8.0 */ public class ModelStatisticsReporter { private IFile modelFile; public ModelStatisticsReporter(IFile iFile) { super(); this.modelFile = iFile; } public void show() { final ModelStatisticsVisitor visitor = new PrimaryMetamodelStatisticsVisitor(); // or PrimaryMetamodelStatisticsVisitor() final int mode = ModelVisitorProcessor.MODE_VISIBLE_CONTAINMENTS; // show only those objects visible to user final ModelVisitorProcessor processor = new ModelVisitorProcessor(visitor,mode); final Shell shell = UiPlugin.getDefault().getCurrentWorkbenchWindow().getShell(); try { ModelResource resource = ModelUtil.getModelResource(modelFile, true); if ( resource != null ) { processor.walk(resource, ModelVisitorProcessor.DEPTH_INFINITE); ModelStatisticsDialog dialog = new ModelStatisticsDialog(shell, visitor, resource); dialog.open(); } } catch (Exception e) { UiConstants.Util.log(e); final String title = UiConstants.Util.getString("ModelStatisticsAction.errorTitle"); //$NON-NLS-1$ final String message = UiConstants.Util.getString("ModelStatisticsAction.errorMessage"); //$NON-NLS-1$ MessageDialog.openError(shell, title, message); } } }