/******************************************************************************* * Copyright (c) 2010-2015 Henshin developers. 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: * TU Berlin, University of Luxembourg, SES S.A. *******************************************************************************/ package de.tub.tfs.henshin.tggeditor; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.henshin.model.Attribute; import org.eclipse.emf.henshin.model.AttributeCondition; import org.eclipse.emf.henshin.model.Edge; import org.eclipse.emf.henshin.model.Graph; import org.eclipse.emf.henshin.model.HenshinFactory; import org.eclipse.emf.henshin.model.HenshinPackage; import org.eclipse.emf.henshin.model.Mapping; import org.eclipse.emf.henshin.model.NestedCondition; import org.eclipse.emf.henshin.model.Node; import org.eclipse.emf.henshin.model.Not; import org.eclipse.emf.henshin.model.Parameter; import org.eclipse.emf.henshin.model.Rule; import org.eclipse.gef.requests.CreationFactory; import de.tub.tfs.henshin.tgg.CritPair; import de.tub.tfs.henshin.tgg.TAttribute; import de.tub.tfs.henshin.tgg.TEdge; import de.tub.tfs.henshin.tgg.TGGRule; import de.tub.tfs.henshin.tgg.TNode; import de.tub.tfs.henshin.tgg.TggFactory; import de.tub.tfs.henshin.tgg.TripleGraph; public class TGGModelCreationFactory implements CreationFactory { private Class<?> clazz; private EClass eClass; public TGGModelCreationFactory (Class<?> clazz) { this.clazz = clazz; } public TGGModelCreationFactory(Class<Node> clazz, EClass eClass) { this.clazz = clazz; this.eClass = eClass; } @Override public Object getNewObject() { if (clazz == TNode.class) { TNode node = TggFactory.eINSTANCE.createTNode(); if (eClass != null) { node.setType(eClass); } return node; } if (clazz == TAttribute.class) { TAttribute node = TggFactory.eINSTANCE.createTAttribute(); return node; } if (clazz == TEdge.class) { TEdge edge = TggFactory.eINSTANCE.createTEdge(); return edge; } if (clazz == Node.class) { Node node = TggFactory.eINSTANCE.createTNode(); if (eClass != null) { node.setType(eClass); } return node; } if (clazz == Attribute.class) { return TggFactory.eINSTANCE.createTAttribute(); } if (clazz == Edge.class) { return TggFactory.eINSTANCE.createTEdge(); } if (clazz == TGGRule.class) { TGGRule node = TggFactory.eINSTANCE.createTGGRule(); return node; } if (clazz == TripleGraph.class) { return TggFactory.eINSTANCE.createTripleGraph(); } if (clazz == Graph.class) { return TggFactory.eINSTANCE.createTripleGraph(); } if (clazz == AttributeCondition.class) { return HenshinFactory.eINSTANCE.createAttributeCondition(); } if (clazz == Rule.class) { return TggFactory.eINSTANCE.createTGGRule(); } if (clazz == Mapping.class) { return HenshinFactory.eINSTANCE.createMapping(); } if (clazz == Not.class){ return HenshinFactory.eINSTANCE.createNot(); } if (clazz == NestedCondition.class){ return HenshinFactory.eINSTANCE.createNestedCondition(); } if (clazz == Parameter.class) { Parameter parameter = HenshinFactory.eINSTANCE.createParameter(); return parameter; } if (clazz == CritPair.class) { CritPair critPair = TggFactory.eINSTANCE.createCritPair(); return critPair; } return null; } @Override public Object getObjectType() { return clazz; } }