| /** |
| * 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()); |
| } |
| } |
| } |