/**
* Copyright (c) 2012 Springsite BV (http://www.springsite.com) 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
*
* Author - Martin Taal
*/
package org.eclipse.emf.texo.modelgenerator.xtend;
import com.google.common.base.Objects;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.texo.generator.BaseTemplate;
import org.eclipse.emf.texo.generator.ModelController;
import org.eclipse.emf.texo.modelgenerator.annotator.GenConstants;
import org.eclipse.emf.texo.modelgenerator.modelannotations.EClassModelGenAnnotation;
import org.eclipse.emf.texo.modelgenerator.modelannotations.EDataTypeModelGenAnnotationDefinition;
import org.eclipse.emf.texo.modelgenerator.modelannotations.EEnumModelGenAnnotation;
import org.eclipse.emf.texo.modelgenerator.modelannotations.EPackageModelGenAnnotation;
import org.eclipse.emf.texo.modelgenerator.modelannotations.EStructuralFeatureModelGenAnnotation;
import org.eclipse.emf.texo.modelgenerator.xtend.TemplateUtil;
import org.eclipse.xtend2.lib.StringConcatenation;
@SuppressWarnings("all")
public class ModelPackageTemplate extends BaseTemplate {
public void generate(final EPackageModelGenAnnotation ePackageModelGenAnnotation, final boolean doDao) {
boolean _executeOverrides = this.executeOverrides(ePackageModelGenAnnotation);
if (_executeOverrides) {
return;
}
String fileName = TemplateUtil.packageFileName(ePackageModelGenAnnotation);
ModelController _modelController = this.getModelController();
String content = this.generateContent(_modelController, ePackageModelGenAnnotation, doDao);
this.addFile(fileName, content);
}
@Override
public List<String> getTemplateOverrides() {
List<String> list = new ArrayList<String>();
list.add("org::eclipse::emf::texo::modelgenerator::templates::modelpackage");
list.add("org::eclipse::emf::texo::modelgenerator::xtend::ModelPackageTemplate");
return list;
}
public String generateContent(final ModelController modelController, final EPackageModelGenAnnotation ePackageModelGenAnnotation, final boolean doDao) {
StringConcatenation _builder = new StringConcatenation();
String _javaFileHeader = ePackageModelGenAnnotation.getJavaFileHeader();
_builder.append(_javaFileHeader, "");
_builder.newLineIfNotEmpty();
_builder.append("package ");
String _modelClassesPackagePath = ePackageModelGenAnnotation.getModelClassesPackagePath();
_builder.append(_modelClassesPackagePath, "");
_builder.append(";");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* The <b>Package</b> for the model \'<em><b>");
String _name = ePackageModelGenAnnotation.getName();
_builder.append(_name, " ");
_builder.append("</b></em>\'.");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("* It contains initialization code and access to the Factory to instantiate types of this package.");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
{
String _documentation = ePackageModelGenAnnotation.getDocumentation();
boolean _notEquals = (!Objects.equal(_documentation, null));
if (_notEquals) {
_builder.append("* <!-- begin-model-doc -->");
_builder.newLine();
_builder.append("* ");
String _documentation_1 = ePackageModelGenAnnotation.getDocumentation();
_builder.append(_documentation_1, "");
_builder.newLineIfNotEmpty();
_builder.append("* <!-- end-model-doc -->");
_builder.newLine();
}
}
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append("public class ");
String _simpleClassName = ePackageModelGenAnnotation.getSimpleClassName();
_builder.append(_simpleClassName, "");
_builder.append(" extends org.eclipse.emf.texo.model.ModelPackage {");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* Is set when the package has been initialized.");
_builder.newLine();
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("private static boolean isInitialized = false;");
_builder.newLine();
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* The package namespace URI.");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public static final String NS_URI = \"");
EPackage _ePackage = ePackageModelGenAnnotation.getEPackage();
String _nsURI = _ePackage.getNsURI();
_builder.append(_nsURI, " ");
_builder.append("\";");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* The {@link org.eclipse.emf.texo.model.ModelFactory} for this package.");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public static final ");
String _simpleModelFactoryClassName = ePackageModelGenAnnotation.getSimpleModelFactoryClassName();
_builder.append(_simpleModelFactoryClassName, " ");
_builder.append(" ");
_builder.append(GenConstants.MODELFACTORY_CONSTANT, " ");
_builder.append(" = new ");
String _simpleModelFactoryClassName_1 = ePackageModelGenAnnotation.getSimpleModelFactoryClassName();
_builder.append(_simpleModelFactoryClassName_1, " ");
_builder.append("();");
_builder.newLineIfNotEmpty();
{
EList<EDataTypeModelGenAnnotationDefinition> _eDataTypeModelGenAnnotations = ePackageModelGenAnnotation.getEDataTypeModelGenAnnotations();
for(final EDataTypeModelGenAnnotationDefinition eClassifierAnnotation : _eDataTypeModelGenAnnotations) {
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public static final int ");
String _name_1 = eClassifierAnnotation.getName();
String _upperCase = TemplateUtil.toUpperCase(_name_1);
_builder.append(_upperCase, " ");
_builder.append("_CLASSIFIER_ID = ");
EClassifier _eClassifier = eClassifierAnnotation.getEClassifier();
int _classifierID = _eClassifier.getClassifierID();
_builder.append(_classifierID, " ");
_builder.append(";");
_builder.newLineIfNotEmpty();
}
}
{
EList<EClassModelGenAnnotation> _eClassModelGenAnnotations = ePackageModelGenAnnotation.getEClassModelGenAnnotations();
for(final EClassModelGenAnnotation eClassAnnotation : _eClassModelGenAnnotations) {
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public static final int ");
String _name_2 = eClassAnnotation.getName();
String _upperCase_1 = TemplateUtil.toUpperCase(_name_2);
_builder.append(_upperCase_1, " ");
_builder.append("_CLASSIFIER_ID = ");
EClass _eClass = eClassAnnotation.getEClass();
int _classifierID_1 = _eClass.getClassifierID();
_builder.append(_classifierID_1, " ");
_builder.append(";");
_builder.newLineIfNotEmpty();
{
EList<EStructuralFeatureModelGenAnnotation> _eAllStructuralFeatureModelGenAnnotations = eClassAnnotation.getEAllStructuralFeatureModelGenAnnotations();
for(final EStructuralFeatureModelGenAnnotation featureAnnotation : _eAllStructuralFeatureModelGenAnnotations) {
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public static final int ");
String _name_3 = eClassAnnotation.getName();
String _upperCase_2 = TemplateUtil.toUpperCase(_name_3);
_builder.append(_upperCase_2, " ");
_builder.append("_");
String _name_4 = featureAnnotation.getName();
String _upperCase_3 = TemplateUtil.toUpperCase(_name_4);
_builder.append(_upperCase_3, " ");
_builder.append("_FEATURE_ID = ");
EClass _eClass_1 = eClassAnnotation.getEClass();
EStructuralFeature _eStructuralFeature = featureAnnotation.getEStructuralFeature();
int _featureID = _eClass_1.getFeatureID(_eStructuralFeature);
_builder.append(_featureID, " ");
_builder.append(";");
_builder.newLineIfNotEmpty();
}
}
}
}
_builder.newLine();
_builder.append(" ");
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* The static member with the instance of this {@link ModelPackage}.");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public static final ");
String _simpleClassName_1 = ePackageModelGenAnnotation.getSimpleClassName();
_builder.append(_simpleClassName_1, " ");
_builder.append(" INSTANCE = initialize();");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* Initializes this {@link org.eclipse.emf.texo.model.ModelPackage}.");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("* @return an initialized instance of this class");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public static ");
String _simpleClassName_2 = ePackageModelGenAnnotation.getSimpleClassName();
_builder.append(_simpleClassName_2, " ");
_builder.append(" initialize() {");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append(" ");
_builder.append("if (isInitialized) {");
_builder.newLine();
_builder.append(" ");
_builder.append("return (");
String _simpleClassName_3 = ePackageModelGenAnnotation.getSimpleClassName();
_builder.append(_simpleClassName_3, " ");
_builder.append(")org.eclipse.emf.texo.model.ModelResolver.getInstance().getModelPackage(NS_URI);");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append(" ");
_builder.append("final ");
String _simpleClassName_4 = ePackageModelGenAnnotation.getSimpleClassName();
_builder.append(_simpleClassName_4, " ");
_builder.append(" modelPackage = new ");
String _simpleClassName_5 = ePackageModelGenAnnotation.getSimpleClassName();
_builder.append(_simpleClassName_5, " ");
_builder.append("();");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append(" ");
_builder.append("org.eclipse.emf.texo.model.ModelResolver.getInstance().registerModelPackage(modelPackage);");
_builder.newLine();
_builder.newLine();
{
boolean _isHandleEcoreFile = ePackageModelGenAnnotation.isHandleEcoreFile();
if (_isHandleEcoreFile) {
_builder.append(" ");
_builder.append("// read the model from the ecore file, the EPackage is registered in the EPackage.Registry");
_builder.newLine();
_builder.append(" ");
_builder.append("// see the ModelResolver getEPackageRegistry method");
_builder.newLine();
_builder.append(" ");
_builder.append("org.eclipse.emf.texo.utils.ModelUtils.readEPackagesFromFile(modelPackage);");
_builder.newLine();
}
}
_builder.newLine();
_builder.append(" ");
_builder.append("isInitialized = true;");
_builder.newLine();
_builder.newLine();
{
EList<EPackageModelGenAnnotation> _dependsOn = ePackageModelGenAnnotation.getDependsOn();
for(final EPackageModelGenAnnotation p : _dependsOn) {
_builder.append(" ");
String _qualifiedClassName = ((EPackageModelGenAnnotation) p).getQualifiedClassName();
_builder.append(_qualifiedClassName, " ");
_builder.append(".initialize();");
_builder.newLineIfNotEmpty();
}
}
_builder.newLine();
_builder.append(" ");
_builder.append("// force the initialization of the EFactory proxy");
_builder.newLine();
_builder.append(" ");
_builder.append("modelPackage.getEPackage();");
_builder.newLine();
_builder.newLine();
{
EList<EPackageModelGenAnnotation> _subPackageModelGens = ePackageModelGenAnnotation.getSubPackageModelGens();
for(final EPackageModelGenAnnotation p_1 : _subPackageModelGens) {
_builder.append(" ");
String _qualifiedClassName_1 = ((EPackageModelGenAnnotation) p_1).getQualifiedClassName();
_builder.append(_qualifiedClassName_1, " ");
_builder.append(".initialize();");
_builder.newLineIfNotEmpty();
}
}
_builder.newLine();
_builder.append(" ");
_builder.append("// register the relation between a Class and its EClassifier");
_builder.newLine();
{
EList<EClassModelGenAnnotation> _eClassModelGenAnnotations_1 = ePackageModelGenAnnotation.getEClassModelGenAnnotations();
for(final EClassModelGenAnnotation eClassAnnotation_1 : _eClassModelGenAnnotations_1) {
{
String _qualifiedClassName_2 = eClassAnnotation_1.getQualifiedClassName();
boolean _notEquals_1 = (!Objects.equal(_qualifiedClassName_2, null));
if (_notEquals_1) {
_builder.append(" ");
_builder.append("org.eclipse.emf.texo.model.ModelResolver.getInstance().registerClassModelMapping(");
String _qualifiedClassName_3 = eClassAnnotation_1.getQualifiedClassName();
_builder.append(_qualifiedClassName_3, " ");
_builder.append(".class, modelPackage.get");
String _name_5 = eClassAnnotation_1.getName();
String _firstUpper = TemplateUtil.toFirstUpper(_name_5);
_builder.append(_firstUpper, " ");
_builder.append("EClass(),modelPackage);");
_builder.newLineIfNotEmpty();
}
}
}
}
_builder.newLine();
{
EList<EEnumModelGenAnnotation> _eEnumModelGenAnnotations = ePackageModelGenAnnotation.getEEnumModelGenAnnotations();
for(final EEnumModelGenAnnotation eEnumAnnotation : _eEnumModelGenAnnotations) {
{
String _qualifiedClassName_4 = eEnumAnnotation.getQualifiedClassName();
boolean _notEquals_2 = (!Objects.equal(_qualifiedClassName_4, null));
if (_notEquals_2) {
_builder.append(" ");
_builder.append("org.eclipse.emf.texo.model.ModelResolver.getInstance().registerClassModelMapping(");
String _qualifiedClassName_5 = eEnumAnnotation.getQualifiedClassName();
_builder.append(_qualifiedClassName_5, " ");
_builder.append(".class, modelPackage.get");
String _name_6 = eEnumAnnotation.getName();
String _firstUpper_1 = TemplateUtil.toFirstUpper(_name_6);
_builder.append(_firstUpper_1, " ");
_builder.append("EEnum(),modelPackage);");
_builder.newLineIfNotEmpty();
}
}
}
}
_builder.newLine();
{
if (doDao) {
{
EList<EClassModelGenAnnotation> _eClassModelGenAnnotations_2 = ePackageModelGenAnnotation.getEClassModelGenAnnotations();
for(final EClassModelGenAnnotation eClassAnnotation_2 : _eClassModelGenAnnotations_2) {
{
String _daoQualifiedClassName = eClassAnnotation_2.getDaoQualifiedClassName();
boolean _notEquals_3 = (!Objects.equal(_daoQualifiedClassName, null));
if (_notEquals_3) {
_builder.append(" ");
_builder.append("org.eclipse.emf.texo.server.store.DaoRegistry.getInstance().registerDao(");
String _qualifiedClassName_6 = eClassAnnotation_2.getQualifiedClassName();
_builder.append(_qualifiedClassName_6, " ");
_builder.append(".class, ");
String _daoQualifiedClassName_1 = eClassAnnotation_2.getDaoQualifiedClassName();
_builder.append(_daoQualifiedClassName_1, " ");
_builder.append(".class);");
_builder.newLineIfNotEmpty();
}
}
}
}
}
}
_builder.newLine();
_builder.append(" ");
_builder.append("// and return ourselves");
_builder.newLine();
_builder.append(" ");
_builder.append("return modelPackage;");
_builder.newLine();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* Returns the {@link org.eclipse.emf.texo.model.ModelFactory} of this ModelPackage.");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("* @return the {@link ");
String _simpleModelFactoryClassName_2 = ePackageModelGenAnnotation.getSimpleModelFactoryClassName();
_builder.append(_simpleModelFactoryClassName_2, " ");
_builder.append("} instance.");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("@Override");
_builder.newLine();
_builder.append(" ");
_builder.append("public ");
String _simpleModelFactoryClassName_3 = ePackageModelGenAnnotation.getSimpleModelFactoryClassName();
_builder.append(_simpleModelFactoryClassName_3, " ");
_builder.append(" getModelFactory() {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("return ");
_builder.append(GenConstants.MODELFACTORY_CONSTANT, " ");
_builder.append(";");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* Returns the nsUri of the {@link org.eclipse.emf.ecore.EPackage} managed by this Package instance.");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("* @return the nsUri of the EPackage");
_builder.newLine();
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("@Override");
_builder.newLine();
_builder.append(" ");
_builder.append("public String getNsURI() {");
_builder.newLine();
_builder.append(" ");
_builder.append("return NS_URI;");
_builder.newLine();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* Returns the name of the ecore file containing the ecore model of the {@link org.eclipse.emf.ecore.EPackage} managed here.");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("* @return the name of the ecore file");
_builder.newLine();
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("@Override");
_builder.newLine();
_builder.append(" ");
_builder.append("public String getEcoreFileName() {");
_builder.newLine();
_builder.append(" ");
_builder.append("return \"");
String _name_7 = ePackageModelGenAnnotation.getName();
_builder.append(_name_7, " ");
_builder.append(".ecore\";");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.newLine();
{
EList<EClassModelGenAnnotation> _eClassModelGenAnnotations_3 = ePackageModelGenAnnotation.getEClassModelGenAnnotations();
for(final EClassModelGenAnnotation eClassAnnotation_3 : _eClassModelGenAnnotations_3) {
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* Returns the {@link org.eclipse.emf.ecore.EClass} \'<em><b>");
EClass _eClass_2 = eClassAnnotation_3.getEClass();
String _name_8 = _eClass_2.getName();
_builder.append(_name_8, " ");
_builder.append("</b></em>\'.");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @return an instance of the {@link org.eclipse.emf.ecore.EClass} \'<em><b>");
EClass _eClass_3 = eClassAnnotation_3.getEClass();
String _name_9 = _eClass_3.getName();
_builder.append(_name_9, " ");
_builder.append("</b></em>\'");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public org.eclipse.emf.ecore.EClass get");
String _name_10 = eClassAnnotation_3.getName();
String _firstUpper_2 = TemplateUtil.toFirstUpper(_name_10);
_builder.append(_firstUpper_2, " ");
_builder.append("EClass() {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("return (org.eclipse.emf.ecore.EClass)getEPackage().getEClassifiers().get(");
String _name_11 = eClassAnnotation_3.getName();
String _upperCase_4 = TemplateUtil.toUpperCase(_name_11);
_builder.append(_upperCase_4, " ");
_builder.append("_CLASSIFIER_ID);");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
{
EList<EStructuralFeatureModelGenAnnotation> _eStructuralFeatureModelGenAnnotations = eClassAnnotation_3.getEStructuralFeatureModelGenAnnotations();
for(final EStructuralFeatureModelGenAnnotation featureAnnotation_1 : _eStructuralFeatureModelGenAnnotations) {
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* Returns the {@link org.eclipse.emf.ecore.EStructuralFeature} \'<em><b>");
EClass _eClass_4 = eClassAnnotation_3.getEClass();
String _name_12 = _eClass_4.getName();
_builder.append(_name_12, " ");
_builder.append(".");
EStructuralFeature _eStructuralFeature_1 = featureAnnotation_1.getEStructuralFeature();
String _name_13 = _eStructuralFeature_1.getName();
_builder.append(_name_13, " ");
_builder.append("</b></em>\'.");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @return an instance of the {@link org.eclipse.emf.ecore.EStructuralFeature}: \'<em><b>");
EClass _eClass_5 = eClassAnnotation_3.getEClass();
String _name_14 = _eClass_5.getName();
_builder.append(_name_14, " ");
_builder.append(".");
EStructuralFeature _eStructuralFeature_2 = featureAnnotation_1.getEStructuralFeature();
String _name_15 = _eStructuralFeature_2.getName();
_builder.append(_name_15, " ");
_builder.append("</b></em>\'.");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
{
EStructuralFeature _eStructuralFeature_3 = featureAnnotation_1.getEStructuralFeature();
if ((_eStructuralFeature_3 instanceof EReference)) {
_builder.append(" ");
_builder.append("public org.eclipse.emf.ecore.EReference get");
String _name_16 = eClassAnnotation_3.getName();
String _firstUpper_3 = TemplateUtil.toFirstUpper(_name_16);
_builder.append(_firstUpper_3, " ");
_builder.append("_");
String _name_17 = featureAnnotation_1.getName();
String _firstUpper_4 = TemplateUtil.toFirstUpper(_name_17);
_builder.append(_firstUpper_4, " ");
_builder.append("() {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("return (org.eclipse.emf.ecore.EReference)get");
String _name_18 = eClassAnnotation_3.getName();
String _firstUpper_5 = TemplateUtil.toFirstUpper(_name_18);
_builder.append(_firstUpper_5, " ");
_builder.append("EClass().getEAllStructuralFeatures().get(");
String _name_19 = eClassAnnotation_3.getName();
String _upperCase_5 = TemplateUtil.toUpperCase(_name_19);
_builder.append(_upperCase_5, " ");
_builder.append("_");
String _name_20 = featureAnnotation_1.getName();
String _upperCase_6 = TemplateUtil.toUpperCase(_name_20);
_builder.append(_upperCase_6, " ");
_builder.append("_FEATURE_ID);");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
} else {
_builder.append(" ");
_builder.append("public org.eclipse.emf.ecore.EAttribute get");
String _name_21 = eClassAnnotation_3.getName();
String _firstUpper_6 = TemplateUtil.toFirstUpper(_name_21);
_builder.append(_firstUpper_6, " ");
_builder.append("_");
String _name_22 = featureAnnotation_1.getName();
String _firstUpper_7 = TemplateUtil.toFirstUpper(_name_22);
_builder.append(_firstUpper_7, " ");
_builder.append("() {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("return (org.eclipse.emf.ecore.EAttribute)get");
String _name_23 = eClassAnnotation_3.getName();
String _firstUpper_8 = TemplateUtil.toFirstUpper(_name_23);
_builder.append(_firstUpper_8, " ");
_builder.append("EClass().getEAllStructuralFeatures().get(");
String _name_24 = eClassAnnotation_3.getName();
String _upperCase_7 = TemplateUtil.toUpperCase(_name_24);
_builder.append(_upperCase_7, " ");
_builder.append("_");
String _name_25 = featureAnnotation_1.getName();
String _upperCase_8 = TemplateUtil.toUpperCase(_name_25);
_builder.append(_upperCase_8, " ");
_builder.append("_FEATURE_ID);");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
}
}
}
}
}
}
{
EList<EDataTypeModelGenAnnotationDefinition> _eDataTypeModelGenAnnotations_1 = ePackageModelGenAnnotation.getEDataTypeModelGenAnnotations();
for(final EDataTypeModelGenAnnotationDefinition eClassifierAnnotation_1 : _eDataTypeModelGenAnnotations_1) {
{
EClassifier _eClassifier_1 = eClassifierAnnotation_1.getEClassifier();
if ((_eClassifier_1 instanceof EEnum)) {
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* Returns the EEnum \'<em><b>");
EClassifier _eClassifier_2 = eClassifierAnnotation_1.getEClassifier();
String _name_26 = _eClassifier_2.getName();
_builder.append(_name_26, " ");
_builder.append("</b></em>\'.");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @return an instance of the EEnum representing \'<em><b>");
EClassifier _eClassifier_3 = eClassifierAnnotation_1.getEClassifier();
String _name_27 = _eClassifier_3.getName();
_builder.append(_name_27, " ");
_builder.append("</b></em>\'");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public org.eclipse.emf.ecore.EEnum get");
String _name_28 = eClassifierAnnotation_1.getName();
String _firstUpper_9 = TemplateUtil.toFirstUpper(_name_28);
_builder.append(_firstUpper_9, " ");
_builder.append("EEnum() {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("return (org.eclipse.emf.ecore.EEnum)getEPackage().getEClassifiers().get(");
String _name_29 = eClassifierAnnotation_1.getName();
String _upperCase_9 = TemplateUtil.toUpperCase(_name_29);
_builder.append(_upperCase_9, " ");
_builder.append("_CLASSIFIER_ID);");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
} else {
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* Returns the {@link org.eclipse.emf.ecore.EDataType} \'<em><b>");
EClassifier _eClassifier_4 = eClassifierAnnotation_1.getEClassifier();
String _name_30 = _eClassifier_4.getName();
_builder.append(_name_30, " ");
_builder.append("</b></em>\'.");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @return an instance of the {@link org.eclipse.emf.ecore.EDataType} representing \'<em><b>");
EClassifier _eClassifier_5 = eClassifierAnnotation_1.getEClassifier();
String _name_31 = _eClassifier_5.getName();
_builder.append(_name_31, " ");
_builder.append("</b></em>\'");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("public org.eclipse.emf.ecore.EDataType get");
String _name_32 = eClassifierAnnotation_1.getName();
String _firstUpper_10 = TemplateUtil.toFirstUpper(_name_32);
_builder.append(_firstUpper_10, " ");
_builder.append("EDataType() {");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("return (org.eclipse.emf.ecore.EDataType)getEPackage().getEClassifiers().get(");
String _name_33 = eClassifierAnnotation_1.getName();
String _upperCase_10 = TemplateUtil.toUpperCase(_name_33);
_builder.append(_upperCase_10, " ");
_builder.append("_CLASSIFIER_ID);");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
}
}
}
}
_builder.newLine();
_builder.append(" ");
_builder.append("/**");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- begin-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* <!-- end-user-doc -->");
_builder.newLine();
_builder.append(" ");
_builder.append("* @param eClassifier");
_builder.newLine();
_builder.append(" ");
_builder.append("* the {@link org.eclipse.emf.ecore.EClassifier}");
_builder.newLine();
_builder.append(" ");
_builder.append("* @return the class implementing a specific {@link org.eclipse.emf.ecore.EClass}.");
_builder.newLine();
_builder.append(" ");
_builder.append("* @generated");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append(" ");
_builder.append("@Override");
_builder.newLine();
_builder.append(" ");
_builder.append("public Class<?> getEClassifierClass(org.eclipse.emf.ecore.EClassifier eClassifier) {");
_builder.newLine();
_builder.append(" ");
_builder.append("switch (eClassifier.getClassifierID()) {");
_builder.newLine();
{
EList<EClassModelGenAnnotation> _eClassModelGenAnnotations_4 = ePackageModelGenAnnotation.getEClassModelGenAnnotations();
for(final EClassModelGenAnnotation eClassAnnotation_4 : _eClassModelGenAnnotations_4) {
{
String _qualifiedClassName_7 = eClassAnnotation_4.getQualifiedClassName();
boolean _notEquals_4 = (!Objects.equal(_qualifiedClassName_7, null));
if (_notEquals_4) {
_builder.append(" ");
_builder.append("case ");
String _name_34 = eClassAnnotation_4.getName();
String _upperCase_11 = TemplateUtil.toUpperCase(_name_34);
_builder.append(_upperCase_11, " ");
_builder.append("_CLASSIFIER_ID:");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("return ");
String _qualifiedClassName_8 = eClassAnnotation_4.getQualifiedClassName();
_builder.append(_qualifiedClassName_8, " ");
_builder.append(".class;");
_builder.newLineIfNotEmpty();
}
}
}
}
{
EList<EDataTypeModelGenAnnotationDefinition> _eDataTypeModelGenAnnotations_2 = ePackageModelGenAnnotation.getEDataTypeModelGenAnnotations();
for(final EDataTypeModelGenAnnotationDefinition eClassifierAnnotation_2 : _eDataTypeModelGenAnnotations_2) {
{
String _qualifiedClassName_9 = eClassifierAnnotation_2.getQualifiedClassName();
boolean _notEquals_5 = (!Objects.equal(_qualifiedClassName_9, null));
if (_notEquals_5) {
_builder.append(" ");
_builder.append("case ");
String _name_35 = eClassifierAnnotation_2.getName();
String _upperCase_12 = TemplateUtil.toUpperCase(_name_35);
_builder.append(_upperCase_12, " ");
_builder.append("_CLASSIFIER_ID:");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append(" ");
_builder.append("return ");
String _qualifiedClassName_10 = eClassifierAnnotation_2.getQualifiedClassName();
_builder.append(_qualifiedClassName_10, " ");
_builder.append(".class;");
_builder.newLineIfNotEmpty();
}
}
}
}
_builder.append(" ");
_builder.append("default:");
_builder.newLine();
_builder.append(" ");
_builder.append("throw new IllegalArgumentException(\"The EClassifier \'\" + eClassifier + \"\' is not defined in this EPackage\");");
_builder.newLine();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
return _builder.toString();
}
}