mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-15 08:18:55 +00:00
[eclipse/xtext#1952] ported xtend code 2 java
Signed-off-by: Christian Dietrich <christian.dietrich@itemis.de>
This commit is contained in:
parent
ae52a5385b
commit
7bf3dbbb4d
3 changed files with 199 additions and 453 deletions
|
@ -0,0 +1,199 @@
|
|||
/**
|
||||
* Copyright (c) 2011, 2021 itemis AG (http://www.itemis.eu) and others.
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0.
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.eclipse.xtext.xtext.generator.util;
|
||||
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenClassifier;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenDataType;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenEnum;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
|
||||
import org.eclipse.emf.common.util.URI;
|
||||
import org.eclipse.emf.ecore.EClass;
|
||||
import org.eclipse.emf.ecore.EClassifier;
|
||||
import org.eclipse.emf.ecore.EDataType;
|
||||
import org.eclipse.emf.ecore.EEnum;
|
||||
import org.eclipse.emf.ecore.EObject;
|
||||
import org.eclipse.emf.ecore.EPackage;
|
||||
import org.eclipse.emf.ecore.EStructuralFeature;
|
||||
import org.eclipse.emf.ecore.EcorePackage;
|
||||
import org.eclipse.emf.ecore.plugin.EcorePlugin;
|
||||
import org.eclipse.emf.ecore.resource.Resource;
|
||||
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||
import org.eclipse.xtext.xtext.generator.ecore.EMFGeneratorFragment2;
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Strings;
|
||||
|
||||
public class GenModelUtil2 {
|
||||
public static GenClass getGenClass(EClass cls, ResourceSet resourceSet) {
|
||||
return (GenClass) GenModelUtil2.getGenClassifier(cls, resourceSet);
|
||||
}
|
||||
|
||||
public static GenClassifier getGenClassifier(EClassifier cls, ResourceSet resourceSet) {
|
||||
GenPackage genPackage = GenModelUtil2.getGenPackage(cls.getEPackage(), resourceSet);
|
||||
for (GenClassifier genCls : genPackage.getGenClassifiers()) {
|
||||
if (Objects.equal(cls.getName(), genCls.getEcoreClassifier().getName())) {
|
||||
return genCls;
|
||||
}
|
||||
}
|
||||
throw new RuntimeException("No GenClassifier named '" + cls.getName() + "' found in GenModel " + genPackage.eResource().getURI());
|
||||
}
|
||||
|
||||
public static GenDataType getGenDataType(EDataType dt, ResourceSet resourceSet) {
|
||||
return (GenDataType) GenModelUtil2.getGenClassifier(dt, resourceSet);
|
||||
}
|
||||
|
||||
public static GenEnum getGenEnum(EEnum en, ResourceSet resourceSet) {
|
||||
return (GenEnum) GenModelUtil2.getGenClassifier(en, resourceSet);
|
||||
}
|
||||
|
||||
public static GenFeature getGenFeature(EStructuralFeature feature, ResourceSet resourceSet) {
|
||||
GenClass genCls = (GenClass) GenModelUtil2.getGenClassifier(feature.getEContainingClass(), resourceSet);
|
||||
for (GenFeature genFeat : genCls.getGenFeatures()) {
|
||||
if (Objects.equal(feature.getName(), genFeat.getEcoreFeature().getName())) {
|
||||
return genFeat;
|
||||
}
|
||||
}
|
||||
throw new RuntimeException("No GenFeature named '" + feature.getName() + "' found in GenClass '" + genCls + "' from GenModel " + genCls.eResource().getURI());
|
||||
}
|
||||
|
||||
public static GenPackage getGenPackage(EPackage pkg, ResourceSet resourceSet) {
|
||||
String nsURI = pkg.getNsURI();
|
||||
String location = null;
|
||||
Resource packageResource = pkg.eResource();
|
||||
URI packageResourceUri = null;
|
||||
if (packageResource != null) {
|
||||
packageResourceUri = packageResource.getURI();
|
||||
}
|
||||
if (packageResourceUri != null) {
|
||||
location = pkg.eResource().getURI().toString();
|
||||
}
|
||||
Resource genModelResource = GenModelUtil2.getGenModelResource(location, nsURI, resourceSet);
|
||||
if (genModelResource != null) {
|
||||
for (EObject model : genModelResource.getContents()) {
|
||||
if (model instanceof GenModel) {
|
||||
GenPackage genPkg = ((GenModel) model).findGenPackage(pkg);
|
||||
if (genPkg != null) {
|
||||
genPkg.getEcorePackage().getEClassifiers();
|
||||
return genPkg;
|
||||
}
|
||||
}
|
||||
}
|
||||
throw new RuntimeException("No GenPackage for NsURI " + nsURI + " found in " + genModelResource.getURI());
|
||||
}
|
||||
throw new RuntimeException("No GenPackage for NsURI " + nsURI + ".");
|
||||
}
|
||||
|
||||
public static Resource getGenModelResource(String locationInfo, String nsURI,
|
||||
ResourceSet resourceSet) {
|
||||
URI genModelURI = EcorePlugin.getEPackageNsURIToGenModelLocationMap(false).get(nsURI);
|
||||
if (genModelURI == null) {
|
||||
if (Objects.equal(EcorePackage.eNS_URI, nsURI)) { // If we really want to use the registered ecore ...
|
||||
return null; // look into the resource set to find a genpackage
|
||||
// for the given URI
|
||||
}
|
||||
for (Resource res : resourceSet.getResources()) {
|
||||
// We only look into the first level, as genmodels are usually
|
||||
// among the top level elements.
|
||||
// This is just to avoid traversing all eobjects in the resource
|
||||
// set.
|
||||
for (EObject obj : res.getContents()) {
|
||||
if (obj instanceof GenModel) {
|
||||
for (GenPackage genPackage : ((GenModel) obj).getGenPackages()) {
|
||||
if (Objects.equal(genPackage.getNSURI(), nsURI)) {
|
||||
return genPackage.eResource();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
String message =
|
||||
"Could not find a GenModel for EPackage '" + nsURI +"'" + (Strings.isNullOrEmpty(locationInfo) ? "" : " from " + locationInfo) + ".\n" +
|
||||
"If the missing GenModel has been generated via " + EMFGeneratorFragment2.class.getSimpleName() + ", make sure to run it first in the workflow.\n" +
|
||||
"If you have a *.genmodel-file, make sure to register it via StandaloneSetup.registerGenModelFile(String).\n";
|
||||
throw new RuntimeException(message);
|
||||
}
|
||||
if (resourceSet == null) {
|
||||
throw new RuntimeException("There is no ResourceSet for EPackage '" + nsURI
|
||||
+ "'. Please make sure the EPackage has been loaded from a .ecore file and not from the generated Java file.");
|
||||
}
|
||||
Resource genModelResource = resourceSet.getResource(genModelURI, true);
|
||||
if (genModelResource == null) {
|
||||
throw new RuntimeException("Error loading GenModel " + genModelURI);
|
||||
}
|
||||
for (EObject content : genModelResource.getContents()) {
|
||||
if (content instanceof GenModel) {
|
||||
((GenModel) content).reconcile();
|
||||
}
|
||||
}
|
||||
return genModelResource;
|
||||
}
|
||||
|
||||
public static String getPackageLiteral() {
|
||||
return "eINSTANCE";
|
||||
}
|
||||
|
||||
public static String getIntLiteral(EClass clazz, EStructuralFeature feature,
|
||||
ResourceSet resourceSet) {
|
||||
return GenModelUtil2.getGenClass(clazz, resourceSet)
|
||||
.getFeatureID(GenModelUtil2.getGenFeature(feature, resourceSet));
|
||||
}
|
||||
|
||||
public static String getIntLiteral(EClassifier classifier, ResourceSet resourceSet) {
|
||||
return GenModelUtil2.getGenClassifier(classifier, resourceSet).getClassifierID();
|
||||
}
|
||||
|
||||
public static String getTypeLiteral(EClassifier classifier, ResourceSet resourceSet) {
|
||||
GenClassifier genClassifier = GenModelUtil2.getGenClassifier(classifier, resourceSet);
|
||||
if (genClassifier.getGenPackage().isLiteralsInterface()) {
|
||||
return "Literals." + genClassifier.getClassifierID();
|
||||
} else {
|
||||
return "eINSTANCE.get" + genClassifier.getClassifierAccessorName() + "()";
|
||||
}
|
||||
}
|
||||
|
||||
public static String getFeatureLiteral(EStructuralFeature feature, ResourceSet resourceSet) {
|
||||
return GenModelUtil2.getFeatureLiteral(GenModelUtil2.getGenFeature(feature, resourceSet), resourceSet);
|
||||
}
|
||||
|
||||
public static String getFeatureLiteral(GenFeature genFeature, ResourceSet resourceSet) {
|
||||
if (genFeature.getGenPackage().isLiteralsInterface()) {
|
||||
return "Literals." + genFeature.getGenClass().getFeatureID(genFeature);
|
||||
} else {
|
||||
return "eINSTANCE.get" + genFeature.getFeatureAccessorName() + "()";
|
||||
}
|
||||
}
|
||||
|
||||
public static String getJavaTypeName(EClassifier classifier, ResourceSet resourceSet) {
|
||||
GenClassifier genClassifier = GenModelUtil2.getGenClassifier(classifier, resourceSet);
|
||||
if (genClassifier instanceof GenClass) {
|
||||
return ((GenClass) genClassifier).getQualifiedInterfaceName();
|
||||
} else {
|
||||
return ((GenDataType) genClassifier).getQualifiedInstanceClassName();
|
||||
}
|
||||
}
|
||||
|
||||
public static String getGetAccessor(EStructuralFeature feature, ResourceSet resourceSet) {
|
||||
return GenModelUtil2.getGetAccessor(GenModelUtil2.getGenFeature(feature, resourceSet), resourceSet);
|
||||
}
|
||||
|
||||
public static String getGetAccessor(GenFeature genFeature, ResourceSet resourceSet) {
|
||||
GenClass genClass = genFeature.getGenClass();
|
||||
if (genClass.isMapEntry()) {
|
||||
if (Objects.equal(genFeature, genClass.getMapEntryKeyFeature())) {
|
||||
return "getKey";
|
||||
}
|
||||
if (Objects.equal(genFeature, genClass.getMapEntryValueFeature())) {
|
||||
return "getValue";
|
||||
}
|
||||
}
|
||||
return genFeature.getGetAccessor();
|
||||
}
|
||||
}
|
|
@ -1,176 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2011, 2016 itemis AG (http://www.itemis.eu) and others.
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0.
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.util
|
||||
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenClass
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenClassifier
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenDataType
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenEnum
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenFeature
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenModel
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage
|
||||
import org.eclipse.emf.ecore.EClass
|
||||
import org.eclipse.emf.ecore.EClassifier
|
||||
import org.eclipse.emf.ecore.EDataType
|
||||
import org.eclipse.emf.ecore.EEnum
|
||||
import org.eclipse.emf.ecore.EObject
|
||||
import org.eclipse.emf.ecore.EPackage
|
||||
import org.eclipse.emf.ecore.EStructuralFeature
|
||||
import org.eclipse.emf.ecore.EcorePackage
|
||||
import org.eclipse.emf.ecore.plugin.EcorePlugin
|
||||
import org.eclipse.emf.ecore.resource.Resource
|
||||
import org.eclipse.emf.ecore.resource.ResourceSet
|
||||
import org.eclipse.xtext.xtext.generator.ecore.EMFGeneratorFragment2
|
||||
|
||||
class GenModelUtil2 {
|
||||
|
||||
def static GenClass getGenClass(EClass cls, ResourceSet resourceSet) {
|
||||
return getGenClassifier(cls, resourceSet) as GenClass
|
||||
}
|
||||
|
||||
def static GenClassifier getGenClassifier(EClassifier cls, ResourceSet resourceSet) {
|
||||
val genPackage = getGenPackage(cls.EPackage, resourceSet)
|
||||
for (genCls : genPackage.genClassifiers) {
|
||||
if (cls.name == genCls.ecoreClassifier.name) {
|
||||
return genCls
|
||||
}
|
||||
}
|
||||
throw new RuntimeException('''No GenClassifier named '«cls.name»' found in GenModel «genPackage.eResource.URI»''')
|
||||
}
|
||||
|
||||
def static GenDataType getGenDataType(EDataType dt, ResourceSet resourceSet) {
|
||||
return getGenClassifier(dt, resourceSet) as GenDataType
|
||||
}
|
||||
|
||||
def static GenEnum getGenEnum(EEnum en, ResourceSet resourceSet) {
|
||||
return getGenClassifier(en, resourceSet) as GenEnum
|
||||
}
|
||||
|
||||
def static GenFeature getGenFeature(EStructuralFeature feature, ResourceSet resourceSet) {
|
||||
val genCls = getGenClassifier(feature.EContainingClass, resourceSet) as GenClass
|
||||
for (genFeat : genCls.genFeatures) {
|
||||
if (feature.name == genFeat.ecoreFeature.name) {
|
||||
return genFeat
|
||||
}
|
||||
}
|
||||
throw new RuntimeException('''No GenFeature named '«feature.name»' found in GenClass '«genCls»' from GenModel«genCls.eResource.URI»''')
|
||||
}
|
||||
|
||||
def static GenPackage getGenPackage(EPackage pkg, ResourceSet resourceSet) {
|
||||
val nsURI = pkg.nsURI
|
||||
var String location
|
||||
if (pkg.eResource?.URI !== null)
|
||||
location = pkg.eResource.URI.toString
|
||||
val genModelResource = getGenModelResource(location, nsURI, resourceSet)
|
||||
if (genModelResource !== null) {
|
||||
for (model : genModelResource.contents) {
|
||||
if (model instanceof GenModel) {
|
||||
val genPkg = model.findGenPackage(pkg)
|
||||
if (genPkg !== null) {
|
||||
genPkg.getEcorePackage.getEClassifiers()
|
||||
return genPkg
|
||||
}
|
||||
}
|
||||
}
|
||||
throw new RuntimeException('''No GenPackage for NsURI «nsURI» found in «genModelResource.URI»''')
|
||||
}
|
||||
throw new RuntimeException('''No GenPackage for NsURI «nsURI».''')
|
||||
}
|
||||
|
||||
def static Resource getGenModelResource(String locationInfo, String nsURI, ResourceSet resourceSet) {
|
||||
val genModelURI = EcorePlugin.getEPackageNsURIToGenModelLocationMap(false).get(nsURI)
|
||||
if (genModelURI === null) {
|
||||
if (EcorePackage.eNS_URI == nsURI) // If we really want to use the registered ecore ...
|
||||
return null // look into the resource set to find a genpackage for the given URI
|
||||
for (res : resourceSet.resources) {
|
||||
// We only look into the first level, as genmodels are usually among the top level elements.
|
||||
// This is just to avoid traversing all eobjects in the resource set.
|
||||
for (obj : res.contents) {
|
||||
if (obj instanceof GenModel) {
|
||||
for (genPackage : obj.genPackages) {
|
||||
if (genPackage.NSURI == nsURI) {
|
||||
return genPackage.eResource
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
throw new RuntimeException('''
|
||||
Could not find a GenModel for EPackage '«nsURI»'«IF !locationInfo.nullOrEmpty» from «locationInfo»«ENDIF».
|
||||
If the missing GenModel has been generated via «EMFGeneratorFragment2.simpleName», make sure to run it first in the workflow.
|
||||
If you have a *.genmodel-file, make sure to register it via StandaloneSetup.registerGenModelFile(String).
|
||||
''')
|
||||
}
|
||||
if (resourceSet === null)
|
||||
throw new RuntimeException('''There is no ResourceSet for EPackage '«nsURI»'. Please make sure the EPackage has been loaded from a .ecore file and not from the generated Java file.''')
|
||||
val genModelResource = resourceSet.getResource(genModelURI, true)
|
||||
if (genModelResource === null)
|
||||
throw new RuntimeException('''Error loading GenModel «genModelURI»''')
|
||||
for (EObject content : genModelResource.contents) {
|
||||
if (content instanceof GenModel)
|
||||
content.reconcile()
|
||||
}
|
||||
return genModelResource
|
||||
}
|
||||
|
||||
def static String getPackageLiteral() {
|
||||
'eINSTANCE'
|
||||
}
|
||||
|
||||
def static String getIntLiteral(EClass clazz, EStructuralFeature feature, ResourceSet resourceSet) {
|
||||
getGenClass(clazz, resourceSet).getFeatureID(getGenFeature(feature, resourceSet))
|
||||
}
|
||||
|
||||
def static String getIntLiteral(EClassifier classifier, ResourceSet resourceSet) {
|
||||
getGenClassifier(classifier, resourceSet).classifierID
|
||||
}
|
||||
|
||||
def static String getTypeLiteral(EClassifier classifier, ResourceSet resourceSet) {
|
||||
val genClassifier = getGenClassifier(classifier, resourceSet)
|
||||
if (genClassifier.genPackage.isLiteralsInterface)
|
||||
return 'Literals.' + genClassifier.classifierID
|
||||
else
|
||||
return 'eINSTANCE.get' + genClassifier.classifierAccessorName + '()'
|
||||
}
|
||||
|
||||
def static String getFeatureLiteral(EStructuralFeature feature, ResourceSet resourceSet) {
|
||||
return getFeatureLiteral(getGenFeature(feature, resourceSet), resourceSet)
|
||||
}
|
||||
|
||||
def static String getFeatureLiteral(GenFeature genFeature, ResourceSet resourceSet) {
|
||||
if (genFeature.genPackage.isLiteralsInterface)
|
||||
return 'Literals.' + genFeature.genClass.getFeatureID(genFeature)
|
||||
else
|
||||
return 'eINSTANCE.get' + genFeature.featureAccessorName + '()'
|
||||
}
|
||||
|
||||
def static String getJavaTypeName(EClassifier classifier, ResourceSet resourceSet) {
|
||||
val genClassifier = getGenClassifier(classifier, resourceSet)
|
||||
if (genClassifier instanceof GenClass)
|
||||
return genClassifier.qualifiedInterfaceName
|
||||
else
|
||||
return (genClassifier as GenDataType).qualifiedInstanceClassName
|
||||
}
|
||||
|
||||
def static String getGetAccessor(EStructuralFeature feature, ResourceSet resourceSet) {
|
||||
return getGetAccessor(getGenFeature(feature, resourceSet), resourceSet)
|
||||
}
|
||||
|
||||
def static String getGetAccessor(GenFeature genFeature, ResourceSet resourceSet) {
|
||||
val genClass = genFeature.genClass
|
||||
if (genClass.isMapEntry) {
|
||||
if (genFeature == genClass.mapEntryKeyFeature)
|
||||
return 'getKey'
|
||||
if (genFeature == genClass.mapEntryValueFeature)
|
||||
return 'getValue'
|
||||
}
|
||||
return genFeature.getAccessor
|
||||
}
|
||||
|
||||
}
|
|
@ -1,277 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) 2011, 2016 itemis AG (http://www.itemis.eu) and others.
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0.
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.eclipse.xtext.xtext.generator.util;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenClass;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenClassifier;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenDataType;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenEnum;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenFeature;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
|
||||
import org.eclipse.emf.common.util.EList;
|
||||
import org.eclipse.emf.common.util.URI;
|
||||
import org.eclipse.emf.ecore.EClass;
|
||||
import org.eclipse.emf.ecore.EClassifier;
|
||||
import org.eclipse.emf.ecore.EDataType;
|
||||
import org.eclipse.emf.ecore.EEnum;
|
||||
import org.eclipse.emf.ecore.EObject;
|
||||
import org.eclipse.emf.ecore.EPackage;
|
||||
import org.eclipse.emf.ecore.EStructuralFeature;
|
||||
import org.eclipse.emf.ecore.EcorePackage;
|
||||
import org.eclipse.emf.ecore.plugin.EcorePlugin;
|
||||
import org.eclipse.emf.ecore.resource.Resource;
|
||||
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||
import org.eclipse.xtend2.lib.StringConcatenation;
|
||||
import org.eclipse.xtext.xbase.lib.StringExtensions;
|
||||
import org.eclipse.xtext.xtext.generator.ecore.EMFGeneratorFragment2;
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public class GenModelUtil2 {
|
||||
public static GenClass getGenClass(final EClass cls, final ResourceSet resourceSet) {
|
||||
GenClassifier _genClassifier = GenModelUtil2.getGenClassifier(cls, resourceSet);
|
||||
return ((GenClass) _genClassifier);
|
||||
}
|
||||
|
||||
public static GenClassifier getGenClassifier(final EClassifier cls, final ResourceSet resourceSet) {
|
||||
final GenPackage genPackage = GenModelUtil2.getGenPackage(cls.getEPackage(), resourceSet);
|
||||
EList<GenClassifier> _genClassifiers = genPackage.getGenClassifiers();
|
||||
for (final GenClassifier genCls : _genClassifiers) {
|
||||
String _name = cls.getName();
|
||||
String _name_1 = genCls.getEcoreClassifier().getName();
|
||||
boolean _equals = Objects.equal(_name, _name_1);
|
||||
if (_equals) {
|
||||
return genCls;
|
||||
}
|
||||
}
|
||||
StringConcatenation _builder = new StringConcatenation();
|
||||
_builder.append("No GenClassifier named \'");
|
||||
String _name_2 = cls.getName();
|
||||
_builder.append(_name_2);
|
||||
_builder.append("\' found in GenModel ");
|
||||
URI _uRI = genPackage.eResource().getURI();
|
||||
_builder.append(_uRI);
|
||||
throw new RuntimeException(_builder.toString());
|
||||
}
|
||||
|
||||
public static GenDataType getGenDataType(final EDataType dt, final ResourceSet resourceSet) {
|
||||
GenClassifier _genClassifier = GenModelUtil2.getGenClassifier(dt, resourceSet);
|
||||
return ((GenDataType) _genClassifier);
|
||||
}
|
||||
|
||||
public static GenEnum getGenEnum(final EEnum en, final ResourceSet resourceSet) {
|
||||
GenClassifier _genClassifier = GenModelUtil2.getGenClassifier(en, resourceSet);
|
||||
return ((GenEnum) _genClassifier);
|
||||
}
|
||||
|
||||
public static GenFeature getGenFeature(final EStructuralFeature feature, final ResourceSet resourceSet) {
|
||||
GenClassifier _genClassifier = GenModelUtil2.getGenClassifier(feature.getEContainingClass(), resourceSet);
|
||||
final GenClass genCls = ((GenClass) _genClassifier);
|
||||
EList<GenFeature> _genFeatures = genCls.getGenFeatures();
|
||||
for (final GenFeature genFeat : _genFeatures) {
|
||||
String _name = feature.getName();
|
||||
String _name_1 = genFeat.getEcoreFeature().getName();
|
||||
boolean _equals = Objects.equal(_name, _name_1);
|
||||
if (_equals) {
|
||||
return genFeat;
|
||||
}
|
||||
}
|
||||
StringConcatenation _builder = new StringConcatenation();
|
||||
_builder.append("No GenFeature named \'");
|
||||
String _name_2 = feature.getName();
|
||||
_builder.append(_name_2);
|
||||
_builder.append("\' found in GenClass \'");
|
||||
_builder.append(genCls);
|
||||
_builder.append("\' from GenModel");
|
||||
URI _uRI = genCls.eResource().getURI();
|
||||
_builder.append(_uRI);
|
||||
throw new RuntimeException(_builder.toString());
|
||||
}
|
||||
|
||||
public static GenPackage getGenPackage(final EPackage pkg, final ResourceSet resourceSet) {
|
||||
final String nsURI = pkg.getNsURI();
|
||||
String location = null;
|
||||
Resource _eResource = pkg.eResource();
|
||||
URI _uRI = null;
|
||||
if (_eResource!=null) {
|
||||
_uRI=_eResource.getURI();
|
||||
}
|
||||
boolean _tripleNotEquals = (_uRI != null);
|
||||
if (_tripleNotEquals) {
|
||||
location = pkg.eResource().getURI().toString();
|
||||
}
|
||||
final Resource genModelResource = GenModelUtil2.getGenModelResource(location, nsURI, resourceSet);
|
||||
if ((genModelResource != null)) {
|
||||
EList<EObject> _contents = genModelResource.getContents();
|
||||
for (final EObject model : _contents) {
|
||||
if ((model instanceof GenModel)) {
|
||||
final GenPackage genPkg = ((GenModel)model).findGenPackage(pkg);
|
||||
if ((genPkg != null)) {
|
||||
genPkg.getEcorePackage().getEClassifiers();
|
||||
return genPkg;
|
||||
}
|
||||
}
|
||||
}
|
||||
StringConcatenation _builder = new StringConcatenation();
|
||||
_builder.append("No GenPackage for NsURI ");
|
||||
_builder.append(nsURI);
|
||||
_builder.append(" found in ");
|
||||
URI _uRI_1 = genModelResource.getURI();
|
||||
_builder.append(_uRI_1);
|
||||
throw new RuntimeException(_builder.toString());
|
||||
}
|
||||
StringConcatenation _builder_1 = new StringConcatenation();
|
||||
_builder_1.append("No GenPackage for NsURI ");
|
||||
_builder_1.append(nsURI);
|
||||
_builder_1.append(".");
|
||||
throw new RuntimeException(_builder_1.toString());
|
||||
}
|
||||
|
||||
public static Resource getGenModelResource(final String locationInfo, final String nsURI, final ResourceSet resourceSet) {
|
||||
final URI genModelURI = EcorePlugin.getEPackageNsURIToGenModelLocationMap(false).get(nsURI);
|
||||
if ((genModelURI == null)) {
|
||||
boolean _equals = Objects.equal(EcorePackage.eNS_URI, nsURI);
|
||||
if (_equals) {
|
||||
return null;
|
||||
}
|
||||
EList<Resource> _resources = resourceSet.getResources();
|
||||
for (final Resource res : _resources) {
|
||||
EList<EObject> _contents = res.getContents();
|
||||
for (final EObject obj : _contents) {
|
||||
if ((obj instanceof GenModel)) {
|
||||
EList<GenPackage> _genPackages = ((GenModel)obj).getGenPackages();
|
||||
for (final GenPackage genPackage : _genPackages) {
|
||||
String _nSURI = genPackage.getNSURI();
|
||||
boolean _equals_1 = Objects.equal(_nSURI, nsURI);
|
||||
if (_equals_1) {
|
||||
return genPackage.eResource();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
StringConcatenation _builder = new StringConcatenation();
|
||||
_builder.append("Could not find a GenModel for EPackage \'");
|
||||
_builder.append(nsURI);
|
||||
_builder.append("\'");
|
||||
{
|
||||
boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(locationInfo);
|
||||
boolean _not = (!_isNullOrEmpty);
|
||||
if (_not) {
|
||||
_builder.append(" from ");
|
||||
_builder.append(locationInfo);
|
||||
}
|
||||
}
|
||||
_builder.append(".");
|
||||
_builder.newLineIfNotEmpty();
|
||||
_builder.append("If the missing GenModel has been generated via ");
|
||||
String _simpleName = EMFGeneratorFragment2.class.getSimpleName();
|
||||
_builder.append(_simpleName);
|
||||
_builder.append(", make sure to run it first in the workflow.");
|
||||
_builder.newLineIfNotEmpty();
|
||||
_builder.append("If you have a *.genmodel-file, make sure to register it via StandaloneSetup.registerGenModelFile(String).");
|
||||
_builder.newLine();
|
||||
throw new RuntimeException(_builder.toString());
|
||||
}
|
||||
if ((resourceSet == null)) {
|
||||
StringConcatenation _builder_1 = new StringConcatenation();
|
||||
_builder_1.append("There is no ResourceSet for EPackage \'");
|
||||
_builder_1.append(nsURI);
|
||||
_builder_1.append("\'. Please make sure the EPackage has been loaded from a .ecore file and not from the generated Java file.");
|
||||
throw new RuntimeException(_builder_1.toString());
|
||||
}
|
||||
final Resource genModelResource = resourceSet.getResource(genModelURI, true);
|
||||
if ((genModelResource == null)) {
|
||||
StringConcatenation _builder_2 = new StringConcatenation();
|
||||
_builder_2.append("Error loading GenModel ");
|
||||
_builder_2.append(genModelURI);
|
||||
throw new RuntimeException(_builder_2.toString());
|
||||
}
|
||||
EList<EObject> _contents_1 = genModelResource.getContents();
|
||||
for (final EObject content : _contents_1) {
|
||||
if ((content instanceof GenModel)) {
|
||||
((GenModel)content).reconcile();
|
||||
}
|
||||
}
|
||||
return genModelResource;
|
||||
}
|
||||
|
||||
public static String getPackageLiteral() {
|
||||
return "eINSTANCE";
|
||||
}
|
||||
|
||||
public static String getIntLiteral(final EClass clazz, final EStructuralFeature feature, final ResourceSet resourceSet) {
|
||||
return GenModelUtil2.getGenClass(clazz, resourceSet).getFeatureID(GenModelUtil2.getGenFeature(feature, resourceSet));
|
||||
}
|
||||
|
||||
public static String getIntLiteral(final EClassifier classifier, final ResourceSet resourceSet) {
|
||||
return GenModelUtil2.getGenClassifier(classifier, resourceSet).getClassifierID();
|
||||
}
|
||||
|
||||
public static String getTypeLiteral(final EClassifier classifier, final ResourceSet resourceSet) {
|
||||
final GenClassifier genClassifier = GenModelUtil2.getGenClassifier(classifier, resourceSet);
|
||||
boolean _isLiteralsInterface = genClassifier.getGenPackage().isLiteralsInterface();
|
||||
if (_isLiteralsInterface) {
|
||||
String _classifierID = genClassifier.getClassifierID();
|
||||
return ("Literals." + _classifierID);
|
||||
} else {
|
||||
String _classifierAccessorName = genClassifier.getClassifierAccessorName();
|
||||
String _plus = ("eINSTANCE.get" + _classifierAccessorName);
|
||||
return (_plus + "()");
|
||||
}
|
||||
}
|
||||
|
||||
public static String getFeatureLiteral(final EStructuralFeature feature, final ResourceSet resourceSet) {
|
||||
return GenModelUtil2.getFeatureLiteral(GenModelUtil2.getGenFeature(feature, resourceSet), resourceSet);
|
||||
}
|
||||
|
||||
public static String getFeatureLiteral(final GenFeature genFeature, final ResourceSet resourceSet) {
|
||||
boolean _isLiteralsInterface = genFeature.getGenPackage().isLiteralsInterface();
|
||||
if (_isLiteralsInterface) {
|
||||
String _featureID = genFeature.getGenClass().getFeatureID(genFeature);
|
||||
return ("Literals." + _featureID);
|
||||
} else {
|
||||
String _featureAccessorName = genFeature.getFeatureAccessorName();
|
||||
String _plus = ("eINSTANCE.get" + _featureAccessorName);
|
||||
return (_plus + "()");
|
||||
}
|
||||
}
|
||||
|
||||
public static String getJavaTypeName(final EClassifier classifier, final ResourceSet resourceSet) {
|
||||
final GenClassifier genClassifier = GenModelUtil2.getGenClassifier(classifier, resourceSet);
|
||||
if ((genClassifier instanceof GenClass)) {
|
||||
return ((GenClass)genClassifier).getQualifiedInterfaceName();
|
||||
} else {
|
||||
return ((GenDataType) genClassifier).getQualifiedInstanceClassName();
|
||||
}
|
||||
}
|
||||
|
||||
public static String getGetAccessor(final EStructuralFeature feature, final ResourceSet resourceSet) {
|
||||
return GenModelUtil2.getGetAccessor(GenModelUtil2.getGenFeature(feature, resourceSet), resourceSet);
|
||||
}
|
||||
|
||||
public static String getGetAccessor(final GenFeature genFeature, final ResourceSet resourceSet) {
|
||||
final GenClass genClass = genFeature.getGenClass();
|
||||
boolean _isMapEntry = genClass.isMapEntry();
|
||||
if (_isMapEntry) {
|
||||
GenFeature _mapEntryKeyFeature = genClass.getMapEntryKeyFeature();
|
||||
boolean _equals = Objects.equal(genFeature, _mapEntryKeyFeature);
|
||||
if (_equals) {
|
||||
return "getKey";
|
||||
}
|
||||
GenFeature _mapEntryValueFeature = genClass.getMapEntryValueFeature();
|
||||
boolean _equals_1 = Objects.equal(genFeature, _mapEntryValueFeature);
|
||||
if (_equals_1) {
|
||||
return "getValue";
|
||||
}
|
||||
}
|
||||
return genFeature.getGetAccessor();
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue