| /** |
| * Copyright (c) 2011, 2018 - 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 |
| * |
| * generated by Xtext 2.11.0 |
| */ |
| package org.eclipse.osbp.xtext.signal.jvmmodel; |
| |
| import com.google.common.base.Objects; |
| import java.io.IOException; |
| import java.nio.file.Path; |
| import java.util.Arrays; |
| import java.util.HashSet; |
| import java.util.concurrent.ExecutorService; |
| import javax.inject.Inject; |
| 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.datainterchange.api.IDataInterchange; |
| import org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension; |
| import org.eclipse.osbp.ui.api.customfields.IBlobService; |
| import org.eclipse.osbp.ui.api.useraccess.IUserAccessService; |
| import org.eclipse.osbp.xtext.datainterchange.DataInterchange; |
| import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFile; |
| import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileCSV; |
| import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileEDI; |
| import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileXML; |
| import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable; |
| import org.eclipse.osbp.xtext.signal.DataTransfer; |
| import org.eclipse.osbp.xtext.signal.ListTransfer; |
| import org.eclipse.osbp.xtext.signal.SignalActionEnum; |
| import org.eclipse.osbp.xtext.signal.SignalDSLPackage; |
| import org.eclipse.osbp.xtext.signal.SignalDatainterchange; |
| import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum; |
| import org.eclipse.osbp.xtext.signal.SignalHandler; |
| import org.eclipse.osbp.xtext.signal.SignalPackage; |
| import org.eclipse.osbp.xtext.signal.SignalWatcher; |
| import org.eclipse.osbp.xtext.signal.SingleTransfer; |
| import org.eclipse.osbp.xtext.signal.common.OSBPSignalWatcher; |
| import org.eclipse.osbp.xtext.signal.jvmmodel.SignalModelGenerator; |
| 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.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.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.Activate; |
| import org.osgi.service.component.annotations.Component; |
| import org.osgi.service.component.annotations.Deactivate; |
| 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; |
| |
| /** |
| * <p>Infers a JVM model from the source model.</p> |
| * |
| * <p>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.</p> |
| */ |
| @SuppressWarnings("all") |
| public class SignalDSLJvmModelInferrer extends AbstractModelInferrer { |
| /** |
| * convenience API to build and initialize JVM types and their members. |
| */ |
| @Inject |
| @Extension |
| private JvmTypesBuilder _jvmTypesBuilder; |
| |
| @Inject |
| @Extension |
| private IQualifiedNameProvider _iQualifiedNameProvider; |
| |
| @Inject |
| @Extension |
| private SignalModelGenerator sg; |
| |
| @Inject |
| @Extension |
| private AnnotationExtension _annotationExtension; |
| |
| public static String pckgName = null; |
| |
| private HashSet<String> operationlist; |
| |
| /** |
| * infer model on package base. Will be called for every defined package. |
| * |
| * @param dataInterchangePackage |
| * An instance of {@link SignalDSLPackage} |
| * @param acceptor |
| * the xtext acceptor interface |
| * @param isPreIndexingPhase |
| * true if in preindexing phase |
| */ |
| protected void _infer(final SignalPackage signalPackage, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) { |
| SignalDSLJvmModelInferrer.pckgName = signalPackage.getName(); |
| JvmGenericType cls = this._jvmTypesBuilder.toClass(signalPackage, SignalDSLJvmModelInferrer.pckgName); |
| cls.setSimpleName(StringExtensions.toFirstUpper(cls.getSimpleName())); |
| EList<SignalWatcher> _watchers = signalPackage.getWatchers(); |
| for (final SignalWatcher watcher : _watchers) { |
| { |
| JvmGenericType watcherClass = this._jvmTypesBuilder.toClass(watcher, this._iQualifiedNameProvider.getFullyQualifiedName(watcher)); |
| watcherClass.setSimpleName(StringExtensions.toFirstUpper(watcher.getName())); |
| watcherClass.setPackageName(SignalDSLJvmModelInferrer.pckgName); |
| final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> { |
| EList<JvmTypeReference> _superTypes = it.getSuperTypes(); |
| JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(OSBPSignalWatcher.class); |
| this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef); |
| JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Component.class); |
| this._annotationExtension.addAnnAttr(annotationRef, signalPackage, "immediate", Boolean.TRUE); |
| EList<JvmAnnotationReference> _annotations = it.getAnnotations(); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef); |
| this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(signalPackage)); |
| this.toWatcherFields(it, watcher); |
| this.toWatcherConstructor(it, watcher); |
| this.toWatcherOperations(it, watcher); |
| this.toBinderOperations(it, watcher); |
| }; |
| acceptor.<JvmGenericType>accept(watcherClass, _function); |
| } |
| } |
| } |
| |
| public void toBinderOperations(final JvmGenericType type, final SignalWatcher watcher) { |
| EList<JvmMember> _members = type.getMembers(); |
| final Procedure1<JvmOperation> _function = (JvmOperation it) -> { |
| JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class); |
| this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY); |
| this._annotationExtension.addAnnAttr(annotationRef, watcher, "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(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("this.dataInterchange = dataInterchange;"); |
| _builder.newLine(); |
| _builder.append("log.debug(\"Signal DataInterchange bound\");"); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_1); |
| }; |
| JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, "bindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _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.setSynchronized(true); |
| EList<JvmFormalParameter> _parameters = it.getParameters(); |
| JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("this.dataInterchange = null;"); |
| _builder.newLine(); |
| _builder.append("log.debug(\"Signal DataInterchange unbound\");"); |
| _builder.newLine(); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_2); |
| }; |
| JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, "unbindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1); |
| EList<JvmMember> _members_2 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> { |
| JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class); |
| this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY); |
| this._annotationExtension.addAnnAttr(annotationRef, watcher, "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(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("this.blobService = blobService;"); |
| _builder.newLine(); |
| _builder.append("log.debug(\"Signal BlobService bound\");"); |
| _builder.newLine(); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_3); |
| }; |
| JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(watcher, "bindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _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.setSynchronized(true); |
| EList<JvmFormalParameter> _parameters = it.getParameters(); |
| JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("this.blobService = null;"); |
| _builder.newLine(); |
| _builder.append("log.debug(\"Signal BlobService unbound\");"); |
| _builder.newLine(); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_4); |
| }; |
| JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(watcher, "unbindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_3); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3); |
| EList<JvmMember> _members_4 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> { |
| JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class); |
| this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY); |
| this._annotationExtension.addAnnAttr(annotationRef, watcher, "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(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("this.persistenceService = persistenceService;"); |
| _builder.newLine(); |
| _builder.append("log.debug(\"Signal PersistenceService bound\");"); |
| _builder.newLine(); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_5); |
| }; |
| JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(watcher, "bindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_4); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4); |
| EList<JvmMember> _members_5 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> { |
| it.setVisibility(JvmVisibility.PUBLIC); |
| it.setSynchronized(true); |
| EList<JvmFormalParameter> _parameters = it.getParameters(); |
| JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "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.persistenceService = null;"); |
| _builder.newLine(); |
| _builder.append("log.debug(\"Signal PersistenceService unbound\");"); |
| _builder.newLine(); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_6); |
| }; |
| JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(watcher, "unbindPersistenceMethod", 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) -> { |
| JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class); |
| this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY); |
| this._annotationExtension.addAnnAttr(annotationRef, watcher, "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(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("this.userAccessService = userAccessService;"); |
| _builder.newLine(); |
| _builder.append("log.debug(\"Signal UserAccessService bound\");"); |
| _builder.newLine(); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_7); |
| }; |
| JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(watcher, "bindUserAccessMethod", 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) -> { |
| it.setVisibility(JvmVisibility.PUBLIC); |
| it.setSynchronized(true); |
| EList<JvmFormalParameter> _parameters = it.getParameters(); |
| JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("this.userAccessService = null;"); |
| _builder.newLine(); |
| _builder.append("log.debug(\"Signal UserAccessService unbound\");"); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_8); |
| }; |
| JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(watcher, "unbindUserAccessMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7); |
| } |
| |
| public String getFileURL(final DataInterchange dataInterchange) { |
| DataInterchangeFile _fileEndpoint = dataInterchange.getFileEndpoint(); |
| boolean _matched = false; |
| if (_fileEndpoint instanceof DataInterchangeFileXML) { |
| _matched=true; |
| DataInterchangeFile _fileEndpoint_1 = dataInterchange.getFileEndpoint(); |
| return ((DataInterchangeFileXML) _fileEndpoint_1).getFileURL(); |
| } |
| if (!_matched) { |
| if (_fileEndpoint instanceof DataInterchangeFileCSV) { |
| _matched=true; |
| DataInterchangeFile _fileEndpoint_1 = dataInterchange.getFileEndpoint(); |
| return ((DataInterchangeFileCSV) _fileEndpoint_1).getFileURL(); |
| } |
| } |
| if (!_matched) { |
| if (_fileEndpoint instanceof DataInterchangeFileEDI) { |
| _matched=true; |
| DataInterchangeFile _fileEndpoint_1 = dataInterchange.getFileEndpoint(); |
| return ((DataInterchangeFileEDI) _fileEndpoint_1).getFileURL(); |
| } |
| } |
| return ""; |
| } |
| |
| public String getDefaultVariableName(final DataInterchange dataInterchange) { |
| return StringExtensions.toFirstLower(dataInterchange.getName()); |
| } |
| |
| public String getBasicRunConfiguration(final DataInterchange dataInterchange, final boolean fqClass, final String fileURL, final WorkerThreadRunnable.Direction direction, final boolean asynch) { |
| String className = ""; |
| if (fqClass) { |
| className = this._iQualifiedNameProvider.getFullyQualifiedName(dataInterchange).toString(); |
| } else { |
| className = dataInterchange.getName(); |
| } |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append(className); |
| _builder.append(" "); |
| String _defaultVariableName = this.getDefaultVariableName(dataInterchange); |
| _builder.append(_defaultVariableName); |
| _builder.append(" = new "); |
| _builder.append(className); |
| _builder.append("();"); |
| _builder.newLineIfNotEmpty(); |
| String _defaultVariableName_1 = this.getDefaultVariableName(dataInterchange); |
| _builder.append(_defaultVariableName_1); |
| _builder.append(".setFileURL(\""); |
| _builder.append(fileURL); |
| _builder.append("\");"); |
| _builder.newLineIfNotEmpty(); |
| String _defaultVariableName_2 = this.getDefaultVariableName(dataInterchange); |
| _builder.append(_defaultVariableName_2); |
| _builder.append(".setPersistenceService(persistenceService);"); |
| _builder.newLineIfNotEmpty(); |
| String _defaultVariableName_3 = this.getDefaultVariableName(dataInterchange); |
| _builder.append(_defaultVariableName_3); |
| _builder.append(".setDataInterchange(dataInterchange);"); |
| _builder.newLineIfNotEmpty(); |
| String _defaultVariableName_4 = this.getDefaultVariableName(dataInterchange); |
| _builder.append(_defaultVariableName_4); |
| _builder.append(".setBlobService(blobService);"); |
| _builder.newLineIfNotEmpty(); |
| String _defaultVariableName_5 = this.getDefaultVariableName(dataInterchange); |
| _builder.append(_defaultVariableName_5); |
| _builder.append(".setDirection(WorkerThreadRunnable.Direction."); |
| String _upperCase = direction.name().toUpperCase(); |
| _builder.append(_upperCase); |
| _builder.append(");"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("return "); |
| String _defaultVariableName_6 = this.getDefaultVariableName(dataInterchange); |
| _builder.append(_defaultVariableName_6); |
| _builder.append(";"); |
| return _builder.toString(); |
| } |
| |
| public void toWatcherOperations(final JvmGenericType type, final SignalWatcher watcher) { |
| 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); |
| EList<JvmFormalParameter> _parameters = it.getParameters(); |
| JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "event", this._typeReferenceBuilder.typeRef("WatchEvent<Path>")); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| EList<JvmFormalParameter> _parameters_1 = it.getParameters(); |
| JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(watcher, "file", this._typeReferenceBuilder.typeRef(Path.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1); |
| final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _handleEvent = this.handleEvent(watcher); |
| _builder.append(_handleEvent); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_1); |
| }; |
| JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, "handleEvent", this._typeReferenceBuilder.typeRef(Void.TYPE), _function); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method); |
| EList<JvmMember> _members_1 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> { |
| EList<JvmFormalParameter> _parameters = it.getParameters(); |
| JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "interchanges", this._typeReferenceBuilder.typeRef("ArrayList<WorkerThreadRunnable>")); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter); |
| EList<JvmFormalParameter> _parameters_1 = it.getParameters(); |
| JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(watcher, "synchronous", this._typeReferenceBuilder.typeRef(boolean.class)); |
| this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1); |
| final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _executeTasks = this.executeTasks(watcher); |
| _builder.append(_executeTasks); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_2); |
| }; |
| JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, "executeTasks", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1); |
| HashSet<String> _hashSet = new HashSet<String>(); |
| this.operationlist = _hashSet; |
| if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) { |
| EList<SignalHandler> _handlers = watcher.getHandlers(); |
| for (final SignalHandler handler : _handlers) { |
| DataTransfer _data = handler.getData(); |
| if ((_data instanceof SingleTransfer)) { |
| DataTransfer _data_1 = handler.getData(); |
| final SingleTransfer transferdata = ((SingleTransfer) _data_1); |
| this.createAppropriateInterchangeOperations(type, watcher, transferdata.getInterchange()); |
| } else { |
| DataTransfer _data_2 = handler.getData(); |
| final ListTransfer transferdata_1 = ((ListTransfer) _data_2); |
| EList<SignalDatainterchange> _interchanges = transferdata_1.getInterchanges(); |
| for (final SignalDatainterchange interchange : _interchanges) { |
| this.createAppropriateInterchangeOperations(type, watcher, interchange); |
| } |
| } |
| } |
| } |
| EList<JvmMember> _members_2 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> { |
| final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _initTasksLists = this.initTasksLists(watcher); |
| _builder.append(_initTasksLists); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_3); |
| }; |
| JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(watcher, "initTasksLists", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2); |
| EList<JvmMember> _members_3 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> { |
| final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("active = false;"); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_4); |
| }; |
| JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(watcher, "stopThread", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_3); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3); |
| EList<JvmMember> _members_4 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> { |
| EList<JvmAnnotationReference> _annotations = it.getAnnotations(); |
| JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Activate.class); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef); |
| final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _activate = this.getActivate(watcher); |
| _builder.append(_activate); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_5); |
| }; |
| JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(watcher, "activate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_4); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4); |
| EList<JvmMember> _members_5 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> { |
| EList<JvmAnnotationReference> _annotations = it.getAnnotations(); |
| JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Deactivate.class); |
| this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef); |
| final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _deactivate = this.getDeactivate(watcher); |
| _builder.append(_deactivate); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_6); |
| }; |
| JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(watcher, "deactivate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5); |
| } |
| |
| public String executeTasks(final SignalWatcher watcher) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("for (WorkerThreadRunnable interchange : interchanges) {"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("if(synchronous){"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("//Making sure that the current task is done before continuing "); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("try {"); |
| _builder.newLine(); |
| _builder.append("\t\t\t"); |
| _builder.append("log.debug(\"Watcher: Start \"+interchange.getDirection()+\" for interchange \"+interchange.getName()+\"!\");"); |
| _builder.newLine(); |
| _builder.append("\t\t\t"); |
| _builder.append("executorService.submit(interchange).get();"); |
| _builder.newLine(); |
| _builder.append("\t\t\t"); |
| _builder.append("log.debug(\"Watcher: \"+interchange.getDirection()+\" for \"+ interchange.getName() + \" successfully ended!\");"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("} catch (Exception e) {"); |
| _builder.newLine(); |
| _builder.append("\t\t\t"); |
| _builder.append("log.debug(\"Watcher: \"+interchange.getDirection()+\" for \"+ interchange.getName() + \" interupted ended!\\n\"+e.getMessage());"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("else{"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("// Just executre the task and move onto the next one"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("executorService.execute(interchange);"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("}"); |
| return _builder.toString(); |
| } |
| |
| public String handleEvent(final SignalWatcher watcher) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("// get what to do based on the filename"); |
| _builder.newLine(); |
| _builder.append("String filemask = isFileMaskValid(file.getFileName().toString(), event.kind());"); |
| _builder.newLine(); |
| _builder.append("if(filemask != null){"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("switch (filemask) {"); |
| _builder.newLine(); |
| String result = _builder.toString(); |
| EList<SignalHandler> _handlers = watcher.getHandlers(); |
| for (final SignalHandler handler : _handlers) { |
| DataTransfer _data = handler.getData(); |
| if ((_data instanceof SingleTransfer)) { |
| DataTransfer _data_1 = handler.getData(); |
| SingleTransfer handlerdata = ((SingleTransfer) _data_1); |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append("case \""); |
| String _name = handler.getName(); |
| String _plus = (_name + "|"); |
| String _filemask = handler.getFilemask(); |
| String _plus_1 = (_plus + _filemask); |
| _builder_1.append(_plus_1); |
| _builder_1.append("\":"); |
| _builder_1.newLineIfNotEmpty(); |
| _builder_1.append("\t"); |
| _builder_1.append("executorService.execute("); |
| String _appropriateInterchangeOperationName = this.getAppropriateInterchangeOperationName(handlerdata.getInterchange()); |
| _builder_1.append(_appropriateInterchangeOperationName, "\t"); |
| _builder_1.append("()); break;"); |
| _builder_1.newLineIfNotEmpty(); |
| result = result.concat(_builder_1.toString()); |
| } else { |
| DataTransfer _data_2 = handler.getData(); |
| ListTransfer handlerdata_1 = ((ListTransfer) _data_2); |
| SignalExecutionTypeEnum _elvis = null; |
| SignalExecutionTypeEnum _executiontype = handlerdata_1.getExecutiontype(); |
| if (_executiontype != null) { |
| _elvis = _executiontype; |
| } else { |
| _elvis = SignalExecutionTypeEnum.SYNC; |
| } |
| boolean is_synch = _elvis.equals(SignalExecutionTypeEnum.SYNC); |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append("case \""); |
| String _name_1 = handler.getName(); |
| String _plus_2 = (_name_1 + "|"); |
| String _filemask_1 = handler.getFilemask(); |
| String _plus_3 = (_plus_2 + _filemask_1); |
| _builder_2.append(_plus_3); |
| _builder_2.append("\":"); |
| _builder_2.newLineIfNotEmpty(); |
| _builder_2.append("executeTasks(listOfTasks.get(\""); |
| String _name_2 = handler.getName(); |
| String _plus_4 = (_name_2 + "|"); |
| String _filemask_2 = handler.getFilemask(); |
| String _plus_5 = (_plus_4 + _filemask_2); |
| _builder_2.append(_plus_5); |
| _builder_2.append("\"), "); |
| _builder_2.append(is_synch); |
| _builder_2.append("); break;"); |
| _builder_2.newLineIfNotEmpty(); |
| result = result.concat(_builder_2.toString()); |
| } |
| } |
| StringConcatenation _builder_3 = new StringConcatenation(); |
| _builder_3.append("\t\t"); |
| _builder_3.append("default: break;"); |
| _builder_3.newLine(); |
| _builder_3.append("\t"); |
| _builder_3.append("}"); |
| _builder_3.newLine(); |
| _builder_3.append("}"); |
| _builder_3.newLine(); |
| _builder_3.append("\t \t"); |
| _builder_3.append("else{"); |
| _builder_3.newLine(); |
| _builder_3.append("\t \t"); |
| _builder_3.append("log.debug(\"No action executed for file [\"+file+\"] on event [\"+event.kind().name()+\"].\");"); |
| _builder_3.newLine(); |
| _builder_3.append("\t "); |
| _builder_3.append("}"); |
| result = result.concat(_builder_3.toString()); |
| return result; |
| } |
| |
| public void toWatcherConstructor(final JvmGenericType type, final SignalWatcher watcher) { |
| EList<JvmMember> _members = type.getMembers(); |
| final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> { |
| EList<JvmTypeReference> _exceptions = it.getExceptions(); |
| JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(IOException.class); |
| this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef); |
| final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("super();"); |
| _builder.newLine(); |
| _builder.append("executorService = Executors.newFixedThreadPool(10);"); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_1); |
| }; |
| JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(watcher, _function); |
| this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor); |
| } |
| |
| public String initTasksLists(final SignalWatcher watcher) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("ArrayList<WorkerThreadRunnable> data = null;"); |
| _builder.newLine(); |
| _builder.append("listOfTasks = new HashMap<>();"); |
| _builder.newLine(); |
| String result = _builder.toString(); |
| EList<SignalHandler> _handlers = watcher.getHandlers(); |
| for (final SignalHandler handler : _handlers) { |
| { |
| DataTransfer _data = handler.getData(); |
| if ((_data instanceof ListTransfer)) { |
| DataTransfer _data_1 = handler.getData(); |
| ListTransfer handlerdata = ((ListTransfer) _data_1); |
| StringConcatenation _builder_1 = new StringConcatenation(); |
| _builder_1.append("data = new ArrayList<WorkerThreadRunnable>();"); |
| _builder_1.newLine(); |
| result = result.concat(_builder_1.toString()); |
| EList<SignalDatainterchange> _interchanges = handlerdata.getInterchanges(); |
| for (final SignalDatainterchange interchange : _interchanges) { |
| StringConcatenation _builder_2 = new StringConcatenation(); |
| _builder_2.append("data.add("); |
| String _appropriateInterchangeOperationName = this.getAppropriateInterchangeOperationName(interchange); |
| _builder_2.append(_appropriateInterchangeOperationName); |
| _builder_2.append("());"); |
| _builder_2.newLineIfNotEmpty(); |
| result = result.concat(_builder_2.toString()); |
| } |
| StringConcatenation _builder_3 = new StringConcatenation(); |
| _builder_3.append("listOfTasks.put(\""); |
| String _name = handler.getName(); |
| String _plus = (_name + "|"); |
| String _filemask = handler.getFilemask(); |
| String _plus_1 = (_plus + _filemask); |
| _builder_3.append(_plus_1); |
| _builder_3.append("\", data);"); |
| _builder_3.newLineIfNotEmpty(); |
| result = result.concat(_builder_3.toString()); |
| } |
| StringConcatenation _builder_4 = new StringConcatenation(); |
| _builder_4.append("addFilemaskAndAction(\""); |
| String _name_1 = handler.getName(); |
| String _plus_2 = (_name_1 + "|"); |
| String _filemask_1 = handler.getFilemask(); |
| String _plus_3 = (_plus_2 + _filemask_1); |
| _builder_4.append(_plus_3); |
| _builder_4.append("\", SignalHandlerTypeEnum."); |
| String _upperCase = handler.getActionType().getLiteral().toUpperCase(); |
| _builder_4.append(_upperCase); |
| _builder_4.append(");"); |
| _builder_4.newLineIfNotEmpty(); |
| result = result.concat(_builder_4.toString()); |
| } |
| } |
| return result; |
| } |
| |
| public String getAppropriateInterchangeOperationName(final SignalDatainterchange interchange) { |
| String operation_name = ""; |
| if ((Objects.equal(interchange.getDataAction(), SignalActionEnum.DATAIMPORT) && (interchange.getDataRef() != null))) { |
| String _firstUpper = StringExtensions.toFirstUpper(interchange.getDataRef().getName()); |
| String _plus = ("import" + _firstUpper); |
| operation_name = _plus; |
| } else { |
| DataInterchange _dataRef = interchange.getDataRef(); |
| boolean _tripleNotEquals = (_dataRef != null); |
| if (_tripleNotEquals) { |
| String _firstUpper_1 = StringExtensions.toFirstUpper(interchange.getDataRef().getName()); |
| String _plus_1 = ("export" + _firstUpper_1); |
| operation_name = _plus_1; |
| } |
| } |
| return operation_name; |
| } |
| |
| public boolean createAppropriateInterchangeOperations(final JvmGenericType type, final SignalWatcher watcher, final SignalDatainterchange interchange) { |
| boolean _xblockexpression = false; |
| { |
| String operationname = this.getAppropriateInterchangeOperationName(interchange); |
| boolean _xifexpression = false; |
| boolean _contains = this.operationlist.contains(operationname); |
| boolean _not = (!_contains); |
| if (_not) { |
| boolean _xblockexpression_1 = false; |
| { |
| SignalActionEnum _dataAction = interchange.getDataAction(); |
| boolean _equals = Objects.equal(_dataAction, SignalActionEnum.DATAIMPORT); |
| if (_equals) { |
| EList<JvmMember> _members = type.getMembers(); |
| final Procedure1<JvmOperation> _function = (JvmOperation it) -> { |
| final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _basicRunConfiguration = this.getBasicRunConfiguration(interchange.getDataRef(), true, this.getFileURL(interchange.getDataRef()), WorkerThreadRunnable.Direction.IMPORT, false); |
| _builder.append(_basicRunConfiguration); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_1); |
| }; |
| JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, operationname, this._typeReferenceBuilder.typeRef("WorkerThreadRunnable"), _function); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method); |
| } else { |
| EList<JvmMember> _members_1 = type.getMembers(); |
| final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> { |
| final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| String _basicRunConfiguration = this.getBasicRunConfiguration(interchange.getDataRef(), true, this.getFileURL(interchange.getDataRef()), WorkerThreadRunnable.Direction.EXPORT, false); |
| _builder.append(_basicRunConfiguration); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setBody(it, _function_2); |
| }; |
| JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, operationname, this._typeReferenceBuilder.typeRef("WorkerThreadRunnable"), _function_1); |
| this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1); |
| } |
| _xblockexpression_1 = this.operationlist.add(operationname); |
| } |
| _xifexpression = _xblockexpression_1; |
| } |
| _xblockexpression = _xifexpression; |
| } |
| return _xblockexpression; |
| } |
| |
| public void toWatcherFields(final JvmGenericType type, final SignalWatcher watcher) { |
| JvmField field = null; |
| final Procedure1<JvmField> _function = (JvmField it) -> { |
| it.setVisibility(JvmVisibility.PRIVATE); |
| final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("LoggerFactory.getLogger(\"watcher\")"); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setInitializer(it, _function_1); |
| }; |
| field = this._jvmTypesBuilder.toField(watcher, "log", this._typeReferenceBuilder.typeRef(Logger.class), _function); |
| EList<JvmMember> _members = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members, field); |
| final Procedure1<JvmField> _function_1 = (JvmField it) -> { |
| it.setVisibility(JvmVisibility.PRIVATE); |
| }; |
| field = this._jvmTypesBuilder.toField(watcher, "thread", this._typeReferenceBuilder.typeRef(Thread.class), _function_1); |
| EList<JvmMember> _members_1 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field); |
| final Procedure1<JvmField> _function_2 = (JvmField it) -> { |
| final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("true"); |
| it_1.append(_builder); |
| }; |
| this._jvmTypesBuilder.setInitializer(it, _function_3); |
| it.setVisibility(JvmVisibility.PRIVATE); |
| }; |
| field = this._jvmTypesBuilder.toField(watcher, "active", this._typeReferenceBuilder.typeRef(boolean.class), _function_2); |
| EList<JvmMember> _members_2 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field); |
| final Procedure1<JvmField> _function_3 = (JvmField it) -> { |
| it.setVisibility(JvmVisibility.PRIVATE); |
| it.setStatic(true); |
| }; |
| field = this._jvmTypesBuilder.toField(watcher, "executorService", this._typeReferenceBuilder.typeRef(ExecutorService.class), _function_3); |
| EList<JvmMember> _members_3 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field); |
| final Procedure1<JvmField> _function_4 = (JvmField it) -> { |
| it.setVisibility(JvmVisibility.PRIVATE); |
| }; |
| field = this._jvmTypesBuilder.toField(watcher, "listOfTasks", |
| this._typeReferenceBuilder.typeRef("Map<String, ArrayList<WorkerThreadRunnable>>"), _function_4); |
| EList<JvmMember> _members_4 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field); |
| field = this._jvmTypesBuilder.toField(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class)); |
| field.setStatic(true); |
| field.setVisibility(JvmVisibility.PRIVATE); |
| EList<JvmMember> _members_5 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field); |
| field = this._jvmTypesBuilder.toField(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class)); |
| field.setStatic(true); |
| field.setVisibility(JvmVisibility.PRIVATE); |
| EList<JvmMember> _members_6 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_6, field); |
| field = this._jvmTypesBuilder.toField(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class)); |
| field.setStatic(true); |
| field.setVisibility(JvmVisibility.PRIVATE); |
| EList<JvmMember> _members_7 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_7, field); |
| field = this._jvmTypesBuilder.toField(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class)); |
| field.setStatic(true); |
| field.setVisibility(JvmVisibility.PRIVATE); |
| EList<JvmMember> _members_8 = type.getMembers(); |
| this._jvmTypesBuilder.<JvmField>operator_add(_members_8, field); |
| } |
| |
| public String getActivate(final SignalWatcher watcher) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("thread = new Thread() {"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("@Override"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("public void run() {"); |
| _builder.newLine(); |
| _builder.append("\t\t\t"); |
| _builder.append("//"); |
| String _firstUpper = StringExtensions.toFirstUpper(watcher.getName()); |
| _builder.append(_firstUpper, "\t\t\t"); |
| _builder.append(" watcherservice = null;"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t\t\t"); |
| _builder.append("try {"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("//watcherservice = new "); |
| String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName()); |
| _builder.append(_firstUpper_1, "\t\t\t\t\t"); |
| _builder.append("();"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("//watcherservice.setSignals(Arrays.asList(SignalTypeEnum."); |
| String _upperCase = watcher.getSignal().getLiteral().toUpperCase(); |
| _builder.append(_upperCase, "\t\t\t\t\t"); |
| _builder.append("));"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("//watcherservice.registerPathToWatcher(Paths.get(\""); |
| String _directory = watcher.getDirectory(); |
| _builder.append(_directory, "\t\t\t\t\t"); |
| _builder.append("\"));"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("setSignals(Arrays.asList(SignalTypeEnum."); |
| String _upperCase_1 = watcher.getSignal().getLiteral().toUpperCase(); |
| _builder.append(_upperCase_1, "\t\t\t\t\t"); |
| _builder.append("));"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("registerPathToWatcher(Paths.get(\""); |
| String _directory_1 = watcher.getDirectory(); |
| _builder.append(_directory_1, "\t\t\t\t\t"); |
| _builder.append("\"));"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("while (active) {"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t\t\t"); |
| _builder.append("log.debug(\"Start watcher Service "); |
| String _firstUpper_2 = StringExtensions.toFirstUpper(watcher.getName()); |
| _builder.append(_firstUpper_2, "\t\t\t\t\t\t"); |
| _builder.append("\");"); |
| _builder.newLineIfNotEmpty(); |
| _builder.append("\t\t\t\t\t\t"); |
| _builder.append("//watcherservice.processEvents();"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t\t\t"); |
| _builder.append("initTasksLists();"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t\t\t"); |
| _builder.append("processEvents();"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t"); |
| _builder.append("} catch (Exception e) {"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("log.debug(\"Thread interrupted \" + e.getMessage());"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("//watcherservice.closeWatcher();"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t\t"); |
| _builder.append("closeWatcher();"); |
| _builder.newLine(); |
| _builder.append("\t\t\t\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("\t\t"); |
| _builder.append("}"); |
| _builder.newLine(); |
| _builder.append("};"); |
| _builder.newLine(); |
| _builder.append("thread.start();"); |
| return _builder.toString(); |
| } |
| |
| public String getDeactivate(final SignalWatcher watcher) { |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("try {"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("stopThread();"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("thread.join();"); |
| _builder.newLine(); |
| _builder.append("} catch (InterruptedException e) {"); |
| _builder.newLine(); |
| _builder.append("\t"); |
| _builder.append("e.printStackTrace();"); |
| _builder.newLine(); |
| _builder.append("}"); |
| return _builder.toString(); |
| } |
| |
| public void infer(final EObject signalPackage, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) { |
| if (signalPackage instanceof SignalPackage) { |
| _infer((SignalPackage)signalPackage, acceptor, isPreIndexingPhase); |
| return; |
| } else if (signalPackage != null) { |
| _infer(signalPackage, acceptor, isPreIndexingPhase); |
| return; |
| } else { |
| throw new IllegalArgumentException("Unhandled parameter types: " + |
| Arrays.<Object>asList(signalPackage, acceptor, isPreIndexingPhase).toString()); |
| } |
| } |
| } |