/*****************************************************************************
* Copyright (c)2020 CEA LIST, Committer Name, 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
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* CEA LIST - Initial API and implementation
* Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 
* Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr 
*****************************************************************************/
package org.eclipse.papyrus.pdp4eng.req.gdprananalysis.api;

import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.pdp4eng.req.gdprananalysis.internal.RequirementTestGeneratorImpl;
import org.eclipse.uml2.uml.Package;


/**this is a public API to create Requirement**/
public class RequirementGenerator implements IRequirementGenerator {
	private RequirementTestGeneratorImpl generatorImpl= new RequirementTestGeneratorImpl();


	@Override
	public Command generateArticle51a(TransactionalEditingDomain domain, Package owner) {
		return generatorImpl.generateArticle51a(domain, owner);
	}

	@Override
	public Command generateArticle51b(TransactionalEditingDomain domain, Package owner) {
		return generatorImpl.generateArticle51b(domain, owner);
	}

	@Override
	public Command generateArticle51c(TransactionalEditingDomain domain, Package owner) {
		return generatorImpl.generateArticle51c(domain, owner);
	}
	
	@Override
	public Command generateArticle51d(TransactionalEditingDomain domain, Package owner) {
		return generatorImpl.generateArticle51d(domain, owner);
	}
	public Command generateArticle51f(TransactionalEditingDomain domain, Package owner) {
		return generatorImpl.generateArticle51f(domain, owner);
	}

	@Override
	public Command generateArticle51e(TransactionalEditingDomain domain, Package owner) {
		return generatorImpl.generateArticle51e(domain, owner);
	}

	

}
