/*****************************************************************************
 * Copyright (c) 2018 CEA LIST and others.
 * 
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   CEA LIST - Initial API and implementation
 *   
 *****************************************************************************/

package org.eclipse.papyrus.cdo.benchmarks.tests;

import java.util.List;

import org.eclipse.emf.common.util.URI;
import org.eclipse.papyrus.infra.core.resource.ModelSet;
import org.eclipse.papyrus.infra.core.services.ServiceMultiException;
import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
import org.eclipse.uml2.uml.Model;

/**
 * @author VL222926
 *
 */
public interface IPapyrusModelCreation {

	/**
	 * This methods creates:
	 * <ul>
	 * <li>the Papyrus service registry</li>
	 * <li>the ModelSet</li>
	 * <li>all the required Papyrus files (uml, notation, di and others)</li>
	 * 
	 * </ul>
	 * 
	 * @param folderName
	 *            the name of the folder where the files will be created
	 * @param modelName
	 *            the name of the root model
	 * @param profilesName TODO
	 * @throws Exception 
	 */
	public void initPapyrusEnvironnement(final String folderName, final String modelName, List<String> profilesName) throws Exception;

	/**
	 * 
	 * @return
	 * 		the created {@link ModelSet} or <code>null</code>
	 */
	public ModelSet getModelSet();

	/**
	 * 
	 * @return
	 * 		the created {@link ServicesRegistry} or <code>null</code>
	 */
	public ServicesRegistry getServicesRegistry();

	public void disposeAll() throws ServiceMultiException;

	public Model getModelRoot();



}
