/*****************************************************************************
 * 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 org.eclipse.gmf.runtime.emf.type.core.IHintedType;

/**
 * @author VL222926
 *
 */
public class CDOUniqueIndexCreationTest extends AbstractUniqueIndexCreationTest {

	/**
	 * @see org.eclipse.papyrus.cdo.benchmarks.tests.AbstractPerfTest#createPapyrusModelCreation()
	 *
	 * @return
	 */
	@Override
	protected IPapyrusModelCreation createPapyrusModelCreation() {
		return new CDOPapyrusModelCreation();
	}

	/**
	 * @see org.eclipse.papyrus.cdo.benchmarks.tests.AbstractPerfTest#createTimeExecutionHelper(int, IHintedType)
	 *
	 * @param nbClasses
	 * @return
	 */
	@Override
	protected ExecutionTimeHelper createTimeExecutionHelper(int nbClasses, IHintedType elementType) {
		final String id = elementType.getId();
		ExecutionTimeHelper helper = new ExecutionTimeHelper("CDO Project: Create " + nbClasses + " " + id + " with Unique Index.", ExecutionTimeHelper.CDO_TYPE, nbClasses, id);
		merger.addTimeHelper(helper);
		return helper;
	}

}
