| /** |
| * 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 v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| * |
| * |
| * This copyright notice shows up in the generated Java code |
| */ |
| package org.eclipse.osbp.xtext.blip.jvmmodel; |
| |
| import com.google.common.base.Objects; |
| import java.util.Arrays; |
| import java.util.HashMap; |
| import java.util.HashSet; |
| import java.util.List; |
| import java.util.TreeSet; |
| import java.util.regex.Pattern; |
| import javax.inject.Inject; |
| import org.apache.commons.lang3.StringUtils; |
| import org.eclipse.bpmn2.DocumentRoot; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.MultiStatus; |
| import org.eclipse.e4.core.contexts.IContextFunction; |
| import org.eclipse.e4.core.contexts.IEclipseContext; |
| import org.eclipse.e4.core.di.annotations.Optional; |
| import org.eclipse.emf.common.util.EList; |
| import org.eclipse.emf.common.util.URI; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.osbp.bpm.AbstractBPMEvent; |
| import org.eclipse.osbp.bpm.AbstractBPMServiceTask; |
| import org.eclipse.osbp.bpm.AbstractBlipBPMFunctionProvider; |
| import org.eclipse.osbp.bpm.AbstractBlipBPMItem; |
| import org.eclipse.osbp.bpm.AbstractBlipBPMUserTask; |
| import org.eclipse.osbp.bpm.BPMCallActivity; |
| import org.eclipse.osbp.bpm.BPMEndEvent; |
| import org.eclipse.osbp.bpm.BPMPersistTask; |
| import org.eclipse.osbp.bpm.BPMScriptTask; |
| import org.eclipse.osbp.bpm.BPMSplitGateway; |
| import org.eclipse.osbp.bpm.BPMStartEvent; |
| import org.eclipse.osbp.bpm.BlipBPMStartInfo; |
| import org.eclipse.osbp.bpm.api.IBPMEngine; |
| import org.eclipse.osbp.bpm.api.IBlipBPMFunctionProvider; |
| import org.eclipse.osbp.bpm.api.IBlipBPMStartInfo; |
| import org.eclipse.osbp.bpm.api.IBlipBPMWorkloadModifiableItem; |
| import org.eclipse.osbp.bpm.api.ServiceExecutionMode; |
| import org.eclipse.osbp.dsl.common.datatypes.IDto; |
| import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity; |
| import org.eclipse.osbp.dsl.semantic.dto.LDto; |
| import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference; |
| import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference; |
| import org.eclipse.osbp.dsl.semantic.dto.LDtoReference; |
| import org.eclipse.osbp.ui.api.useraccess.IOrganizationService; |
| import org.eclipse.osbp.utils.annotation.CommonUtils; |
| import org.eclipse.osbp.xtext.blip.Blip; |
| import org.eclipse.osbp.xtext.blip.BlipCallActivity; |
| import org.eclipse.osbp.xtext.blip.BlipDto; |
| import org.eclipse.osbp.xtext.blip.BlipDtoPath; |
| import org.eclipse.osbp.xtext.blip.BlipEndEvent; |
| import org.eclipse.osbp.xtext.blip.BlipExclusiveSplitGateway; |
| import org.eclipse.osbp.xtext.blip.BlipInclusiveSplitGateway; |
| import org.eclipse.osbp.xtext.blip.BlipItem; |
| import org.eclipse.osbp.xtext.blip.BlipOutGoing; |
| import org.eclipse.osbp.xtext.blip.BlipPackage; |
| import org.eclipse.osbp.xtext.blip.BlipPersistTask; |
| import org.eclipse.osbp.xtext.blip.BlipScriptTask; |
| import org.eclipse.osbp.xtext.blip.BlipServiceTask; |
| import org.eclipse.osbp.xtext.blip.BlipSplitGateway; |
| import org.eclipse.osbp.xtext.blip.BlipStartEvent; |
| import org.eclipse.osbp.xtext.blip.BlipUserTask; |
| import org.eclipse.osbp.xtext.blip.BlipWorkload; |
| import org.eclipse.osbp.xtext.blip.EndEventHandlingEnum; |
| import org.eclipse.osbp.xtext.blip.ServiceExecutionModeEnum; |
| import org.eclipse.osbp.xtext.blip.common.BlipHelper; |
| import org.eclipse.osbp.xtext.blip.jvmmodel.BlipModelGenerator; |
| import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryBlipGroup; |
| import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction; |
| import org.eclipse.xtend2.lib.StringConcatenation; |
| import org.eclipse.xtext.common.types.JvmAnnotationReference; |
| import org.eclipse.xtext.common.types.JvmConstructor; |
| 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.Conversions; |
| import org.eclipse.xtext.xbase.lib.Exceptions; |
| import org.eclipse.xtext.xbase.lib.Extension; |
| import org.eclipse.xtext.xbase.lib.IterableExtensions; |
| import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; |
| import org.eclipse.xtext.xbase.lib.StringExtensions; |
| import org.osgi.service.component.annotations.Component; |
| import org.slf4j.Logger; |
| |
| /** |
| * <p> |
| * Business Logic Implementation Platform |
| * This inferrer infers models of extension blip and generates code to be injected as context function to e4 application |
| * and handles the communication with the bpm service. |
| * </p> |
| * |
| * @author Joerg Riegel |
| */ |
| @SuppressWarnings("all") |
| public class BlipDSLJvmModelInferrer extends AbstractModelInferrer { |
| @Inject |
| @Extension |
| private JvmTypesBuilder _jvmTypesBuilder; |
| |
| @Inject |
| @Extension |
| private IQualifiedNameProvider _iQualifiedNameProvider; |
| |
| @Inject |
| @Extension |
| private BlipModelGenerator _blipModelGenerator; |
| |
| @Inject |
| @Extension |
| private CommonUtils _commonUtils; |
| |
| protected void _infer(final BlipPackage blipPkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) { |
| this._blipModelGenerator.generatePckgName(blipPkg, acceptor); |
| this.createAbstractBpmItemClasses(blipPkg, acceptor); |
| final String clsName = StringExtensions.toFirstUpper(this.className(blipPkg)); |
| final JvmGenericType cls = this._jvmTypesBuilder.toClass(blipPkg, clsName); |
| cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(AbstractBlipBPMFunctionProvider.class)); |
| cls.setSimpleName(StringExtensions.toFirstUpper(cls.getSimpleName())); |
| final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> { |
| JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Component.class); |
| JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(IBlipBPMFunctionProvider.class); |
| this._commonUtils.addAnnAttr(annotationRef, blipPkg, "service", ((JvmTypeReference) _typeRef)); |
| EList<JvmAnnotationReference> _annotations = it.getAnnotations(); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef); |
| this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(blipPkg)); |
| this.toFields(it, blipPkg); |
| this.toOperations(it, blipPkg); |
| it.setPackageName(this._iQualifiedNameProvider.getFullyQualifiedName(blipPkg).toString()); |
| }; |
| acceptor.<JvmGenericType>accept(cls, _function); |
| String contextClassName = (clsName + "ContextFunction"); |
| final JvmGenericType contextCls = this._jvmTypesBuilder.toClass(blipPkg, contextClassName); |
| final String tableClsName = clsName; |
| 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._commonUtils.addAnnAttr(annotationRef, blipPkg, "service", |
| ((JvmTypeReference) _typeRef)); |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(IContextFunction.SERVICE_CONTEXT_KEY); |
| _builder.append("=Blip"); |
| String propContent = _builder.toString(); |
| this._commonUtils.addAnnAttr(annotationRef, blipPkg, "property", propContent); |
| EList<JvmAnnotationReference> _annotations = it.getAnnotations(); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef); |
| it.setPackageName(this._iQualifiedNameProvider.getFullyQualifiedName(blipPkg).toString()); |
| this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(blipPkg)); |
| this.toContextOperations(it, blipPkg, tableClsName); |
| }; |
| acceptor.<JvmGenericType>accept(contextCls, _function_1); |
| } |
| |
| public CharSequence blipItemAbstractClassName(final BlipItem blipItem) { |
| CharSequence _xifexpression = null; |
| int _dtoPathTokensCount = this.getDtoPathTokensCount(blipItem); |
| boolean _equals = (_dtoPathTokensCount == 2); |
| if (_equals) { |
| CharSequence _xblockexpression = null; |
| { |
| EObject _eContainer = blipItem.eContainer(); |
| final Blip blip = ((Blip) _eContainer); |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("AbstractBPMItem"); |
| String _firstUpper = StringExtensions.toFirstUpper(blip.getName()); |
| _builder.append(_firstUpper); |
| String _firstUpper_1 = StringExtensions.toFirstUpper(blipItem.getName()); |
| _builder.append(_firstUpper_1); |
| _xblockexpression = _builder; |
| } |
| _xifexpression = _xblockexpression; |
| } else { |
| _xifexpression = this.blipItemAbstractClass(blipItem).getSimpleName(); |
| } |
| return _xifexpression; |
| } |
| |
| public Class<? extends AbstractBlipBPMItem> blipItemAbstractClass(final BlipItem blipItem) { |
| Class<? extends AbstractBlipBPMItem> _xifexpression = null; |
| if ((blipItem instanceof BlipUserTask)) { |
| _xifexpression = AbstractBlipBPMUserTask.class; |
| } else { |
| Class<? extends AbstractBlipBPMItem> _xifexpression_1 = null; |
| if ((blipItem instanceof BlipCallActivity)) { |
| _xifexpression_1 = BPMCallActivity.class; |
| } else { |
| Class<? extends AbstractBlipBPMItem> _xifexpression_2 = null; |
| if ((blipItem instanceof BlipScriptTask)) { |
| _xifexpression_2 = BPMScriptTask.class; |
| } else { |
| Class<? extends AbstractBlipBPMItem> _xifexpression_3 = null; |
| if ((blipItem instanceof BlipPersistTask)) { |
| _xifexpression_3 = BPMPersistTask.class; |
| } else { |
| Class<? extends AbstractBlipBPMItem> _xifexpression_4 = null; |
| if ((blipItem instanceof BlipServiceTask)) { |
| _xifexpression_4 = AbstractBPMServiceTask.class; |
| } else { |
| Class<? extends AbstractBPMEvent> _xifexpression_5 = null; |
| if ((blipItem instanceof BlipSplitGateway)) { |
| _xifexpression_5 = BPMSplitGateway.class; |
| } else { |
| Class<? extends AbstractBPMEvent> _xifexpression_6 = null; |
| if ((blipItem instanceof BlipStartEvent)) { |
| _xifexpression_6 = BPMStartEvent.class; |
| } else { |
| Class<BPMEndEvent> _xifexpression_7 = null; |
| if ((blipItem instanceof BlipEndEvent)) { |
| _xifexpression_7 = BPMEndEvent.class; |
| } |
| _xifexpression_6 = _xifexpression_7; |
| } |
| _xifexpression_5 = _xifexpression_6; |
| } |
| _xifexpression_4 = _xifexpression_5; |
| } |
| _xifexpression_3 = _xifexpression_4; |
| } |
| _xifexpression_2 = _xifexpression_3; |
| } |
| _xifexpression_1 = _xifexpression_2; |
| } |
| _xifexpression = _xifexpression_1; |
| } |
| return _xifexpression; |
| } |
| |
| public int getDtoPathTokensCount(final BlipItem blipItem) { |
| BlipDtoPath _dtoPath = blipItem.getDtoPath(); |
| String _dtoPath_1 = null; |
| if (_dtoPath!=null) { |
| _dtoPath_1=_dtoPath.getDtoPath(); |
| } |
| String[] _split = null; |
| if (_dtoPath_1!=null) { |
| _split=_dtoPath_1.split("\\."); |
| } |
| int _size = 0; |
| if (((List<String>)Conversions.doWrapArray(_split))!=null) { |
| _size=((List<String>)Conversions.doWrapArray(_split)).size(); |
| } |
| return _size; |
| } |
| |
| public void createAbstractBpmItemClasses(final BlipPackage blipPkg, final IJvmDeclaredTypeAcceptor acceptor) { |
| EList<Blip> _blips = blipPkg.getBlips(); |
| for (final Blip blip : _blips) { |
| EList<BlipItem> _items = blip.getItems(); |
| for (final BlipItem blipItem : _items) { |
| int _dtoPathTokensCount = this.getDtoPathTokensCount(blipItem); |
| boolean _equals = (_dtoPathTokensCount == 2); |
| if (_equals) { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _name = blipPkg.getName(); |
| _builder.append(_name); |
| _builder.append("."); |
| String _string = this.blipItemAbstractClassName(blipItem).toString(); |
| _builder.append(_string); |
| final JvmGenericType cls = this._jvmTypesBuilder.toClass(blipPkg, _builder.toString()); |
| final CharSequence operativeDtoClassName = this.getOperativeDtoFqn(blipItem); |
| BlipDtoPath _dtoPath = null; |
| if (blipItem!=null) { |
| _dtoPath=blipItem.getDtoPath(); |
| } |
| final String[] dtoChildNames = _dtoPath.getDtoPath().split("\\."); |
| final String dtoFeatureName = StringUtils.capitalize(IterableExtensions.<String>last(((Iterable<String>)Conversions.doWrapArray(dtoChildNames)))); |
| cls.setAbstract(true); |
| cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(this.blipItemAbstractClass(blipItem))); |
| cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(IBlipBPMWorkloadModifiableItem.class)); |
| final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> { |
| EList<JvmMember> _members = cls.getMembers(); |
| final Procedure1<JvmConstructor> _function_1 = (JvmConstructor it_1) -> { |
| it_1.setVisibility(JvmVisibility.PROTECTED); |
| EList<JvmFormalParameter> _parameters = it_1.getParameters(); |
| JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(blipPkg, "blipId", this._typeReferenceBuilder.typeRef(String.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| EList<JvmFormalParameter> _parameters_1 = it_1.getParameters(); |
| JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(blipPkg, "bpmId", this._typeReferenceBuilder.typeRef(String.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1); |
| EList<JvmFormalParameter> _parameters_2 = it_1.getParameters(); |
| JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(blipPkg, "onEntryFunction", this._typeReferenceBuilder.typeRef(String.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2); |
| EList<JvmFormalParameter> _parameters_3 = it_1.getParameters(); |
| JvmFormalParameter _parameter_3 = this._jvmTypesBuilder.toParameter(blipPkg, "onExitFunction", this._typeReferenceBuilder.typeRef(String.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3); |
| final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_2) -> { |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append("super(blipId, bpmId, onEntryFunction, onExitFunction);"); |
| it_2.append(_builder_1); |
| }; |
| this._jvmTypesBuilder.setBody(it_1, _function_2); |
| }; |
| JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(blipPkg, _function_1); |
| this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor); |
| EList<JvmMember> _members_1 = cls.getMembers(); |
| JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(blipPkg, "operativeDto", this._typeReferenceBuilder.typeRef(IDto.class)); |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append("(("); |
| String _workloadDtoFqn = this.getWorkloadDtoFqn(blip); |
| _builder_1.append(_workloadDtoFqn); |
| _builder_1.append(")workloadDto).addTo"); |
| _builder_1.append(dtoFeatureName); |
| _builder_1.append("(("); |
| _builder_1.append(operativeDtoClassName); |
| _builder_1.append(") operativeDto);"); |
| JvmOperation _createMethod = this.createMethod(blipItem, cls, "addOperativeDto", _parameter, dtoFeatureName, _builder_1.toString()); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _createMethod); |
| EList<JvmMember> _members_2 = cls.getMembers(); |
| JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(blipPkg, "operativeDtos", this._typeReferenceBuilder.typeRef(List.class, this._typeReferenceBuilder.typeRef(IDto.class))); |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append("for\t(IDto operativeDto : operativeDtos) {"); |
| _builder_2.newLine(); |
| _builder_2.append("\t"); |
| _builder_2.append("(("); |
| String _workloadDtoFqn_1 = this.getWorkloadDtoFqn(blip); |
| _builder_2.append(_workloadDtoFqn_1, "\t"); |
| _builder_2.append(")workloadDto).addTo"); |
| _builder_2.append(dtoFeatureName, "\t"); |
| _builder_2.append("(("); |
| _builder_2.append(operativeDtoClassName, "\t"); |
| _builder_2.append(") operativeDto);"); |
| _builder_2.newLineIfNotEmpty(); |
| _builder_2.append("}"); |
| _builder_2.newLine(); |
| JvmOperation _createMethod_1 = this.createMethod(blipItem, cls, "addOperativeDtos", _parameter_1, dtoFeatureName, _builder_2.toString()); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _createMethod_1); |
| EList<JvmMember> _members_3 = cls.getMembers(); |
| StringConcatenation _builder_3 = new StringConcatenation(); |
| _builder_3.append("(("); |
| String _workloadDtoFqn_2 = this.getWorkloadDtoFqn(blip); |
| _builder_3.append(_workloadDtoFqn_2); |
| _builder_3.append(")workloadDto).set"); |
| _builder_3.append(dtoFeatureName); |
| _builder_3.append("(null);"); |
| JvmOperation _createMethod_2 = this.createMethod(blipItem, cls, "removeAllOperativeDtos", |
| null, dtoFeatureName, _builder_3.toString()); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _createMethod_2); |
| EList<JvmMember> _members_4 = cls.getMembers(); |
| JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(blipPkg, "operativeDto", this._typeReferenceBuilder.typeRef(IDto.class)); |
| StringConcatenation _builder_4 = new StringConcatenation(); |
| _builder_4.append("(("); |
| String _workloadDtoFqn_3 = this.getWorkloadDtoFqn(blip); |
| _builder_4.append(_workloadDtoFqn_3); |
| _builder_4.append(")workloadDto).removeFrom"); |
| _builder_4.append(dtoFeatureName); |
| _builder_4.append("(("); |
| _builder_4.append(operativeDtoClassName); |
| _builder_4.append(") operativeDto);"); |
| JvmOperation _createMethod_3 = this.createMethod(blipItem, cls, "removeOperativeDto", _parameter_2, dtoFeatureName, _builder_4.toString()); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _createMethod_3); |
| EList<JvmMember> _members_5 = cls.getMembers(); |
| JvmFormalParameter _parameter_3 = this._jvmTypesBuilder.toParameter(blipPkg, "operativeDtos", this._typeReferenceBuilder.typeRef(List.class, this._typeReferenceBuilder.typeRef(IDto.class))); |
| StringConcatenation _builder_5 = new StringConcatenation(); |
| _builder_5.append("for\t(IDto operativeDto : operativeDtos) {"); |
| _builder_5.newLine(); |
| _builder_5.append("\t"); |
| _builder_5.append("(("); |
| String _workloadDtoFqn_4 = this.getWorkloadDtoFqn(blip); |
| _builder_5.append(_workloadDtoFqn_4, "\t"); |
| _builder_5.append(")workloadDto).removeFrom"); |
| _builder_5.append(dtoFeatureName, "\t"); |
| _builder_5.append("(("); |
| _builder_5.append(operativeDtoClassName, "\t"); |
| _builder_5.append(") operativeDto);"); |
| _builder_5.newLineIfNotEmpty(); |
| _builder_5.append("}"); |
| _builder_5.newLine(); |
| JvmOperation _createMethod_4 = this.createMethod(blipItem, cls, "removeOperativeDtos", _parameter_3, dtoFeatureName, _builder_5.toString()); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _createMethod_4); |
| }; |
| acceptor.<JvmGenericType>accept(cls, _function); |
| } |
| } |
| } |
| } |
| |
| public JvmOperation createMethod(final BlipItem blipItem, final JvmGenericType cls, final String methodName, final JvmFormalParameter parameter2, final String getterSetterPostfix, final String listModifier) { |
| EObject _eContainer = blipItem.eContainer(); |
| final Blip blip = ((Blip) _eContainer); |
| EObject _eContainer_1 = blip.eContainer(); |
| final BlipPackage blipPckg = ((BlipPackage) _eContainer_1); |
| 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(blipPckg, "workloadDto", this._typeReferenceBuilder.typeRef(IDto.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| boolean _notEquals = (!Objects.equal(parameter2, null)); |
| if (_notEquals) { |
| EList<JvmFormalParameter> _parameters_1 = it.getParameters(); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, parameter2); |
| } |
| final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(listModifier); |
| _builder.newLineIfNotEmpty(); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_1); |
| }; |
| return this._jvmTypesBuilder.toMethod(blipPckg, methodName, this._typeReferenceBuilder.typeRef(Void.TYPE), _function); |
| } |
| |
| public String className(final BlipPackage pkg) { |
| String _firstUpper = StringExtensions.toFirstUpper(pkg.getName().toString()); |
| String clsName = (_firstUpper + "Controller"); |
| String[] parts = clsName.split(Pattern.quote(".")); |
| int len = parts.length; |
| if ((len > 1)) { |
| return StringExtensions.toFirstUpper(parts[(len - 1)]); |
| } |
| return clsName; |
| } |
| |
| public void toFields(final JvmGenericType type, final BlipPackage 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(\"blip\")"); |
| 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); |
| final Procedure1<JvmField> _function_1 = (JvmField it) -> { |
| EList<JvmAnnotationReference> _annotations = it.getAnnotations(); |
| JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Inject.class); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef); |
| EList<JvmAnnotationReference> _annotations_1 = it.getAnnotations(); |
| JvmAnnotationReference _annotationRef_1 = this._annotationTypesBuilder.annotationRef(Optional.class); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_1, _annotationRef_1); |
| }; |
| field = this._jvmTypesBuilder.toField(pkg, "bpmEngine", this._typeReferenceBuilder.typeRef(IBPMEngine.class), _function_1); |
| EList<JvmMember> _members_1 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field); |
| final Procedure1<JvmField> _function_2 = (JvmField it) -> { |
| EList<JvmAnnotationReference> _annotations = it.getAnnotations(); |
| JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Inject.class); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef); |
| EList<JvmAnnotationReference> _annotations_1 = it.getAnnotations(); |
| JvmAnnotationReference _annotationRef_1 = this._annotationTypesBuilder.annotationRef(Optional.class); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_1, _annotationRef_1); |
| }; |
| field = this._jvmTypesBuilder.toField(pkg, "organizationService", this._typeReferenceBuilder.typeRef(IOrganizationService.class), _function_2); |
| EList<JvmMember> _members_2 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field); |
| } |
| |
| public String createBPMNCalls(final BlipPackage pkg) { |
| try { |
| final int CODE = IStatus.ERROR; |
| final String PLUGINID = this.getClass().getCanonicalName(); |
| final String PREFIX_MESSAGE = "BPMN2 file"; |
| final String POSTFIX_MESSAGE = "could not be found in this bundle!"; |
| HashSet<IStatus> errors = new HashSet<IStatus>(); |
| TreeSet<Object> resources = new TreeSet<Object>(); |
| String text = ""; |
| final String[] tokens = pkg.eResource().getURI().toString().split("/"); |
| String base = ((String) null); |
| for (int i = 0; (i < 3); i++) { |
| boolean _equals = Objects.equal(base, null); |
| if (_equals) { |
| base = tokens[i]; |
| } else { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(base); |
| _builder.append("/"); |
| String _get = tokens[i]; |
| _builder.append(_get); |
| base = _builder.toString(); |
| } |
| } |
| EList<Blip> _blips = pkg.getBlips(); |
| for (final Blip blip : _blips) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(text); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("put(\""); |
| String _name = blip.getName(); |
| _builder.append(_name); |
| _builder.append("\",new "); |
| String _simpleName = BlipBPMStartInfo.class.getSimpleName(); |
| _builder.append(_simpleName); |
| _builder.append("(\""); |
| String _name_1 = blip.getName(); |
| _builder.append(_name_1); |
| _builder.append("\",\""); |
| String _name_2 = blip.getName(); |
| _builder.append(_name_2); |
| _builder.append("\""); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t"); |
| _builder.append(", \""); |
| String _resourceName = BlipDSLJvmModelInferrer.getResourceName(blip); |
| _builder.append(_resourceName, "\t"); |
| _builder.append("\""); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t"); |
| _builder.append(", "); |
| { |
| boolean _isHasImage = blip.isHasImage(); |
| if (_isHasImage) { |
| _builder.append("\""); |
| String _image = blip.getImage(); |
| _builder.append(_image, "\t"); |
| _builder.append("\""); |
| } else { |
| _builder.append("null"); |
| } |
| } |
| _builder.append(","); |
| { |
| boolean _isHasIcon = blip.isHasIcon(); |
| if (_isHasIcon) { |
| _builder.append("\""); |
| String _literal = blip.getIcon().getLiteral(); |
| _builder.append(_literal, "\t"); |
| _builder.append("\""); |
| } else { |
| _builder.append("null"); |
| } |
| } |
| _builder.append(","); |
| { |
| boolean _isHasLogging = blip.isHasLogging(); |
| if (_isHasLogging) { |
| boolean _booleanValue = Boolean.valueOf(blip.isHasLogging()).booleanValue(); |
| _builder.append(_booleanValue, "\t"); |
| } else { |
| _builder.append("false"); |
| } |
| } |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t"); |
| _builder.append(", "); |
| String _functionGroupClassName = this.getFunctionGroupClassName(blip); |
| _builder.append(_functionGroupClassName, "\t"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t"); |
| _builder.append(", "); |
| String _workloadDtoClassName = this.getWorkloadDtoClassName(blip); |
| _builder.append(_workloadDtoClassName, "\t"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t"); |
| String _createBlipItems = this.createBlipItems(blip); |
| _builder.append(_createBlipItems, "\t"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t"); |
| _builder.append("));"); |
| _builder.newLine(); |
| text = _builder.toString(); |
| } |
| boolean _isEmpty = errors.isEmpty(); |
| boolean _not = (!_isEmpty); |
| if (_not) { |
| final HashSet<IStatus> _converted_errors = (HashSet<IStatus>)errors; |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append(PREFIX_MESSAGE); |
| _builder_1.append(" "); |
| String _join = IterableExtensions.join(resources, ",\n"); |
| _builder_1.append(_join); |
| _builder_1.append(" "); |
| _builder_1.append(POSTFIX_MESSAGE); |
| MultiStatus _multiStatus = new MultiStatus(PLUGINID, CODE, ((IStatus[])Conversions.unwrapArray(_converted_errors, IStatus.class)), _builder_1.toString(), null); |
| throw new CoreException(_multiStatus); |
| } |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append("{{"); |
| _builder_2.newLine(); |
| _builder_2.append("\t"); |
| _builder_2.append(text, "\t"); |
| _builder_2.newLineIfNotEmpty(); |
| _builder_2.append("}}"); |
| _builder_2.newLine(); |
| text = _builder_2.toString(); |
| return text; |
| } catch (Throwable _e) { |
| throw Exceptions.sneakyThrow(_e); |
| } |
| } |
| |
| public QualifiedName getWorkloadDtoClass(final Blip blip) { |
| BlipWorkload _workload = blip.getWorkload(); |
| boolean _equals = Objects.equal(_workload, null); |
| if (_equals) { |
| return null; |
| } else { |
| return this._iQualifiedNameProvider.getFullyQualifiedName(blip.getWorkload().getSource().getDtoRef()); |
| } |
| } |
| |
| public String getFunctionGroupClass(final Blip blip) { |
| FunctionLibraryBlipGroup _functionGroup = blip.getFunctionGroup(); |
| boolean _equals = Objects.equal(_functionGroup, null); |
| if (_equals) { |
| return "null"; |
| } |
| StringConcatenation _builder = new StringConcatenation(); |
| QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(blip.getFunctionGroup()); |
| _builder.append(_fullyQualifiedName); |
| return _builder.toString(); |
| } |
| |
| public String getFunctionGroupClassName(final Blip blip) { |
| FunctionLibraryBlipGroup _functionGroup = blip.getFunctionGroup(); |
| boolean _equals = Objects.equal(_functionGroup, null); |
| if (_equals) { |
| return "null"; |
| } |
| StringConcatenation _builder = new StringConcatenation(); |
| QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(blip.getFunctionGroup()); |
| _builder.append(_fullyQualifiedName); |
| _builder.append(".class"); |
| return _builder.toString(); |
| } |
| |
| public String getWorkloadDtoClassName(final Blip blip) { |
| boolean _equals = this.getWorkloadDtoFqn(blip).equals("null"); |
| if (_equals) { |
| return "null"; |
| } |
| StringConcatenation _builder = new StringConcatenation(); |
| String _workloadDtoFqn = this.getWorkloadDtoFqn(blip); |
| _builder.append(_workloadDtoFqn); |
| _builder.append(".class"); |
| return _builder.toString(); |
| } |
| |
| public String getWorkloadDtoFqn(final Blip blip) { |
| QualifiedName _workloadDtoClass = this.getWorkloadDtoClass(blip); |
| boolean _equals = Objects.equal(_workloadDtoClass, null); |
| if (_equals) { |
| return "null"; |
| } else { |
| StringConcatenation _builder = new StringConcatenation(); |
| QualifiedName _workloadDtoClass_1 = this.getWorkloadDtoClass(blip); |
| _builder.append(_workloadDtoClass_1); |
| return _builder.toString(); |
| } |
| } |
| |
| public String getOperativeDtoClassName(final BlipItem blipItem) { |
| boolean _equals = this.getOperativeDtoFqn(blipItem).equals("null"); |
| if (_equals) { |
| return "null"; |
| } |
| StringConcatenation _builder = new StringConcatenation(); |
| CharSequence _operativeDtoFqn = this.getOperativeDtoFqn(blipItem); |
| _builder.append(_operativeDtoFqn); |
| _builder.append(".class"); |
| return _builder.toString(); |
| } |
| |
| public CharSequence getOperativeDtoFqn(final BlipItem blipItem) { |
| CharSequence _xblockexpression = null; |
| { |
| EObject _eContainer = blipItem.eContainer(); |
| Blip blip = ((Blip) _eContainer); |
| CharSequence _xifexpression = null; |
| QualifiedName _workloadDtoClass = this.getWorkloadDtoClass(blip); |
| boolean _equals = Objects.equal(_workloadDtoClass, null); |
| if (_equals) { |
| _xifexpression = "null"; |
| } else { |
| StringConcatenation _builder = new StringConcatenation(); |
| QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(blipItem.getOperativeLDto()); |
| _builder.append(_fullyQualifiedName); |
| _xifexpression = _builder; |
| } |
| _xblockexpression = _xifexpression; |
| } |
| return _xblockexpression; |
| } |
| |
| public String asString(final ServiceExecutionModeEnum mode) { |
| String _switchResult = null; |
| if (mode != null) { |
| switch (mode) { |
| case ONEWAY: |
| _switchResult = ServiceExecutionMode.ONEWAY.toString(); |
| break; |
| case SYNC: |
| _switchResult = ServiceExecutionMode.SYNC.toString(); |
| break; |
| default: |
| break; |
| } |
| } |
| return _switchResult; |
| } |
| |
| public String createBlipItems(final Blip blip) { |
| String text = ""; |
| EList<BlipItem> _items = blip.getItems(); |
| for (final BlipItem blipItem : _items) { |
| { |
| final CharSequence itemClass = this.blipItemAbstractClassName(blipItem); |
| boolean _matched = false; |
| if (blipItem instanceof BlipUserTask) { |
| _matched=true; |
| String onEntry = "null"; |
| FunctionLibraryFunction _onEntry = ((BlipUserTask)blipItem).getOnEntry(); |
| boolean _notEquals = (!Objects.equal(_onEntry, null)); |
| if (_notEquals) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("\""); |
| String _name = ((BlipUserTask)blipItem).getOnEntry().getName(); |
| _builder.append(_name); |
| _builder.append("\""); |
| onEntry = _builder.toString(); |
| } |
| String onExit = "null"; |
| FunctionLibraryFunction _onExit = ((BlipUserTask)blipItem).getOnExit(); |
| boolean _notEquals_1 = (!Objects.equal(_onExit, null)); |
| if (_notEquals_1) { |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append("\""); |
| String _name_1 = ((BlipUserTask)blipItem).getOnExit().getName(); |
| _builder_1.append(_name_1); |
| _builder_1.append("\""); |
| onExit = _builder_1.toString(); |
| } |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append(text); |
| _builder_2.append(", new "); |
| _builder_2.append(itemClass); |
| _builder_2.append("(\""); |
| String _name_2 = ((BlipUserTask)blipItem).getName(); |
| _builder_2.append(_name_2); |
| _builder_2.append("\", \""); |
| String _id = ((BlipUserTask)blipItem).getTask().getId(); |
| _builder_2.append(_id); |
| _builder_2.append("\", "); |
| _builder_2.append(onEntry); |
| _builder_2.append(", "); |
| _builder_2.append(onExit); |
| _builder_2.append(") {"); |
| _builder_2.newLineIfNotEmpty(); |
| _builder_2.append("\t"); |
| _builder_2.append("@Override"); |
| _builder_2.newLine(); |
| _builder_2.append("\t"); |
| _builder_2.append("public Class<?> getOperativeDtoClass() {"); |
| _builder_2.newLine(); |
| _builder_2.append("\t\t"); |
| _builder_2.append("return "); |
| String _operativeDtoClassName = this.getOperativeDtoClassName(blipItem); |
| _builder_2.append(_operativeDtoClassName, "\t\t"); |
| _builder_2.append(";"); |
| _builder_2.newLineIfNotEmpty(); |
| _builder_2.append("\t"); |
| _builder_2.append("}"); |
| _builder_2.newLine(); |
| _builder_2.append("\t"); |
| _builder_2.append("@Override"); |
| _builder_2.newLine(); |
| _builder_2.append("\t"); |
| _builder_2.append("public List<IDto> getOperativeDtos(IDto item0) {"); |
| _builder_2.newLine(); |
| _builder_2.append("\t\t"); |
| CharSequence _operativeDtosBody = this.getOperativeDtosBody(blipItem); |
| _builder_2.append(_operativeDtosBody, "\t\t"); |
| _builder_2.newLineIfNotEmpty(); |
| _builder_2.append("\t"); |
| _builder_2.append("}"); |
| _builder_2.newLine(); |
| _builder_2.append("\t"); |
| String _operativeCastedDtosMethod = this.getOperativeCastedDtosMethod(blipItem); |
| _builder_2.append(_operativeCastedDtosMethod, "\t"); |
| _builder_2.newLineIfNotEmpty(); |
| _builder_2.append("}"); |
| _builder_2.newLine(); |
| text = _builder_2.toString(); |
| } |
| if (!_matched) { |
| if (blipItem instanceof BlipCallActivity) { |
| _matched=true; |
| String onEntry = "null"; |
| FunctionLibraryFunction _onEntry = ((BlipCallActivity)blipItem).getOnEntry(); |
| boolean _notEquals = (!Objects.equal(_onEntry, null)); |
| if (_notEquals) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("\""); |
| String _name = ((BlipCallActivity)blipItem).getOnEntry().getName(); |
| _builder.append(_name); |
| _builder.append("\""); |
| onEntry = _builder.toString(); |
| } |
| String onExit = "null"; |
| FunctionLibraryFunction _onExit = ((BlipCallActivity)blipItem).getOnExit(); |
| boolean _notEquals_1 = (!Objects.equal(_onExit, null)); |
| if (_notEquals_1) { |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append("\""); |
| String _name_1 = ((BlipCallActivity)blipItem).getOnExit().getName(); |
| _builder_1.append(_name_1); |
| _builder_1.append("\""); |
| onExit = _builder_1.toString(); |
| } |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append(text); |
| _builder_2.append(", new "); |
| _builder_2.append(itemClass); |
| _builder_2.append("(\""); |
| String _name_2 = ((BlipCallActivity)blipItem).getName(); |
| _builder_2.append(_name_2); |
| _builder_2.append("\", \""); |
| String _id = ((BlipCallActivity)blipItem).getCallActivity().getId(); |
| _builder_2.append(_id); |
| _builder_2.append("\", "); |
| _builder_2.append(onEntry); |
| _builder_2.append(", "); |
| _builder_2.append(onExit); |
| _builder_2.append(")"); |
| _builder_2.newLineIfNotEmpty(); |
| text = _builder_2.toString(); |
| } |
| } |
| if (!_matched) { |
| if (blipItem instanceof BlipScriptTask) { |
| _matched=true; |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(text); |
| _builder.append(", new "); |
| _builder.append(itemClass); |
| _builder.append("(\""); |
| String _name = ((BlipScriptTask)blipItem).getName(); |
| _builder.append(_name); |
| _builder.append("\", \""); |
| String _id = ((BlipScriptTask)blipItem).getTask().getId(); |
| _builder.append(_id); |
| _builder.append("\", \""); |
| String _name_1 = ((BlipScriptTask)blipItem).getFunction().getName(); |
| _builder.append(_name_1); |
| _builder.append("\")"); |
| _builder.newLineIfNotEmpty(); |
| text = _builder.toString(); |
| } |
| } |
| if (!_matched) { |
| if (blipItem instanceof BlipPersistTask) { |
| _matched=true; |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(text); |
| _builder.append(", new "); |
| _builder.append(itemClass); |
| _builder.append("(\""); |
| String _name = ((BlipPersistTask)blipItem).getName(); |
| _builder.append(_name); |
| _builder.append("\", \""); |
| String _id = ((BlipPersistTask)blipItem).getTask().getId(); |
| _builder.append(_id); |
| _builder.append("\", \""); |
| String _name_1 = ((BlipPersistTask)blipItem).getFunction().getName(); |
| _builder.append(_name_1); |
| _builder.append("\")"); |
| _builder.newLineIfNotEmpty(); |
| text = _builder.toString(); |
| } |
| } |
| if (!_matched) { |
| if (blipItem instanceof BlipServiceTask) { |
| _matched=true; |
| String onEntry = "null"; |
| FunctionLibraryFunction _onEntry = ((BlipServiceTask)blipItem).getOnEntry(); |
| boolean _notEquals = (!Objects.equal(_onEntry, null)); |
| if (_notEquals) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("\""); |
| String _name = ((BlipServiceTask)blipItem).getOnEntry().getName(); |
| _builder.append(_name); |
| _builder.append("\""); |
| onEntry = _builder.toString(); |
| } |
| String onExit = "null"; |
| FunctionLibraryFunction _onExit = ((BlipServiceTask)blipItem).getOnExit(); |
| boolean _notEquals_1 = (!Objects.equal(_onExit, null)); |
| if (_notEquals_1) { |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append("\""); |
| String _name_1 = ((BlipServiceTask)blipItem).getOnExit().getName(); |
| _builder_1.append(_name_1); |
| _builder_1.append("\""); |
| onExit = _builder_1.toString(); |
| } |
| String executionMode = ""; |
| int _timeoutInSecs = ((BlipServiceTask)blipItem).getTimeoutInSecs(); |
| boolean _greaterThan = (_timeoutInSecs > 0); |
| if (_greaterThan) { |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append("ServiceExecutionMode.ASYNCHRON, "); |
| int _timeoutInSecs_1 = ((BlipServiceTask)blipItem).getTimeoutInSecs(); |
| _builder_2.append(_timeoutInSecs_1); |
| executionMode = _builder_2.toString(); |
| } else { |
| StringConcatenation _builder_3 = new StringConcatenation(); |
| _builder_3.append("ServiceExecutionMode."); |
| String _asString = this.asString(((BlipServiceTask)blipItem).getExecutionMode()); |
| _builder_3.append(_asString); |
| _builder_3.append(", 0"); |
| executionMode = _builder_3.toString(); |
| } |
| String implementation = ""; |
| FunctionLibraryFunction _function = ((BlipServiceTask)blipItem).getFunction(); |
| boolean _notEquals_2 = (!Objects.equal(_function, null)); |
| if (_notEquals_2) { |
| StringConcatenation _builder_4 = new StringConcatenation(); |
| _builder_4.append("ServiceImplementation.FUNCTION_LIBRARY, \""); |
| String _functionGroupClass = this.getFunctionGroupClass(blip); |
| _builder_4.append(_functionGroupClass); |
| _builder_4.append("\", \""); |
| String _name_2 = ((BlipServiceTask)blipItem).getFunction().getName(); |
| _builder_4.append(_name_2); |
| _builder_4.append("\""); |
| implementation = _builder_4.toString(); |
| } else { |
| StringConcatenation _builder_5 = new StringConcatenation(); |
| _builder_5.append("ServiceImplementation.WEB_SERVICE, \""); |
| String _webServiceInterface = ((BlipServiceTask)blipItem).getWebServiceInterface(); |
| _builder_5.append(_webServiceInterface); |
| _builder_5.append("\", \""); |
| String _webServiceOperation = ((BlipServiceTask)blipItem).getWebServiceOperation(); |
| _builder_5.append(_webServiceOperation); |
| _builder_5.append("\""); |
| implementation = _builder_5.toString(); |
| } |
| StringConcatenation _builder_6 = new StringConcatenation(); |
| _builder_6.append(text); |
| _builder_6.append(", new "); |
| _builder_6.append(itemClass); |
| _builder_6.append("(\""); |
| String _name_3 = ((BlipServiceTask)blipItem).getName(); |
| _builder_6.append(_name_3); |
| _builder_6.append("\", \""); |
| String _id = ((BlipServiceTask)blipItem).getTask().getId(); |
| _builder_6.append(_id); |
| _builder_6.append("\", "); |
| _builder_6.append(onEntry); |
| _builder_6.append(", "); |
| _builder_6.append(onExit); |
| _builder_6.append(", "); |
| _builder_6.append(executionMode); |
| _builder_6.append(", "); |
| _builder_6.append(implementation); |
| _builder_6.append(") {"); |
| _builder_6.newLineIfNotEmpty(); |
| _builder_6.append("\t"); |
| _builder_6.append("@Override"); |
| _builder_6.newLine(); |
| _builder_6.append("\t"); |
| _builder_6.append("public Class<?> getOperativeDtoClass() {"); |
| _builder_6.newLine(); |
| _builder_6.append("\t\t"); |
| _builder_6.append("return "); |
| String _workloadDtoClassName = this.getWorkloadDtoClassName(blip); |
| _builder_6.append(_workloadDtoClassName, "\t\t"); |
| _builder_6.append(";"); |
| _builder_6.newLineIfNotEmpty(); |
| _builder_6.append("\t"); |
| _builder_6.append("}"); |
| _builder_6.newLine(); |
| _builder_6.append("\t"); |
| _builder_6.append("@Override"); |
| _builder_6.newLine(); |
| _builder_6.append("\t"); |
| _builder_6.append("public List<IDto> getOperativeDtos(IDto item0) {"); |
| _builder_6.newLine(); |
| _builder_6.append("\t\t"); |
| _builder_6.append("return Collections.emptyList();"); |
| _builder_6.newLine(); |
| _builder_6.append("\t"); |
| _builder_6.append("}"); |
| _builder_6.newLine(); |
| _builder_6.append("}"); |
| _builder_6.newLine(); |
| text = _builder_6.toString(); |
| } |
| } |
| if (!_matched) { |
| if (blipItem instanceof BlipSplitGateway) { |
| _matched=true; |
| String mode = ""; |
| if ((blipItem instanceof BlipExclusiveSplitGateway)) { |
| mode = "GatewayMode.EXCLUSIVE"; |
| } else { |
| if ((blipItem instanceof BlipInclusiveSplitGateway)) { |
| mode = "GatewayMode.INCLUSIVE"; |
| } |
| } |
| String outgoings = ""; |
| int priority = 0; |
| EList<BlipOutGoing> _outgoings = ((BlipSplitGateway)blipItem).getOutgoings(); |
| for (final BlipOutGoing outgoing : _outgoings) { |
| { |
| priority = (priority + 1); |
| boolean _isIsDefault = outgoing.isIsDefault(); |
| if (_isIsDefault) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(outgoings); |
| _builder.append(","); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t"); |
| _builder.append("new BlipBPMOutgoing(\""); |
| String _name = outgoing.getName(); |
| _builder.append(_name, "\t\t"); |
| _builder.append("\", \""); |
| String _id = outgoing.getSequenceFlow().getId(); |
| _builder.append(_id, "\t\t"); |
| _builder.append("\", "); |
| _builder.append(priority, "\t\t"); |
| _builder.append(")"); |
| outgoings = _builder.toString(); |
| } else { |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append(outgoings); |
| _builder_1.append(","); |
| _builder_1.newLineIfNotEmpty(); |
| _builder_1.append("\t\t"); |
| _builder_1.append("new BlipBPMOutgoing(\""); |
| String _name_1 = outgoing.getName(); |
| _builder_1.append(_name_1, "\t\t"); |
| _builder_1.append("\", \""); |
| String _id_1 = outgoing.getSequenceFlow().getId(); |
| _builder_1.append(_id_1, "\t\t"); |
| _builder_1.append("\", "); |
| _builder_1.append(priority, "\t\t"); |
| _builder_1.append(", \""); |
| String _name_2 = outgoing.getConstraint().getName(); |
| _builder_1.append(_name_2, "\t\t"); |
| _builder_1.append("\")"); |
| outgoings = _builder_1.toString(); |
| } |
| } |
| } |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(text); |
| _builder.append(", new "); |
| _builder.append(itemClass); |
| _builder.append("(\""); |
| String _name = ((BlipSplitGateway)blipItem).getName(); |
| _builder.append(_name); |
| _builder.append("\", \""); |
| String _id = ((BlipSplitGateway)blipItem).getGateway().getId(); |
| _builder.append(_id); |
| _builder.append("\", "); |
| _builder.append(mode); |
| _builder.append(outgoings); |
| _builder.append(")"); |
| _builder.newLineIfNotEmpty(); |
| text = _builder.toString(); |
| } |
| } |
| if (!_matched) { |
| if (blipItem instanceof BlipEndEvent) { |
| _matched=true; |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(text); |
| _builder.append(", new "); |
| _builder.append(itemClass); |
| _builder.append("(\""); |
| String _name = ((BlipEndEvent)blipItem).getName(); |
| _builder.append(_name); |
| _builder.append("\", \""); |
| String _id = ((BlipEndEvent)blipItem).getEvent().getId(); |
| _builder.append(_id); |
| _builder.append("\", "); |
| { |
| EndEventHandlingEnum _endHandling = ((BlipEndEvent)blipItem).getEndHandling(); |
| boolean _equals = Objects.equal(_endHandling, EndEventHandlingEnum.TERMINATES_PROCESS); |
| if (_equals) { |
| _builder.append("true"); |
| } else { |
| _builder.append("false"); |
| } |
| } |
| _builder.append(")"); |
| _builder.newLineIfNotEmpty(); |
| text = _builder.toString(); |
| } |
| } |
| } |
| } |
| return text; |
| } |
| |
| public CharSequence getOperativeDtosBody(final BlipItem blipItem) { |
| CharSequence _xblockexpression = null; |
| { |
| EObject _eContainer = blipItem.eContainer(); |
| Blip blip = ((Blip) _eContainer); |
| CharSequence _xifexpression = null; |
| QualifiedName _workloadDtoClass = this.getWorkloadDtoClass(blip); |
| boolean _equals = Objects.equal(_workloadDtoClass, null); |
| if (_equals) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("return null;"); |
| _xifexpression = _builder; |
| } else { |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append("List<IDto> result = new java.util.ArrayList<>();"); |
| _builder_1.newLine(); |
| _builder_1.append("if\t(item0 instanceof "); |
| QualifiedName _workloadDtoClass_1 = this.getWorkloadDtoClass(blip); |
| _builder_1.append(_workloadDtoClass_1); |
| _builder_1.append(") {"); |
| _builder_1.newLineIfNotEmpty(); |
| _builder_1.append("\t"); |
| _builder_1.append("for\t("); |
| QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(blipItem.getOperativeLDto()); |
| _builder_1.append(_fullyQualifiedName, "\t"); |
| _builder_1.append(" dto : getOperative"); |
| String _name = blipItem.getOperativeLDto().getName(); |
| _builder_1.append(_name, "\t"); |
| _builder_1.append("s(("); |
| QualifiedName _workloadDtoClass_2 = this.getWorkloadDtoClass(blip); |
| _builder_1.append(_workloadDtoClass_2, "\t"); |
| _builder_1.append(")item0)) {"); |
| _builder_1.newLineIfNotEmpty(); |
| _builder_1.append("\t\t"); |
| _builder_1.append("result.add(dto);"); |
| _builder_1.newLine(); |
| _builder_1.append("\t"); |
| _builder_1.append("}"); |
| _builder_1.newLine(); |
| _builder_1.append("}"); |
| _builder_1.newLine(); |
| _builder_1.append("return result;"); |
| _builder_1.newLine(); |
| _xifexpression = _builder_1; |
| } |
| _xblockexpression = _xifexpression; |
| } |
| return _xblockexpression; |
| } |
| |
| public String getOperativeCastedDtosMethod(final BlipItem blipItem) { |
| EObject _eContainer = blipItem.eContainer(); |
| Blip blip = ((Blip) _eContainer); |
| QualifiedName _workloadDtoClass = this.getWorkloadDtoClass(blip); |
| boolean _equals = Objects.equal(_workloadDtoClass, null); |
| if (_equals) { |
| return ""; |
| } else { |
| LDto workloadDto = blip.getWorkload().getSource().getDtoRef(); |
| LDto operativeLDto = blipItem.getOperativeLDto(); |
| String body = ""; |
| boolean _equals_1 = workloadDto.equals(operativeLDto); |
| if (_equals_1) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("List<"); |
| QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(blipItem.getOperativeLDto()); |
| _builder.append(_fullyQualifiedName); |
| _builder.append("> result = new java.util.ArrayList<>();"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("if\t(item0 != null) {"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("result.add(item0);"); |
| _builder.newLine(); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("return result;"); |
| _builder.newLine(); |
| body = _builder.toString(); |
| } else { |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| String _operativeDtoMethod = this.getOperativeDtoMethod("item0", blipItem); |
| _builder_1.append(_operativeDtoMethod); |
| body = _builder_1.toString(); |
| } |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append("public List<"); |
| QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(blipItem.getOperativeLDto()); |
| _builder_2.append(_fullyQualifiedName_1); |
| _builder_2.append("> getOperative"); |
| String _name = blipItem.getOperativeLDto().getName(); |
| _builder_2.append(_name); |
| _builder_2.append("s("); |
| QualifiedName _workloadDtoClass_1 = this.getWorkloadDtoClass(blip); |
| _builder_2.append(_workloadDtoClass_1); |
| _builder_2.append(" item0) {"); |
| _builder_2.newLineIfNotEmpty(); |
| _builder_2.append("\t"); |
| _builder_2.append(body, "\t"); |
| _builder_2.newLineIfNotEmpty(); |
| _builder_2.append("}"); |
| _builder_2.newLine(); |
| String text = _builder_2.toString(); |
| return text; |
| } |
| } |
| |
| private String getOperativeDtoMethod(final String rootDto, final BlipItem blipItem) { |
| boolean _isOperativeDtoDefined = BlipHelper.isOperativeDtoDefined(blipItem); |
| if (_isOperativeDtoDefined) { |
| LDto operativeDto = ((LDto) null); |
| EObject _eContainer = null; |
| if (blipItem!=null) { |
| _eContainer=blipItem.eContainer(); |
| } |
| BlipWorkload _workload = null; |
| if (((Blip) _eContainer)!=null) { |
| _workload=((Blip) _eContainer).getWorkload(); |
| } |
| BlipDto _source = null; |
| if (_workload!=null) { |
| _source=_workload.getSource(); |
| } |
| LDto _dtoRef = null; |
| if (_source!=null) { |
| _dtoRef=_source.getDtoRef(); |
| } |
| operativeDto = _dtoRef; |
| boolean _and = false; |
| if (!((!Objects.equal(operativeDto, null)) && (!Objects.equal(operativeDto.getName(), null)))) { |
| _and = false; |
| } else { |
| String _name = operativeDto.getName(); |
| BlipDtoPath _dtoPath = null; |
| if (blipItem!=null) { |
| _dtoPath=blipItem.getDtoPath(); |
| } |
| boolean _equals = _name.equals(_dtoPath); |
| boolean _not = (!_equals); |
| _and = _not; |
| } |
| if (_and) { |
| BlipDtoPath _dtoPath_1 = null; |
| if (blipItem!=null) { |
| _dtoPath_1=blipItem.getDtoPath(); |
| } |
| String _dtoPath_2 = _dtoPath_1.getDtoPath(); |
| String _name_1 = operativeDto.getName(); |
| String _plus = (_name_1 + "."); |
| final String[] dtoChildNames = _dtoPath_2.replace(_plus, "").split("\\."); |
| int actual = 1; |
| StringConcatenation _builder = new StringConcatenation(); |
| String method = _builder.toString(); |
| for (final String dtoChildName : dtoChildNames) { |
| { |
| final QualifiedName previousclass = this._iQualifiedNameProvider.getFullyQualifiedName(operativeDto); |
| final LDtoAbstractReference dtoFeature = BlipHelper.getDtoFeature(operativeDto, dtoChildName); |
| operativeDto = BlipHelper.getReferencedLDto(operativeDto, dtoChildName); |
| boolean multiple = false; |
| String getter = ""; |
| final QualifiedName actualclass = this._iQualifiedNameProvider.getFullyQualifiedName(operativeDto); |
| final int previous = (actual - 1); |
| if ((dtoFeature instanceof LDtoInheritedReference)) { |
| LMultiplicity _multiplicity = ((LDtoInheritedReference)dtoFeature).getInheritedFeature().getMultiplicity(); |
| boolean _notEquals = (!Objects.equal(_multiplicity, null)); |
| multiple = _notEquals; |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append("get"); |
| String _capitalize = StringUtils.capitalize(((LDtoInheritedReference)dtoFeature).getInheritedFeature().getName()); |
| _builder_1.append(_capitalize); |
| _builder_1.append("()"); |
| getter = _builder_1.toString(); |
| } else { |
| if ((dtoFeature instanceof LDtoReference)) { |
| LMultiplicity _multiplicity_1 = ((LDtoReference)dtoFeature).getMultiplicity(); |
| boolean _notEquals_1 = (!Objects.equal(_multiplicity_1, null)); |
| multiple = _notEquals_1; |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append("get"); |
| String _capitalize_1 = StringUtils.capitalize(((LDtoReference)dtoFeature).getName()); |
| _builder_2.append(_capitalize_1); |
| _builder_2.append("()"); |
| getter = _builder_2.toString(); |
| } |
| } |
| StringConcatenation _builder_3 = new StringConcatenation(); |
| _builder_3.append(method); |
| _builder_3.newLineIfNotEmpty(); |
| _builder_3.append("List<"); |
| _builder_3.append(actualclass); |
| _builder_3.append("> result"); |
| _builder_3.append(actual); |
| _builder_3.append(" = new java.util.ArrayList<>();"); |
| _builder_3.newLineIfNotEmpty(); |
| method = _builder_3.toString(); |
| if ((actual > 1)) { |
| StringConcatenation _builder_4 = new StringConcatenation(); |
| _builder_4.append(method); |
| _builder_4.newLineIfNotEmpty(); |
| _builder_4.append("for ("); |
| _builder_4.append(previousclass); |
| _builder_4.append(" item"); |
| _builder_4.append(previous); |
| _builder_4.append(" : result"); |
| _builder_4.append(previous); |
| _builder_4.append(") {"); |
| _builder_4.newLineIfNotEmpty(); |
| method = _builder_4.toString(); |
| } |
| if (multiple) { |
| StringConcatenation _builder_5 = new StringConcatenation(); |
| _builder_5.append(method); |
| _builder_5.newLineIfNotEmpty(); |
| _builder_5.append("result"); |
| _builder_5.append(actual); |
| _builder_5.append(".addAll(item"); |
| _builder_5.append(previous); |
| _builder_5.append("."); |
| _builder_5.append(getter); |
| _builder_5.append(");"); |
| _builder_5.newLineIfNotEmpty(); |
| method = _builder_5.toString(); |
| } else { |
| StringConcatenation _builder_6 = new StringConcatenation(); |
| _builder_6.append(method); |
| _builder_6.newLineIfNotEmpty(); |
| _builder_6.append(actualclass); |
| _builder_6.append(" item = item"); |
| _builder_6.append(previous); |
| _builder_6.append("."); |
| _builder_6.append(getter); |
| _builder_6.append(";"); |
| _builder_6.newLineIfNotEmpty(); |
| _builder_6.append("if\t(item != null) {"); |
| _builder_6.newLine(); |
| _builder_6.append("\t"); |
| _builder_6.append("result"); |
| _builder_6.append(actual, "\t"); |
| _builder_6.append(".add(item);"); |
| _builder_6.newLineIfNotEmpty(); |
| _builder_6.append("}"); |
| _builder_6.newLine(); |
| method = _builder_6.toString(); |
| } |
| if ((actual > 1)) { |
| StringConcatenation _builder_7 = new StringConcatenation(); |
| _builder_7.append(method); |
| _builder_7.newLineIfNotEmpty(); |
| _builder_7.append("}"); |
| _builder_7.newLine(); |
| method = _builder_7.toString(); |
| } |
| actual = (actual + 1); |
| } |
| } |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append(method); |
| _builder_1.newLineIfNotEmpty(); |
| _builder_1.append("return result"); |
| _builder_1.append((actual - 1)); |
| _builder_1.append(";"); |
| _builder_1.newLineIfNotEmpty(); |
| return _builder_1.toString(); |
| } |
| } |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append("return "); |
| _builder_2.append(rootDto); |
| _builder_2.append(";"); |
| return _builder_2.toString(); |
| } |
| |
| /** |
| * <p>create an injectable context function to be used by an e4 application.</p> |
| */ |
| public void toContextOperations(final JvmGenericType type, final BlipPackage pkg, final String clsName) { |
| JvmOperation operation = null; |
| 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(pkg, "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(pkg, "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("AbstractBlipBPMFunctionProvider provider = ContextInjectionFactory.make("); |
| _builder.append(clsName); |
| _builder.append(".class, appCtx);"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("appCtx.set(AbstractBlipBPMFunctionProvider.class, provider);"); |
| _builder.newLine(); |
| _builder.append("return provider;"); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_1); |
| }; |
| JvmOperation _method = this._jvmTypesBuilder.toMethod(pkg, "compute", this._typeReferenceBuilder.typeRef(Object.class), _function); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method); |
| } |
| |
| public static String getResourceName(final Blip blip) { |
| org.eclipse.bpmn2.Process _process = blip.getProcess(); |
| boolean _notEquals = (!Objects.equal(_process, null)); |
| if (_notEquals) { |
| org.eclipse.bpmn2.Process _process_1 = blip.getProcess(); |
| EObject parent = ((EObject) _process_1); |
| while (((!Objects.equal(parent, null)) && (!(parent instanceof DocumentRoot)))) { |
| parent = parent.eContainer(); |
| } |
| boolean _matched = false; |
| if (parent instanceof DocumentRoot) { |
| _matched=true; |
| URI uri = ((DocumentRoot)parent).eResource().getURI(); |
| int _segmentCount = uri.segmentCount(); |
| int _minus = (_segmentCount - 2); |
| String _segment = uri.segment(_minus); |
| String _plus = (_segment + "/"); |
| int _segmentCount_1 = uri.segmentCount(); |
| int _minus_1 = (_segmentCount_1 - 1); |
| String _segment_1 = uri.segment(_minus_1); |
| String relPath = (_plus + _segment_1); |
| return relPath.replace("%20", " "); |
| } |
| } |
| return "<no-process-found>"; |
| } |
| |
| public void toOperations(final JvmDeclaredType type, final BlipPackage blipPkg) { |
| 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); |
| final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _initializeStartInfos = this.initializeStartInfos(blipPkg); |
| _builder.append(_initializeStartInfos); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_1); |
| }; |
| JvmOperation _method = this._jvmTypesBuilder.toMethod(blipPkg, "initializeStartInfos", this._typeReferenceBuilder.typeRef(HashMap.class, this._typeReferenceBuilder.typeRef(String.class), this._typeReferenceBuilder.typeRef(IBlipBPMStartInfo.class)), _function); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method); |
| EList<JvmMember> _members_1 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> { |
| EList<JvmAnnotationReference> _annotations = it.getAnnotations(); |
| JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef); |
| final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _initializeBpmEngine = this.initializeBpmEngine(blipPkg); |
| _builder.append(_initializeBpmEngine); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_2); |
| }; |
| JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(blipPkg, "initializeBpmEngine", this._typeReferenceBuilder.typeRef(boolean.class), _function_1); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1); |
| } |
| |
| public String initializeStartInfos(final BlipPackage blipPkg) { |
| String body = ""; |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(body); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("return new HashMap<String,"); |
| String _simpleName = IBlipBPMStartInfo.class.getSimpleName(); |
| _builder.append(_simpleName); |
| _builder.append(">() "); |
| String _createBPMNCalls = this.createBPMNCalls(blipPkg); |
| _builder.append(_createBPMNCalls); |
| _builder.append(";"); |
| _builder.newLineIfNotEmpty(); |
| body = _builder.toString(); |
| return body; |
| } |
| |
| public String initializeBpmEngine(final BlipPackage blipPkg) { |
| String body = ""; |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(body); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("boolean hasErrors = false;"); |
| _builder.newLine(); |
| _builder.append("if(bpmEngine != null) {"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("IBlipProcessPermissions blipProcessPermissions = null;"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("bpmEngine.clearErrors();"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("if\t(organizationService != null) {"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("blipProcessPermissions = organizationService.getBlipProcessPermissions();"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("for (final String name : startInfos.keySet()) {"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("String resourceBundlePath = \"platform:/plugin/\"+FrameworkUtil.getBundle("); |
| String _className = this.className(blipPkg); |
| _builder.append(_className, "\t\t"); |
| _builder.append(".class).getSymbolicName()+\"/\"+startInfos.get(name).getResourceName(); "); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t"); |
| _builder.append("boolean success = bpmEngine.registerProcess(startInfos.get(name), resourceBundlePath, "); |
| String _className_1 = this.className(blipPkg); |
| _builder.append(_className_1, "\t\t"); |
| _builder.append(".class, blipProcessPermissions);"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t"); |
| _builder.append("if(!success) {"); |
| _builder.newLine(); |
| _builder.append("\t\t\t"); |
| _builder.append("hasErrors = true;"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append(" \t"); |
| _builder.append("if (hasErrors) {"); |
| _builder.newLine(); |
| _builder.append(" \t\t"); |
| _builder.append("log.error(bpmEngine.getErrors());"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("return hasErrors;"); |
| _builder.newLine(); |
| body = _builder.toString(); |
| return body; |
| } |
| |
| public void infer(final EObject blipPkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) { |
| if (blipPkg instanceof BlipPackage) { |
| _infer((BlipPackage)blipPkg, acceptor, isPreIndexingPhase); |
| return; |
| } else if (blipPkg != null) { |
| _infer(blipPkg, acceptor, isPreIndexingPhase); |
| return; |
| } else { |
| throw new IllegalArgumentException("Unhandled parameter types: " + |
| Arrays.<Object>asList(blipPkg, acceptor, isPreIndexingPhase).toString()); |
| } |
| } |
| } |