blob: a9b4cf7df8229561d01143bfa6858683b9c08b17 [file] [log] [blame]
/**
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* ============================================================================
* Initial contribution:
* Loetz GmbH & Co. KG
*
* generated by xtext
*/
package org.eclipse.osbp.xtext.dialogdsl.jvmmodel;
import java.util.Arrays;
import javax.inject.Inject;
import org.eclipse.e4.core.contexts.IContextFunction;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.osbp.core.api.persistence.IPersistenceService;
import org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension;
import org.eclipse.osbp.ecview.semantic.uimodel.UiDisplayView;
import org.eclipse.osbp.ecview.semantic.uimodel.UiIDEView;
import org.eclipse.osbp.ecview.semantic.uimodel.UiMobileView;
import org.eclipse.osbp.ecview.semantic.uimodel.UiView;
import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
import org.eclipse.osbp.ui.api.report.IReportProvider;
import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
import org.eclipse.osbp.xtext.dialogdsl.Dialog;
import org.eclipse.osbp.xtext.dialogdsl.DialogPackage;
import org.eclipse.osbp.xtext.dialogdsl.constants.DialogConstants;
import org.eclipse.osbp.xtext.dialogdsl.jvmmodel.DialogDslDisplayViewCreator;
import org.eclipse.osbp.xtext.dialogdsl.jvmmodel.DialogDslMobileViewCreator;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.common.types.JvmAnnotationReference;
import org.eclipse.xtext.common.types.JvmDeclaredType;
import org.eclipse.xtext.common.types.JvmField;
import org.eclipse.xtext.common.types.JvmFormalParameter;
import org.eclipse.xtext.common.types.JvmGenericType;
import org.eclipse.xtext.common.types.JvmMember;
import org.eclipse.xtext.common.types.JvmOperation;
import org.eclipse.xtext.common.types.JvmTypeReference;
import org.eclipse.xtext.common.types.JvmVisibility;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable;
import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer;
import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.eclipse.xtext.xbase.lib.StringExtensions;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality;
import org.osgi.service.component.annotations.ReferencePolicy;
import org.slf4j.Logger;
/**
* Infers a JVM model from the source model.
*
* The JVM model should contain all elements that would appear in the Java code
* which is generated from the source model. Other models link against the JVM model rather than the source model.
*/
@SuppressWarnings("all")
public class DialogDslJvmModelInferrer extends AbstractModelInferrer {
/**
* convenience API to build and initialize JVM types and their members.
*/
@Inject
@Extension
private DialogDslMobileViewCreator _dialogDslMobileViewCreator;
@Inject
@Extension
private DialogDslDisplayViewCreator _dialogDslDisplayViewCreator;
@Inject
@Extension
private DialogConstants _dialogConstants;
@Inject
@Extension
private IQualifiedNameProvider _iQualifiedNameProvider;
@Inject
@Extension
private JvmTypesBuilder _jvmTypesBuilder;
@Inject
@Extension
private AnnotationExtension _annotationExtension;
private String binderClassName = "";
public String bindPersistenceMethod = "bindPersistenceService";
public String unbindPersistenceMethod = "unbindPersistenceService";
public String bindThemeResourceMethod = "bindThemeResourceService";
public String unbindThemeResourceMethod = "unbindThemeResourceService";
public String bindUserAccessMethod = "bindUserAccessService";
public String unbindUserAccessMethod = "unbindUserAccessService";
public String bindDSLMetadataService = "bindDSLMetadataService";
public String unbindDSLMetadataService = "unbindDSLMetadataService";
public String bindReportProvider = "bindReportProvider";
public String unbindReportProvider = "unbindReportProvider";
protected void _infer(final DialogPackage pckg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
String _string = this._iQualifiedNameProvider.getFullyQualifiedName(pckg).toString();
String _plus = (_string + ".");
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(pckg).getLastSegment());
String _plus_1 = (_plus + _firstUpper);
String _plus_2 = (_plus_1 + "ServiceBinder");
this.binderClassName = _plus_2;
JvmGenericType cls = this._jvmTypesBuilder.toClass(pckg, pckg.getName().toString().concat("ServiceBinder"));
cls.setSimpleName(StringExtensions.toFirstUpper(cls.getSimpleName()));
final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(SuppressWarnings.class, "serial");
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
EList<JvmAnnotationReference> _annotations_1 = it.getAnnotations();
JvmAnnotationReference _annotationRef_1 = this._annotationTypesBuilder.annotationRef(Component.class);
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_1, _annotationRef_1);
it.setPackageName(this._iQualifiedNameProvider.getFullyQualifiedName(pckg).toString());
this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(pckg));
this.toBinderFields(it, pckg);
this.toBinderOperations(it, pckg);
};
acceptor.<JvmGenericType>accept(cls, _function);
EList<Dialog> _dialogs = pckg.getDialogs();
for (final Dialog dialog : _dialogs) {
{
boolean _isEmbedded = dialog.isEmbedded();
if (_isEmbedded) {
StringConcatenation _builder = new StringConcatenation();
String _name = dialog.getName();
_builder.append(_name);
_builder.append(this._dialogConstants.VAACLIPSE_VIEW_PREFIX);
_builder.append("ContextFunction");
String contextClassName = _builder.toString();
final JvmGenericType contextCls = this._jvmTypesBuilder.toClass(pckg, contextClassName);
contextCls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(IContextFunction.class));
contextCls.setSimpleName(StringExtensions.toFirstUpper(contextCls.getSimpleName()));
final Procedure1<JvmGenericType> _function_1 = (JvmGenericType it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Component.class);
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(IContextFunction.class);
this._annotationExtension.addAnnAttr(annotationRef, dialog, "service", ((JvmTypeReference) _typeRef));
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(IContextFunction.SERVICE_CONTEXT_KEY);
_builder_1.append("=");
String _firstUpper_1 = StringExtensions.toFirstUpper(dialog.getName());
_builder_1.append(_firstUpper_1);
String propContent = _builder_1.toString();
this._annotationExtension.addAnnAttr(annotationRef, dialog, "property", propContent);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setPackageName(this._iQualifiedNameProvider.getFullyQualifiedName(pckg).toString());
this.contextOperations(it, dialog);
};
acceptor.<JvmGenericType>accept(contextCls, _function_1);
}
boolean _isAutowire = dialog.isAutowire();
boolean _not = (!_isAutowire);
if (_not) {
UiView uiview = dialog.getUiView();
boolean isIDEView = (uiview instanceof UiIDEView);
boolean isMobileView = (uiview instanceof UiMobileView);
boolean isDisplayView = (uiview instanceof UiDisplayView);
if (isDisplayView) {
this._dialogDslDisplayViewCreator.createDisplayUI(pckg, dialog, acceptor, this._annotationTypesBuilder, this._typeReferenceBuilder);
} else {
if (isMobileView) {
this._dialogDslMobileViewCreator.createMobileUI(pckg, dialog, acceptor, this._annotationTypesBuilder, this._typeReferenceBuilder, this.binderClassName);
}
}
}
}
}
}
public void toBinderFields(final JvmDeclaredType type, final DialogPackage pkg) {
JvmField field = null;
final Procedure1<JvmField> _function = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("org.slf4j.LoggerFactory.getLogger(\"servicebinder\")");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_1);
};
field = this._jvmTypesBuilder.toField(pkg, "log", this._typeReferenceBuilder.typeRef(Logger.class), _function);
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
field = this._jvmTypesBuilder.toField(pkg, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_1 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
field = this._jvmTypesBuilder.toField(pkg, "themeResourceService", this._typeReferenceBuilder.typeRef(IThemeResourceService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_2 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
field = this._jvmTypesBuilder.toField(pkg, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_3 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
field = this._jvmTypesBuilder.toField(pkg, "dslMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_4 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
field = this._jvmTypesBuilder.toField(pkg, "reportProvider", this._typeReferenceBuilder.typeRef(IReportProvider.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_5 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
}
public void toBinderOperations(final JvmDeclaredType type, final DialogPackage pkg) {
EList<JvmMember> _members = type.getMembers();
final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return persistenceService;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(pkg, "getPersistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class), _function);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
EList<JvmMember> _members_1 = type.getMembers();
final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return themeResourceService;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_2);
};
JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(pkg, "getThemeResourceService", this._typeReferenceBuilder.typeRef(IThemeResourceService.class), _function_1);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
EList<JvmMember> _members_2 = type.getMembers();
final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return userAccessService;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_3);
};
JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(pkg, "getUserAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class), _function_2);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
EList<JvmMember> _members_3 = type.getMembers();
final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return dslMetadataService;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_4);
};
JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(pkg, "getDSLMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class), _function_3);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
EList<JvmMember> _members_4 = type.getMembers();
final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return reportProvider;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_5);
};
JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(pkg, "getReportProvider", this._typeReferenceBuilder.typeRef(IReportProvider.class), _function_4);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
EList<JvmMember> _members_5 = type.getMembers();
final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "policy", ReferencePolicy.STATIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".persistenceService = persistenceService;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog PersistenceService bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_6);
};
JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(pkg, this.bindPersistenceMethod, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
EList<JvmMember> _members_6 = type.getMembers();
final Procedure1<JvmOperation> _function_6 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".persistenceService = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog PersistenceService unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_7);
};
JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(pkg, this.unbindPersistenceMethod, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_6);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
EList<JvmMember> _members_7 = type.getMembers();
final Procedure1<JvmOperation> _function_7 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "policy", ReferencePolicy.STATIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "themeResourceService", this._typeReferenceBuilder.typeRef(IThemeResourceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".themeResourceService = themeResourceService;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog ThemeResourceService bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_8);
};
JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(pkg, this.bindThemeResourceMethod, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
EList<JvmMember> _members_8 = type.getMembers();
final Procedure1<JvmOperation> _function_8 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "themeResourceService", this._typeReferenceBuilder.typeRef(IThemeResourceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".themeResourceService = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog ThemeResourceService unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_9);
};
JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(pkg, this.unbindThemeResourceMethod, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_8);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
EList<JvmMember> _members_9 = type.getMembers();
final Procedure1<JvmOperation> _function_9 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "policy", ReferencePolicy.STATIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_10 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".userAccessService = userAccessService;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog UserAccessService bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_10);
};
JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(pkg, this.bindUserAccessMethod, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_9);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_9);
EList<JvmMember> _members_10 = type.getMembers();
final Procedure1<JvmOperation> _function_10 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".userAccessService = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog UserAccessService unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_11);
};
JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(pkg, this.unbindUserAccessMethod, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_10);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
EList<JvmMember> _members_11 = type.getMembers();
final Procedure1<JvmOperation> _function_11 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "policy", ReferencePolicy.STATIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "dslMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_12 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".dslMetadataService = dslMetadataService;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog DSLMetadataService bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_12);
};
JvmOperation _method_11 = this._jvmTypesBuilder.toMethod(pkg, this.bindDSLMetadataService, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_11);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_11, _method_11);
EList<JvmMember> _members_12 = type.getMembers();
final Procedure1<JvmOperation> _function_12 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "dslMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_13 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".dslMetadataService = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog DSLMetadataService unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_13);
};
JvmOperation _method_12 = this._jvmTypesBuilder.toMethod(pkg, this.unbindDSLMetadataService, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_12);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_12, _method_12);
EList<JvmMember> _members_13 = type.getMembers();
final Procedure1<JvmOperation> _function_13 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, pkg, "policy", ReferencePolicy.STATIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "reportProvider", this._typeReferenceBuilder.typeRef(IReportProvider.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_14 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".reportProvider = reportProvider;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog ReportProvider bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_14);
};
JvmOperation _method_13 = this._jvmTypesBuilder.toMethod(pkg, this.bindReportProvider, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_13);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_13, _method_13);
EList<JvmMember> _members_14 = type.getMembers();
final Procedure1<JvmOperation> _function_14 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "reportProvider", this._typeReferenceBuilder.typeRef(IReportProvider.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_15 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.binderClassName);
_builder.append(".reportProvider = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"MobileDialog ReportProvider unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_15);
};
JvmOperation _method_14 = this._jvmTypesBuilder.toMethod(pkg, this.unbindReportProvider, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_14);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_14, _method_14);
}
/**
* <p>create an injectable context function to be used by an e4 application.
*
* @param type
* @param dialog
* @param clsName
*/
public void contextOperations(final JvmGenericType type, final Dialog dialog) {
EList<JvmMember> _members = type.getMembers();
final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(dialog, "context", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
EList<JvmFormalParameter> _parameters_1 = it.getParameters();
JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(dialog, "contextKey", this._typeReferenceBuilder.typeRef(String.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("MApplication application = context.get(MApplication.class);");
_builder.newLine();
_builder.append("IEclipseContext appCtx = application.getContext();");
_builder.newLine();
_builder.append("IDSLMetadataService dslMetadataService = appCtx.get(IDSLMetadataService.class);");
_builder.newLine();
_builder.append("appCtx.set(\"embeddedDialogModel\", dslMetadataService.getMetadata(\"");
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(dialog);
_builder.append(_fullyQualifiedName);
_builder.append("\", DialogDSLPackage.Literals.DIALOG));");
_builder.newLineIfNotEmpty();
_builder.append("IViewEmbeddedProvider provider = ContextInjectionFactory.make(org.eclipse.osbp.vaaclipse.addons.softwarefactory.perspective.DialogProvider.class, appCtx);");
_builder.newLine();
_builder.append("appCtx.set(IViewEmbeddedProvider.class, provider);");
_builder.newLine();
_builder.append("return provider;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(dialog, "compute", this._typeReferenceBuilder.typeRef(Object.class), _function);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
}
public void infer(final EObject pckg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
if (pckg instanceof DialogPackage) {
_infer((DialogPackage)pckg, acceptor, isPreIndexingPhase);
return;
} else if (pckg != null) {
_infer(pckg, acceptor, isPreIndexingPhase);
return;
} else {
throw new IllegalArgumentException("Unhandled parameter types: " +
Arrays.<Object>asList(pckg, acceptor, isPreIndexingPhase).toString());
}
}
}