/*******************************************************************************
 * Copyright (c) 2017 Christian W. Damus and others.
 * 
 * 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-v10.html
 * 
 * Contributors:
 *     Christian W. Damus - initial API and implementation
 *******************************************************************************/
package org.eclipse.emf.compare.uml2.tests.stereotypes.data.conflict;

import java.io.IOException;

import org.eclipse.emf.compare.uml2.tests.AbstractUMLInputData;
import org.eclipse.emf.ecore.resource.Resource;

public class StereotypeApplicationConflictInputData extends AbstractUMLInputData {

	public Resource getA1Base() throws IOException {
		return loadFromClassLoader("a1/origin.uml"); //$NON-NLS-1$
	}

	public Resource getA1Left() throws IOException {
		return loadFromClassLoader("a1/left.uml"); //$NON-NLS-1$
	}

	public Resource getA1Right() throws IOException {
		return loadFromClassLoader("a1/right.uml"); //$NON-NLS-1$
	}

	public Resource getA2Base() throws IOException {
		return loadFromClassLoader("a2/origin.uml"); //$NON-NLS-1$
	}

	public Resource getA2Left() throws IOException {
		return loadFromClassLoader("a2/left.uml"); //$NON-NLS-1$
	}

	public Resource getA2Right() throws IOException {
		return loadFromClassLoader("a2/right.uml"); //$NON-NLS-1$
	}

	public Resource getA3Base() throws IOException {
		return loadFromClassLoader("a3/origin.uml"); //$NON-NLS-1$
	}

	public Resource getA3Left() throws IOException {
		return loadFromClassLoader("a3/left.uml"); //$NON-NLS-1$
	}

	public Resource getA3Right() throws IOException {
		return loadFromClassLoader("a3/right.uml"); //$NON-NLS-1$
	}

	public Resource getA4Base() throws IOException {
		return loadFromClassLoader("a4/origin.uml"); //$NON-NLS-1$
	}

	public Resource getA4Left() throws IOException {
		return loadFromClassLoader("a4/left.uml"); //$NON-NLS-1$
	}

	public Resource getA4Right() throws IOException {
		return loadFromClassLoader("a4/right.uml"); //$NON-NLS-1$
	}

	public Resource getA5Base() throws IOException {
		return loadFromClassLoader("a5/origin.uml"); //$NON-NLS-1$
	}

	public Resource getA5Left() throws IOException {
		return loadFromClassLoader("a5/left.uml"); //$NON-NLS-1$
	}

	public Resource getA5Right() throws IOException {
		return loadFromClassLoader("a5/right.uml"); //$NON-NLS-1$
	}

	public Resource getA6Base() throws IOException {
		return loadFromClassLoader("a6/origin.uml"); //$NON-NLS-1$
	}

	public Resource getA6Left() throws IOException {
		return loadFromClassLoader("a6/left.uml"); //$NON-NLS-1$
	}

	public Resource getA6Right() throws IOException {
		return loadFromClassLoader("a6/right.uml"); //$NON-NLS-1$
	}

}
