blob: 209243e6d47c74c7a3eba1dff786c531c82dd05f [file] [log] [blame]
/*
* Copyright (c) 2005, 2007 Borland Software Corporation
*
* 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:
* Artem Tikhomirov (Borland) - initial API and implementation
*/
package org.eclipse.gmf.internal.bridge.genmodel;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.gmf.gmfgraph.Identity;
import org.eclipse.gmf.mappings.AuditContainer;
import org.eclipse.gmf.mappings.CanvasMapping;
import org.eclipse.gmf.mappings.LinkMapping;
import org.eclipse.gmf.mappings.MetricContainer;
import org.eclipse.gmf.mappings.TopNodeReference;
import org.eclipse.gmf.runtime.notation.NotationPackage;
/**
* Creates bare extended version of basic Diagram Run-Time model from gmfmap.
* This extended version is expected to be modified by toolsmith to capture additional
* attributes/features of diagram.
* @author artem
*/
public class DiagramRunTimeModelTransformer extends MappingTransformer {
private final EPackage myPackage;
public DiagramRunTimeModelTransformer(String modelName, String modelNsURI) {
myPackage = EcoreFactory.eINSTANCE.createEPackage();
myPackage.setName(modelName);
myPackage.setNsPrefix(modelName+"-drt");
myPackage.setNsURI(modelNsURI);
}
public EPackage getResult() {
return myPackage;
}
protected void process(CanvasMapping cme) {
addEClass(cme.getDiagramCanvas(), NotationPackage.eINSTANCE.getDiagram());
}
protected void process(TopNodeReference topNode) {
addEClass(topNode.getChild().getDiagramNode(), NotationPackage.eINSTANCE.getNode());
}
protected void process(LinkMapping lme) {
addEClass(lme.getDiagramLink(), NotationPackage.eINSTANCE.getEdge());
}
private void addEClass(Identity diaDefElement, EClass superClass) {
EClass c = createEClass(diaDefElement.getName(), superClass);
myPackage.getEClassifiers().add(c);
// for (Iterator it = diaDefElement.getProperties().iterator(); it.hasNext();) {
// RunTimeProperty p = (RunTimeProperty) it.next();
// EAttribute a = EcoreFactory.eINSTANCE.createEAttribute();
// a.setName(p.getName());
// a.setEType(EcorePackage.eINSTANCE.getEString());
// c.getEStructuralFeatures().add(a);
// }
}
private EClass createEClass(String name, EClass superClass) {
EClass c = EcoreFactory.eINSTANCE.createEClass();
c.setName(name);
c.getESuperTypes().add(superClass);
return c;
}
protected void process(AuditContainer audits) {
}
protected void process(MetricContainer metrics) {
}
}