CHESSIoT_Dev_old-master/org.polarsys.chess.core/src/org/polarsys/chess/core/internal/views/commands/CreateViewsCommand.java
/*
-----------------------------------------------------------------------
--          			CHESS core plugin							 --
--                                                                   --
--                    Copyright (C) 2011-2012                        --
--                 University of Padova, ITALY                       --
--                                                                   --
-- Authors: Alessandro Zovi         azovi@math.unipd.it 		     --
--			Stefano Puri											 --
--                                                                   --
-- All rights reserved. This program and the accompanying materials  --
-- are made available under the terms of the Eclipse Public License  --
-- v1.0 which accompanies this distribution, and is available at     --
-- http://www.eclipse.org/legal/epl-v20.html                         --
-----------------------------------------------------------------------
*/

package org.polarsys.chess.core.internal.views.commands;

import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.transaction.RecordingCommand;
import org.eclipse.papyrus.infra.core.resource.ModelSet;
import org.eclipse.papyrus.uml.tools.model.UmlUtils;
import org.eclipse.uml2.uml.Model;
import org.polarsys.chess.core.internal.extensionpoint.AddProfileHandler;
import org.polarsys.chess.core.profiles.CHESSProfileManager;
import org.polarsys.chess.core.profiles.MARTEProfileManager;
import org.polarsys.chess.core.profiles.SysMLProfileManager;
import org.polarsys.chess.core.util.uml.ResourceUtils;


/**
 * The Class CreateViewsCommand.
 */
public class CreateViewsCommand extends RecordingCommand {

	/** The model set. */
	private ModelSet modelSet;

	/**
	 * Instantiates a new creates the views command.
	 *
	 * @param rs the rs
	 */
	public CreateViewsCommand(ModelSet rs) {
		super(rs.getTransactionalEditingDomain());
		this.modelSet = rs;
	}

	/* (non-Javadoc)
	 * @see org.eclipse.emf.transaction.RecordingCommand#doExecute()
	 */
	@Override
	protected void doExecute() {
		Model currentModel = null;
		if (modelSet != null) {
			currentModel = ResourceUtils.getModel(UmlUtils.getUmlModel(modelSet)
					.getResource());
			new CHESSProfileManager(modelSet);
		
		} 

		viewsToModel(currentModel, modelSet);
		
	}

	/**
	 * Views to model.
	 *
	 * @param currentModel the current model
	 * @param mset the mset
	 */
	public static void viewsToModel(Model currentModel, ModelSet mset) {
		CHESSProfileManager.createModel(currentModel);
		MARTEProfileManager.createModel(currentModel);
		SysMLProfileManager.createModel(currentModel);
		
		AddProfileHandler h = new AddProfileHandler();
		IExtensionRegistry reg =  Platform.getExtensionRegistry();
		h.executeAddProfile(reg, currentModel, mset);	
	}
	
}
