/** * Copyright (c) 2012, 2014 Obeo. * 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: * Obeo - initial API and implementation */ package org.eclipse.emf.compare.tests.fullcomparison.data.dynamic; import java.io.IOException; import java.util.Collection; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.compare.tests.framework.AbstractInputData; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EcoreFactory; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; @SuppressWarnings({"nls", "unchecked", }) public class DynamicInstancesInputData extends AbstractInputData { private EPackage pak; private EClass testElement; private EClass container; private EObject containerInstance; public DynamicInstancesInputData() { pak = EcoreFactory.eINSTANCE.createEPackage(); pak.setNsURI("testPackageNSURI"); pak.setName("testPackage"); pak.setNsPrefix("testPackagePrefix"); testElement = EcoreFactory.eINSTANCE.createEClass(); pak.getEClassifiers().add(testElement); testElement.setName("TestElement"); container = EcoreFactory.eINSTANCE.createEClass(); pak.getEClassifiers().add(container); container.setName("Container"); EReference content = EcoreFactory.eINSTANCE.createEReference(); content.setContainment(true); content.setEType(testElement); content.setName("content"); content.setUpperBound(-1); container.getEStructuralFeatures().add(content); EAttribute name = EcoreFactory.eINSTANCE.createEAttribute(); name.setEType(EcorePackage.eINSTANCE.getEString()); name.setName("name"); testElement.getEStructuralFeatures().add(name); containerInstance = EcoreUtil.create(container); EObject element1 = EcoreUtil.create(testElement); element1.eSet(testElement.getEStructuralFeature("name"), "some element"); EObject element2 = EcoreUtil.create(testElement); element2.eSet(testElement.getEStructuralFeature("name"), "some other element"); ((Collection<EObject>)containerInstance.eGet(container.getEStructuralFeature("content"))) .add(element1); ((Collection<EObject>)containerInstance.eGet(container.getEStructuralFeature("content"))) .add(element2); } public Resource getCompareLeft() throws IOException { Resource res = new XMIResourceImpl(URI.createURI("http://model.xmi", true)); res.getContents().add(containerInstance); return res; } public Resource getCompareRight() throws IOException { EObject copy = EcoreUtil.copy(containerInstance); Resource res = new XMIResourceImpl(URI.createURI("http://modelv2.xmi", true)); res.getContents().add(copy); EObject element3 = EcoreUtil.create(testElement); element3.eSet(testElement.getEStructuralFeature("name"), "added element"); ((Collection<EObject>)copy.eGet(container.getEStructuralFeature("content"))).add(element3); return res; } }