blob: ea2ecdd47119cb344aa9fe1a46139497fb1863bb [file] [log] [blame]
/**
* 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 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* 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.nio.file.Path;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
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.runtime.common.event.IEventDispatcher;
import org.eclipse.osbp.ui.api.customfields.IBlobService;
import org.eclipse.osbp.xtext.datainterchange.DataInterchange;
import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup;
import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
import org.eclipse.osbp.xtext.datainterchange.jvmmodel.DataDSLJvmModelInferrer;
import org.eclipse.osbp.xtext.datainterchange.validation.DataDSLValidator;
import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
import org.eclipse.osbp.xtext.signal.CronScheduler;
import org.eclipse.osbp.xtext.signal.DailyScheduler;
import org.eclipse.osbp.xtext.signal.HourlyScheduler;
import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
import org.eclipse.osbp.xtext.signal.SchedulerType;
import org.eclipse.osbp.xtext.signal.SignalActionTypeEnum;
import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
import org.eclipse.osbp.xtext.signal.SignalDefinition;
import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
import org.eclipse.osbp.xtext.signal.SignalFunction;
import org.eclipse.osbp.xtext.signal.SignalPackage;
import org.eclipse.osbp.xtext.signal.SignalScheduler;
import org.eclipse.osbp.xtext.signal.SignalTask;
import org.eclipse.osbp.xtext.signal.SignalWatcher;
import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
import org.eclipse.osbp.xtext.signal.common.SchedulerImpl;
import org.eclipse.osbp.xtext.signal.common.SchedulerJobImpl;
import org.eclipse.osbp.xtext.signal.common.WatcherImpl;
import org.eclipse.osbp.xtext.signal.common.WatcherJobImpl;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtend2.lib.StringConcatenationClient;
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.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.CollectionLiterals;
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.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
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 AnnotationExtension _annotationExtension;
@Inject
@Extension
private DataDSLJvmModelInferrer df;
@Inject
@Extension
private DataDSLValidator dv;
private HashSet<String> operationlist = CollectionLiterals.<String>newHashSet();
/**
* 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) {
final String pckgName = signalPackage.getName();
EList<SignalDefinition> _signals = signalPackage.getSignals();
for (final SignalDefinition signal : _signals) {
if ((((signal != null) && (signal.getTasks() != null)) && (!signal.getTasks().isEmpty()))) {
JvmGenericType signalClass = this._jvmTypesBuilder.toClass(signal, this._iQualifiedNameProvider.getFullyQualifiedName(signal));
if ((signal instanceof SignalWatcher)) {
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
signalClass.setSimpleName(_plus);
JvmGenericType signalWatcherJobClass = this._jvmTypesBuilder.toClass(signal, this._iQualifiedNameProvider.getFullyQualifiedName(signal));
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus_1 = (_firstUpper_1 + "WatcherJob");
signalWatcherJobClass.setSimpleName(_plus_1);
signalWatcherJobClass.setPackageName(pckgName);
final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
EList<JvmTypeReference> _superTypes = it.getSuperTypes();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(WatcherJobImpl.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
String _firstUpper_2 = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus_2 = ("Implements the list of tasks of " + _firstUpper_2);
String _plus_3 = (_plus_2 + "Watcher to be executed.");
this._jvmTypesBuilder.setDocumentation(it, _plus_3);
this.toWatcherJobFields(it, ((SignalWatcher)signal));
this.toWatcherJobOperations(it, ((SignalWatcher)signal));
};
acceptor.<JvmGenericType>accept(signalWatcherJobClass, _function);
} else {
if ((signal instanceof SignalScheduler)) {
String _firstUpper_2 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_2 = (_firstUpper_2 + "Scheduler");
signalClass.setSimpleName(_plus_2);
JvmGenericType signalSchedulerJobClass = this._jvmTypesBuilder.toClass(signal, this._iQualifiedNameProvider.getFullyQualifiedName(signal));
String _firstUpper_3 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_3 = (_firstUpper_3 + "SchedulerJob");
signalSchedulerJobClass.setSimpleName(_plus_3);
signalSchedulerJobClass.setPackageName(pckgName);
final Procedure1<JvmGenericType> _function_1 = (JvmGenericType it) -> {
EList<JvmTypeReference> _superTypes = it.getSuperTypes();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerJobImpl.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
String _firstUpper_4 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_4 = ("Implements the list of tasks of " + _firstUpper_4);
String _plus_5 = (_plus_4 + "Scheduler to be executed.");
this._jvmTypesBuilder.setDocumentation(it, _plus_5);
this.toSchedulerJobFields(it, ((SignalScheduler)signal));
this.toSchedulerJobOperations(it, ((SignalScheduler)signal));
};
acceptor.<JvmGenericType>accept(signalSchedulerJobClass, _function_1);
}
}
signalClass.setPackageName(pckgName);
final Procedure1<JvmGenericType> _function_2 = (JvmGenericType it) -> {
if ((signal instanceof SignalWatcher)) {
EList<JvmTypeReference> _superTypes = it.getSuperTypes();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(WatcherImpl.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
} else {
if ((signal instanceof SignalScheduler)) {
EList<JvmTypeReference> _superTypes_1 = it.getSuperTypes();
JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(SchedulerImpl.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes_1, _typeRef_1);
EList<JvmTypeReference> _superTypes_2 = it.getSuperTypes();
JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(Job.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes_2, _typeRef_2);
}
}
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.toFields(it, signal);
this.toConstructor(it, signal);
this.toOperations(it, signal);
this.toBinderOperations(it, signal);
};
acceptor.<JvmGenericType>accept(signalClass, _function_2);
}
}
}
public void toSchedulerJobOperations(final JvmGenericType type, final SignalScheduler scheduler) {
EList<JvmMember> _members = type.getMembers();
final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(scheduler, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
EList<JvmFormalParameter> _parameters_1 = it.getParameters();
JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(scheduler, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
EList<JvmFormalParameter> _parameters_2 = it.getParameters();
JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(scheduler, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
EList<JvmFormalParameter> _parameters_3 = it.getParameters();
JvmFormalParameter _parameter_3 = this._jvmTypesBuilder.toParameter(scheduler, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
EList<JvmFormalParameter> _parameters_4 = it.getParameters();
JvmFormalParameter _parameter_4 = this._jvmTypesBuilder.toParameter(scheduler, "schedulerid", this._typeReferenceBuilder.typeRef(String.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_4, _parameter_4);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.persistenceService = persistenceService;");
_builder.newLine();
_builder.append("this.dataInterchange = dataInterchange;");
_builder.newLine();
_builder.append("this.blobService = blobService;");
_builder.newLine();
_builder.append("this.eventDispatcher = eventDispatcher;");
_builder.newLine();
_builder.append("setSchedulerId(schedulerid);");
_builder.newLine();
{
boolean _hasFunctionWithFile = this.hasFunctionWithFile(scheduler);
if (_hasFunctionWithFile) {
_builder.append("paths = new HashMap<String, Path>();");
_builder.newLineIfNotEmpty();
}
}
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(scheduler, _function);
this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
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 _executeSchedulerTasksList = this.executeSchedulerTasksList(scheduler);
_builder.append(_executeSchedulerTasksList);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_2);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(scheduler, "executeListOfTasks", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method);
this.operationlist.clear();
this.createTaskOperations(type, scheduler);
}
public void toSchedulerJobFields(final JvmGenericType type, final SignalScheduler signal) {
JvmField field = null;
field = this._jvmTypesBuilder.toField(signal, "log", this._typeReferenceBuilder.typeRef(Logger.class));
field.setVisibility(JvmVisibility.PRIVATE);
this._jvmTypesBuilder.setDocumentation(field, "the log");
StringConcatenationClient _client = new StringConcatenationClient() {
@Override
protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) {
_builder.append("LoggerFactory.getLogger(\"signal\")");
}
};
this._jvmTypesBuilder.setInitializer(field, _client);
EList<JvmMember> _members = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
field = this._jvmTypesBuilder.toField(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_1 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
field = this._jvmTypesBuilder.toField(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_2 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
field = this._jvmTypesBuilder.toField(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_3 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
field = this._jvmTypesBuilder.toField(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_4 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
boolean _hasFunctionWithFile = this.hasFunctionWithFile(signal);
if (_hasFunctionWithFile) {
field = this._jvmTypesBuilder.toField(signal, "paths", this._typeReferenceBuilder.typeRef("HashMap<String,Path>"));
field.setVisibility(JvmVisibility.PRIVATE);
field.setStatic(true);
EList<JvmMember> _members_5 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
}
}
public void toWatcherJobOperations(final JvmGenericType type, final SignalWatcher watcher) {
EList<JvmMember> _members = type.getMembers();
final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
EList<JvmFormalParameter> _parameters_1 = it.getParameters();
JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
EList<JvmFormalParameter> _parameters_2 = it.getParameters();
JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
EList<JvmFormalParameter> _parameters_3 = it.getParameters();
JvmFormalParameter _parameter_3 = this._jvmTypesBuilder.toParameter(watcher, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
EList<JvmFormalParameter> _parameters_4 = it.getParameters();
JvmFormalParameter _parameter_4 = this._jvmTypesBuilder.toParameter(watcher, "file", this._typeReferenceBuilder.typeRef(Path.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_4, _parameter_4);
EList<JvmFormalParameter> _parameters_5 = it.getParameters();
JvmFormalParameter _parameter_5 = this._jvmTypesBuilder.toParameter(watcher, "watcherid", this._typeReferenceBuilder.typeRef(String.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_5, _parameter_5);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.persistenceService = persistenceService;");
_builder.newLine();
_builder.append("this.dataInterchange = dataInterchange;");
_builder.newLine();
_builder.append("this.blobService = blobService;");
_builder.newLine();
_builder.append("this.eventDispatcher = eventDispatcher;");
_builder.newLine();
CharSequence _xifexpression = null;
boolean _isHasFileMask = watcher.isHasFileMask();
if (_isHasFileMask) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("setParallelJobExecutionAllowed(true);");
_xifexpression = _builder_1;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
_builder.append("setTriggerfile(file);");
_builder.newLine();
_builder.append("setWatcherId(watcherid);");
_builder.newLine();
{
boolean _hasFunctionWithFile = this.hasFunctionWithFile(watcher);
if (_hasFunctionWithFile) {
_builder.append("paths = new HashMap<String, Path>();");
_builder.newLineIfNotEmpty();
}
}
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(watcher, _function);
this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
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 _executeWatcherTasksList = this.executeWatcherTasksList(watcher);
_builder.append(_executeWatcherTasksList);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_2);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, "executeListOfTasks", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method);
HashSet<String> _hashSet = new HashSet<String>();
this.operationlist = _hashSet;
this.createTaskOperations(type, watcher);
}
public void toWatcherJobFields(final JvmGenericType type, final SignalWatcher signal) {
JvmField field = null;
field = this._jvmTypesBuilder.toField(signal, "log", this._typeReferenceBuilder.typeRef(Logger.class));
field.setVisibility(JvmVisibility.PRIVATE);
this._jvmTypesBuilder.setDocumentation(field, "the log");
StringConcatenationClient _client = new StringConcatenationClient() {
@Override
protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) {
_builder.append("LoggerFactory.getLogger(\"signal\")");
}
};
this._jvmTypesBuilder.setInitializer(field, _client);
EList<JvmMember> _members = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
field = this._jvmTypesBuilder.toField(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_1 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
field = this._jvmTypesBuilder.toField(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_2 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
field = this._jvmTypesBuilder.toField(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_3 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
field = this._jvmTypesBuilder.toField(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_4 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
boolean _hasFunctionWithFile = this.hasFunctionWithFile(signal);
if (_hasFunctionWithFile) {
field = this._jvmTypesBuilder.toField(signal, "paths", this._typeReferenceBuilder.typeRef("HashMap<String,Path>"));
field.setVisibility(JvmVisibility.PRIVATE);
field.setStatic(true);
EList<JvmMember> _members_5 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
}
}
public void toBinderOperations(final JvmGenericType type, final SignalDefinition signal) {
EList<JvmMember> _members = type.getMembers();
final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return dataInterchange;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(signal, "getDataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class), _function);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
EList<JvmMember> _members_1 = type.getMembers();
final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return blobService;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_2);
};
JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(signal, "getBlobService", this._typeReferenceBuilder.typeRef(IBlobService.class), _function_1);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
EList<JvmMember> _members_2 = type.getMembers();
final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return eventDispatcher;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_3);
};
JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(signal, "getEventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class), _function_2);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
EList<JvmMember> _members_3 = type.getMembers();
final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return persistenceService;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_4);
};
JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(signal, "getPersistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class), _function_3);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
EList<JvmMember> _members_4 = type.getMembers();
final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, signal, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, signal, "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(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.dataInterchange = dataInterchange;");
_builder.newLine();
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"");
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
_builder_1.append(_plus);
_builder_1.append(" - DataInterchange bound\");");
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"");
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(" - DataInterchange bound\");");
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_5);
};
JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(signal, "bindDataInterchangeMethod", 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(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.dataInterchange = null;");
_builder.newLine();
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"");
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
_builder_1.append(_plus);
_builder_1.append(" - DataInterchange unbound\");");
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"");
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(" - DataInterchange unbound\");");
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_6);
};
JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(signal, "unbindDataInterchangeMethod", 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, signal, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, signal, "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(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.blobService = blobService;");
_builder.newLine();
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"");
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
_builder_1.append(_plus);
_builder_1.append(" - BlobService bound\");");
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"");
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(" - BlobService bound\");");
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_7);
};
JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(signal, "bindBlobMethod", 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(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.blobService = null;");
_builder.newLine();
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"");
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
_builder_1.append(_plus);
_builder_1.append(" - BlobService unbound\");");
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"");
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(" - BlobService unbound\");");
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_8);
};
JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(signal, "unbindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
EList<JvmMember> _members_8 = type.getMembers();
final Procedure1<JvmOperation> _function_8 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, signal, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, signal, "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(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.eventDispatcher = eventDispatcher;");
_builder.newLine();
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"");
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
_builder_1.append(_plus);
_builder_1.append(" - EventDispatcher bound\");");
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"");
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(" - EventDispatcher bound\");");
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_9);
};
JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(signal, "bindEventDispatcher", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_8);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
EList<JvmMember> _members_9 = type.getMembers();
final Procedure1<JvmOperation> _function_9 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_10 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.eventDispatcher = null;");
_builder.newLine();
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"");
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
_builder_1.append(_plus);
_builder_1.append(" - EventDispatcher unbound\");");
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"");
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(" - EventDispatcher unbound\");");
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_10);
};
JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(signal, "unbindEventDispatcher", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_9);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_9);
EList<JvmMember> _members_10 = type.getMembers();
final Procedure1<JvmOperation> _function_10 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, signal, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, signal, "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(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.persistenceService = persistenceService;");
_builder.newLine();
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"");
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
_builder_1.append(_plus);
_builder_1.append(" - PersistenceService bound\");");
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"");
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(" - PersistenceService bound\");");
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_11);
};
JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(signal, "bindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_10);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
EList<JvmMember> _members_11 = type.getMembers();
final Procedure1<JvmOperation> _function_11 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_12 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("this.persistenceService = null;");
_builder.newLine();
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"");
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
_builder_1.append(_plus);
_builder_1.append(" - PersistenceService unbound\");");
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"");
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(" - PersistenceService unbound\");");
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_12);
};
JvmOperation _method_11 = this._jvmTypesBuilder.toMethod(signal, "unbindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_11);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_11, _method_11);
}
public void toOperations(final JvmGenericType type, final SignalDefinition signal) {
if ((signal instanceof SignalWatcher)) {
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(signal, "file", this._typeReferenceBuilder.typeRef(Path.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _handleEvent = this.handleEvent(((SignalWatcher)signal));
_builder.append(_handleEvent);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(signal, "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) -> {
final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _executeService = this.getExecuteService(signal);
_builder.append(_executeService);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_2);
};
JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(signal, "executeWatcherService", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
}
if ((signal instanceof SignalScheduler)) {
EList<JvmMember> _members_2 = type.getMembers();
final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Starts the {@link #scheduler}.");
this._jvmTypesBuilder.setDocumentation(it, _builder.toString());
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerException.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
String _startScheduler = this.startScheduler(((SignalScheduler)signal));
_builder_1.append(_startScheduler);
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_3);
};
JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(signal, "startScheduler", 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) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Halts the Scheduler\'s firing of Triggers, and cleans up all resources associated with the Scheduler.");
_builder.newLine();
_builder.append("@param waitForJobsToComplete whether or not the scheduler shuts down immediately or wait for jobs to finish.");
_builder.newLine();
_builder.append("@throws SchedulerException");
this._jvmTypesBuilder.setDocumentation(it, _builder.toString());
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerException.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "waitForJobsToComplete", this._typeReferenceBuilder.typeRef(boolean.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
String _shutdownScheduler = this.shutdownScheduler(((SignalScheduler)signal));
_builder_1.append(_shutdownScheduler);
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_4);
};
JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(signal, "shutdownScheduler", 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) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Schedules a given job based on a given trigger.");
_builder.newLine();
_builder.append("@param job the {@link JobDetail} to be scheduled");
_builder.newLine();
_builder.append("@param trigger the corresponding trigger");
_builder.newLine();
_builder.append("@return");
this._jvmTypesBuilder.setDocumentation(it, _builder.toString());
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerException.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "job", this._typeReferenceBuilder.typeRef(JobDetail.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
EList<JvmFormalParameter> _parameters_1 = it.getParameters();
JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(signal, "trigger", this._typeReferenceBuilder.typeRef(Trigger.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
String _scheduleJob = this.scheduleJob(((SignalScheduler)signal));
_builder_1.append(_scheduleJob);
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_5);
};
JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(signal, "scheduleJob", this._typeReferenceBuilder.typeRef(Date.class), _function_4);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
EList<JvmMember> _members_5 = type.getMembers();
final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerException.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _scheduleAllJobs = this.scheduleAllJobs(((SignalScheduler)signal));
_builder.append(_scheduleAllJobs);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_6);
};
JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(signal, "scheduleAllJobs", 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) -> {
final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _executeService = this.getExecuteService(signal);
_builder.append(_executeService);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_7);
};
JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(signal, "executeSchedulerService", 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) -> {
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(JobExecutionException.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
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(signal, "context", this._typeReferenceBuilder.typeRef(JobExecutionContext.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
this._jvmTypesBuilder.setDocumentation(it, "Executes the list of tasks as job\'s logic.");
final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new ");
String _firstUpper = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
_builder.append(_firstUpper);
_builder.append("SchedulerJob(persistenceService, dataInterchange, blobService, eventDispatcher, ");
_builder.newLineIfNotEmpty();
_builder.append("\"");
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(signal);
_builder.append(_fullyQualifiedName);
_builder.append("Scheduler\").executeListOfTasks();");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_8);
};
JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(signal, "execute", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
}
EList<JvmMember> _members_8 = type.getMembers();
final Procedure1<JvmOperation> _function_8 = (JvmOperation it) -> {
this._jvmTypesBuilder.setDocumentation(it, "Gives the property value of the given property name if existing.");
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "propertyname", this._typeReferenceBuilder.typeRef(String.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _handlerPropertyFromConfigurationFile = this.handlerPropertyFromConfigurationFile(signal);
_builder.append(_handlerPropertyFromConfigurationFile);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_9);
};
JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(signal, "getHandlerPropertyFromConfigurationFile", this._typeReferenceBuilder.typeRef(String.class), _function_8);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
EList<JvmMember> _members_9 = type.getMembers();
final Procedure1<JvmOperation> _function_9 = (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_10 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _activate = this.getActivate(signal);
_builder.append(_activate);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_10);
};
JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(signal, "activate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_9);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_9);
EList<JvmMember> _members_10 = type.getMembers();
final Procedure1<JvmOperation> _function_10 = (JvmOperation it) -> {
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Deactivate.class);
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _deactivate = this.getDeactivate(signal);
_builder.append(_deactivate);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_11);
};
JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(signal, "deactivate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_10);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
}
public String scheduleJob(final SignalScheduler scheduler) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("try {");
_builder.newLine();
_builder.append("\t");
_builder.append("return scheduler.scheduleJob(job, trigger);");
_builder.newLine();
_builder.append("} catch (SchedulerException e) {");
_builder.newLine();
_builder.append("\t");
_builder.append("e.printStackTrace();");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.append("return null;");
return _builder.toString();
}
public String shutdownScheduler(final SignalScheduler scheduler) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("log.info(\"Shutdowns \"+scheduler.getSchedulerName()+\" ...\");");
_builder.newLine();
_builder.append("scheduler.shutdown(waitForJobsToComplete);");
return _builder.toString();
}
public String startScheduler(final SignalScheduler scheduler) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("scheduler.start();");
_builder.newLine();
_builder.append("log.info(scheduler.getSchedulerName() + \" service successfully started!\");");
return _builder.toString();
}
public String handleEvent(final SignalWatcher watcher) {
if ((watcher != null)) {
StringConcatenation _builder = new StringConcatenation();
CharSequence _xifexpression = null;
boolean _isHasFileMask = watcher.isHasFileMask();
if (_isHasFileMask) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("String maskcfg = getFilemaskValue(getHandlerPropertyFromConfigurationFile(\"");
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
_builder_1.append(_fullyQualifiedName);
_builder_1.append("Watcher\" + SignalConstants.FILEMASK));");
_builder_1.newLineIfNotEmpty();
_builder_1.append("String modelfilemask = \"");
String _identifier = watcher.getIdentifier();
_builder_1.append(_identifier);
_builder_1.append("\";");
_builder_1.newLineIfNotEmpty();
_builder_1.append("if(isFileMaskValid(maskcfg) && isFileMaskValidWithExpectedFileExtension(maskcfg, \"");
String _validExtensionToInterchange = this.dv.getValidExtensionToInterchange(this.baseInterchange(watcher).getFileEndpoint());
_builder_1.append(_validExtensionToInterchange);
_builder_1.append("\")){");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t");
_builder_1.append("modelfilemask = maskcfg;");
_builder_1.newLine();
_builder_1.append(" \t");
_builder_1.append("log.info(\"");
String _name = watcher.getName();
_builder_1.append(_name, " \t");
_builder_1.append("Watcher - The file mask used for file identification is [\"+maskcfg+\"].\");");
_builder_1.newLineIfNotEmpty();
_builder_1.append("}else{");
_builder_1.newLine();
_builder_1.append(" \t");
_builder_1.append("log.info(\"");
String _name_1 = watcher.getName();
_builder_1.append(_name_1, " \t");
_builder_1.append("Watcher - The default file mask [");
String _identifier_1 = watcher.getIdentifier();
_builder_1.append(_identifier_1, " \t");
_builder_1.append("] is used for file identification.\");");
_builder_1.newLineIfNotEmpty();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("if(isFileNameValidToFileMask(file.getFileName().toString(), modelfilemask)){");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("addWatcherJob(new ");
String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
_builder_1.append(_firstUpper, "\t");
_builder_1.append("WatcherJob(persistenceService, dataInterchange, blobService, eventDispatcher, file, \"");
QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
_builder_1.append(_fullyQualifiedName_1, "\t");
_builder_1.append("Watcher\"));");
_builder_1.newLineIfNotEmpty();
_builder_1.append("}");
_xifexpression = _builder_1;
} else {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("String namecfg = getFilemaskValue(getHandlerPropertyFromConfigurationFile(\"");
QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
_builder_2.append(_fullyQualifiedName_2);
_builder_2.append("Watcher\" + SignalConstants.FILENAME));");
_builder_2.newLineIfNotEmpty();
_builder_2.append("String filemask = namecfg != null ? namecfg : \"");
String _identifier_2 = watcher.getIdentifier();
_builder_2.append(_identifier_2);
_builder_2.append("\";");
_builder_2.newLineIfNotEmpty();
_builder_2.append("if(isFileNameValidToBaseFileName(file.getFileName().toString(), filemask)){");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("addWatcherJob(new ");
String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName());
_builder_2.append(_firstUpper_1, "\t");
_builder_2.append("WatcherJob(persistenceService, dataInterchange, blobService, eventDispatcher, file, \"");
QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
_builder_2.append(_fullyQualifiedName_3, "\t");
_builder_2.append("Watcher\"));");
_builder_2.newLineIfNotEmpty();
_builder_2.append("}");
_xifexpression = _builder_2;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
_builder.append("else{");
_builder.newLine();
_builder.append("\t");
_builder.append("log.info(\"");
String _firstUpper_2 = StringExtensions.toFirstUpper(watcher.getName());
_builder.append(_firstUpper_2, "\t");
_builder.append("Watcher - No action planed for file [\"+file+\"].\");");
_builder.newLineIfNotEmpty();
_builder.append("}");
return _builder.toString();
}
StringConcatenation _builder_3 = new StringConcatenation();
return _builder_3.toString();
}
public void toConstructor(final JvmGenericType type, final SignalDefinition signal) {
EList<JvmMember> _members = type.getMembers();
final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
if ((signal instanceof SignalWatcher)) {
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("super(\"");
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
_builder.append(_plus);
_builder.append("\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
}
};
JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(signal, _function);
this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
}
public String executeWatcherTasksList(final SignalWatcher watcher) {
StringConcatenation _builder = new StringConcatenation();
CharSequence _xifexpression = null;
if ((watcher != null)) {
CharSequence _xblockexpression = null;
{
String operationList = "";
boolean functionWithFile = this.hasFunctionWithFile(watcher);
EList<SignalTask> _tasks = watcher.getTasks();
for (final SignalTask task : _tasks) {
String _taskListOperationName = this.getTaskListOperationName(task, functionWithFile);
String _plus = (operationList + _taskListOperationName);
operationList = _plus;
}
CharSequence _xifexpression_1 = null;
boolean _equals = watcher.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
if (_equals) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"WatcherJobsHandler - START - Sequential execution of ");
String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
_builder_1.append(_firstUpper);
_builder_1.append("WatcherJob ...\");");
_builder_1.newLineIfNotEmpty();
_builder_1.append("try {");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append(operationList, "\t");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t");
_builder_1.append("deleteFile(getTriggerfile(), \"");
String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName());
_builder_1.append(_firstUpper_1, "\t");
_builder_1.append("WatcherJob - Triggerfile\");");
_builder_1.newLineIfNotEmpty();
_builder_1.append("} catch(Exception e){");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("log.error(\"WatcherJobsHandler - ERROR during sequential execution of ");
String _firstUpper_2 = StringExtensions.toFirstUpper(watcher.getName());
_builder_1.append(_firstUpper_2, "\t");
_builder_1.append("WatcherJob!\", e);");
_builder_1.newLineIfNotEmpty();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("setDone(true); // for the WatcherhandlerJob to continue ");
_builder_1.newLine();
_builder_1.append("log.info(\"WatcherJobsHandler - END - Sequential execution of ");
String _firstUpper_3 = StringExtensions.toFirstUpper(watcher.getName());
_builder_1.append(_firstUpper_3);
_builder_1.append("WatcherJob ...\");");
_xifexpression_1 = _builder_1;
} else {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"WatcherJobsHandler - START - Parallel execution of ");
String _firstUpper_4 = StringExtensions.toFirstUpper(watcher.getName());
_builder_2.append(_firstUpper_4);
_builder_2.append("WatcherJob ...\");");
_builder_2.newLineIfNotEmpty();
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append(operationList, "\t");
_builder_2.newLineIfNotEmpty();
_builder_2.append("\t");
_builder_2.append("finalizeTaskExecution(\"");
String _firstUpper_5 = StringExtensions.toFirstUpper(watcher.getName());
_builder_2.append(_firstUpper_5, "\t");
_builder_2.append("WatcherJob\");");
_builder_2.newLineIfNotEmpty();
_builder_2.append("} catch(Exception e){");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("log.error(\"WatcherJobsHandler - ERROR during parallel execution of ");
String _firstUpper_6 = StringExtensions.toFirstUpper(watcher.getName());
_builder_2.append(_firstUpper_6, "\t");
_builder_2.append("WatcherJob!\", e);");
_builder_2.newLineIfNotEmpty();
_builder_2.append("\t");
_builder_2.append("setDone(true); // for the WatcherhandlerJob to continue");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("log.info(\"WatcherJobsHandler - END - Parallel execution of ");
String _firstUpper_7 = StringExtensions.toFirstUpper(watcher.getName());
_builder_2.append(_firstUpper_7, "\t");
_builder_2.append("WatcherJob ...\");");
_builder_2.newLineIfNotEmpty();
_builder_2.append("}");
_xifexpression_1 = _builder_2;
}
_xblockexpression = _xifexpression_1;
}
_xifexpression = _xblockexpression;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
return _builder.toString();
}
public String executeSchedulerTasksList(final SignalScheduler scheduler) {
StringConcatenation _builder = new StringConcatenation();
CharSequence _xifexpression = null;
if ((scheduler != null)) {
CharSequence _xblockexpression = null;
{
String operationList = "";
boolean functionWithFile = this.hasFunctionWithFile(scheduler);
EList<SignalTask> _tasks = scheduler.getTasks();
for (final SignalTask task : _tasks) {
String _taskListOperationName = this.getTaskListOperationName(task, functionWithFile);
String _plus = (operationList + _taskListOperationName);
operationList = _plus;
}
CharSequence _xifexpression_1 = null;
boolean _equals = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
if (_equals) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("log.info(\"START - Sequential execution of ");
String _firstUpper = StringExtensions.toFirstUpper(scheduler.getName());
_builder_1.append(_firstUpper);
_builder_1.append("SchedulerJob ...\");");
_builder_1.newLineIfNotEmpty();
_builder_1.append("try {");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append(operationList, "\t");
_builder_1.newLineIfNotEmpty();
_builder_1.append("} catch(Exception e){");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("log.error(\"ERROR during sequential execution of ");
String _firstUpper_1 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_1.append(_firstUpper_1, "\t");
_builder_1.append("SchedulerJob!\", e);");
_builder_1.newLineIfNotEmpty();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("log.info(\"END - Sequential execution of ");
String _firstUpper_2 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_1.append(_firstUpper_2);
_builder_1.append("SchedulerJob.\");");
_xifexpression_1 = _builder_1;
} else {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("log.info(\"START - Parallel execution of ");
String _firstUpper_3 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_2.append(_firstUpper_3);
_builder_2.append("SchedulerJob ...\");");
_builder_2.newLineIfNotEmpty();
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append(operationList, "\t");
_builder_2.newLineIfNotEmpty();
_builder_2.append("\t");
_builder_2.append("finalizeTaskExecution(\"");
String _firstUpper_4 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_2.append(_firstUpper_4, "\t");
_builder_2.append("SchedulerJob\");");
_builder_2.newLineIfNotEmpty();
_builder_2.append("} catch(Exception e){");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("log.error(\"ERROR during parallel execution of ");
String _firstUpper_5 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_2.append(_firstUpper_5, "\t");
_builder_2.append("SchedulerJob!\", e);");
_builder_2.newLineIfNotEmpty();
_builder_2.append("log.info(\"END - Parallel execution of ");
String _firstUpper_6 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_2.append(_firstUpper_6);
_builder_2.append("SchedulerJob.\");");
_builder_2.newLineIfNotEmpty();
_builder_2.append("}");
_xifexpression_1 = _builder_2;
}
_xblockexpression = _xifexpression_1;
}
_xifexpression = _xblockexpression;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
return _builder.toString();
}
public String getTaskListOperationName(final SignalTask task, final boolean existFunctionWithFile) {
if ((task instanceof SignalFunction)) {
if (((task != null) && (((SignalFunction)task).getDoExecuteFunction() != null))) {
if (((((SignalFunction)task).isOnExportFile() || ((SignalFunction)task).isOnImportFile()) && (!((SignalFunction)task).getDoExecuteFunction().getParams().isEmpty()))) {
String operationName = "";
boolean _isOnExportFile = ((SignalFunction)task).isOnExportFile();
if (_isOnExportFile) {
String _firstUpper = StringExtensions.toFirstUpper(((SignalFunction)task).getSupportInterchange().getName());
String _plus = ("export" + _firstUpper);
operationName = _plus;
} else {
boolean _isOnImportFile = ((SignalFunction)task).isOnImportFile();
if (_isOnImportFile) {
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalFunction)task).getSupportInterchange().getName());
String _plus_1 = ("import" + _firstUpper_1);
operationName = _plus_1;
}
}
StringConcatenation _builder = new StringConcatenation();
EObject _eContainer = ((SignalFunction)task).getGroup().eContainer();
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((FunctionLibraryPackage) _eContainer));
_builder.append(_fullyQualifiedName);
_builder.append(".");
String _firstUpper_2 = StringExtensions.toFirstUpper(((SignalFunction)task).getGroup().getName().toString());
_builder.append(_firstUpper_2);
_builder.append(".");
String _string = ((SignalFunction)task).getDoExecuteFunction().getName().toString();
_builder.append(_string);
_builder.append("(paths.get(\"");
_builder.append(operationName);
_builder.append("\"));");
_builder.newLineIfNotEmpty();
return _builder.toString();
} else {
if (((!((SignalFunction)task).isOnExportFile()) && (!((SignalFunction)task).isOnImportFile()))) {
StringConcatenation _builder_1 = new StringConcatenation();
EObject _eContainer_1 = ((SignalFunction)task).getGroup().eContainer();
QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(((FunctionLibraryPackage) _eContainer_1));
_builder_1.append(_fullyQualifiedName_1);
_builder_1.append(".");
String _firstUpper_3 = StringExtensions.toFirstUpper(((SignalFunction)task).getGroup().getName().toString());
_builder_1.append(_firstUpper_3);
_builder_1.append(".");
String _string_1 = ((SignalFunction)task).getDoExecuteFunction().getName().toString();
_builder_1.append(_string_1);
_builder_1.append("();");
_builder_1.newLineIfNotEmpty();
return _builder_1.toString();
}
}
}
} else {
StringConcatenation _builder_2 = new StringConcatenation();
{
if (existFunctionWithFile) {
_builder_2.append(" paths.put(\"");
String _appropriateTaskOperationName = this.getAppropriateTaskOperationName(task);
_builder_2.append(_appropriateTaskOperationName);
_builder_2.append("\", ");
String _appropriateTaskOperationName_1 = this.getAppropriateTaskOperationName(task);
_builder_2.append(_appropriateTaskOperationName_1);
_builder_2.append("()); ");
} else {
String _appropriateTaskOperationName_2 = this.getAppropriateTaskOperationName(task);
_builder_2.append(_appropriateTaskOperationName_2);
_builder_2.append("(); ");
}
}
_builder_2.newLineIfNotEmpty();
return _builder_2.toString();
}
return null;
}
/**
* Returns the operation name of the given task.
*/
public String getAppropriateTaskOperationName(final SignalTask task) {
String operation_name = "";
if ((task instanceof SignalDatainterchange)) {
if ((Objects.equal(((SignalDatainterchange)task).getActionType(), SignalActionTypeEnum.DATAIMPORT) && (((SignalDatainterchange)task).getDataRef() != null))) {
String _firstUpper = StringExtensions.toFirstUpper(((SignalDatainterchange)task).getDataRef().getName());
String _plus = ("import" + _firstUpper);
operation_name = _plus;
} else {
DataInterchange _dataRef = ((SignalDatainterchange)task).getDataRef();
boolean _tripleNotEquals = (_dataRef != null);
if (_tripleNotEquals) {
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalDatainterchange)task).getDataRef().getName());
String _plus_1 = ("export" + _firstUpper_1);
operation_name = _plus_1;
}
}
}
return operation_name;
}
/**
* Creates the content of each task operation for scheduler and watcher jobs task files.
*/
public void createTaskOperations(final JvmGenericType type, final SignalDefinition signal) {
EList<SignalTask> _tasks = signal.getTasks();
for (final SignalTask task : _tasks) {
{
String operationname = this.getAppropriateTaskOperationName(task);
boolean _contains = this.operationlist.contains(operationname);
boolean _not = (!_contains);
if (_not) {
if ((task instanceof SignalDatainterchange)) {
if ((signal instanceof SignalWatcher)) {
this.watcherInterchangeOperation(type, ((SignalWatcher)signal), ((SignalDatainterchange)task), operationname);
} else {
if ((signal instanceof SignalScheduler)) {
this.schedulerInterchangeOperation(type, ((SignalScheduler)signal), ((SignalDatainterchange)task), operationname);
}
}
}
this.operationlist.add(operationname);
}
}
}
}
public boolean schedulerInterchangeOperation(final JvmGenericType type, final SignalScheduler signal, final SignalDatainterchange interchange, final String operationname) {
boolean _xifexpression = false;
SignalActionTypeEnum _actionType = interchange.getActionType();
boolean _equals = Objects.equal(_actionType, SignalActionTypeEnum.DATAIMPORT);
if (_equals) {
EList<JvmMember> _members = type.getMembers();
final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
EObject _eContainer = interchange.getDataRef().eContainer();
String _configFileURL = this.df.getConfigFileURL(((DataInterchangeGroup) _eContainer).getName());
_builder.append(_configFileURL);
_builder.newLineIfNotEmpty();
String _basicRunConfiguration = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.IMPORT.name(), null);
_builder.append(_basicRunConfiguration);
_builder.newLineIfNotEmpty();
String _defaultVariableName = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName);
_builder.append(".setDirection(WorkerThreadRunnable.Direction.IMPORT);");
_builder.newLineIfNotEmpty();
_builder.append("try {");
_builder.newLine();
_builder.append("\t");
CharSequence _xifexpression_1 = null;
boolean _equals_1 = ((SignalScheduler) signal).getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
if (_equals_1) {
StringConcatenation _builder_1 = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(signal.getName());
String _plus = (_firstUpper + "Scheduler");
_builder_1.append(_plus);
_builder_1.append(".getExecutorService().submit(");
String _defaultVariableName_1 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_1.append(_defaultVariableName_1);
_builder_1.append(").get();");
_xifexpression_1 = _builder_1;
} else {
StringConcatenation _builder_2 = new StringConcatenation();
String _firstUpper_1 = StringExtensions.toFirstUpper(signal.getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(".getExecutorService().execute(");
String _defaultVariableName_2 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_2.append(_defaultVariableName_2);
_builder_2.append(");");
_xifexpression_1 = _builder_2;
}
_builder.append(_xifexpression_1, "\t");
_builder.newLineIfNotEmpty();
_builder.append("}catch (Exception e) {");
_builder.newLine();
_builder.append("\t");
_builder.append("log.error(\"Execution - \" + ");
String _defaultVariableName_3 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_3, "\t");
_builder.append(".getDirection() + \" for \" + ");
String _defaultVariableName_4 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_4, "\t");
_builder.append(".getName() + \" interupted!\\n\" + e.getMessage());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
CharSequence _xifexpression_2 = null;
SignalActionTypeEnum _actionType_1 = interchange.getActionType();
boolean _equals_2 = Objects.equal(_actionType_1, SignalActionTypeEnum.DATAIMPORT);
if (_equals_2) {
StringConcatenation _builder_3 = new StringConcatenation();
{
boolean _isDeleteFileAfterImport = interchange.getDataRef().isDeleteFileAfterImport();
if (_isDeleteFileAfterImport) {
_builder_3.append("renameFile(Paths.get(");
String _defaultVariableName_5 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_3.append(_defaultVariableName_5);
_builder_3.append(".getFileURL().toString()), \"");
String _firstUpper_2 = StringExtensions.toFirstUpper(signal.getName());
_builder_3.append(_firstUpper_2);
_builder_3.append("SchedulerJob\");");
_builder_3.newLineIfNotEmpty();
}
}
_xifexpression_2 = _builder_3;
}
_builder.append(_xifexpression_2, "\t");
_builder.newLineIfNotEmpty();
_builder.append("}");
_builder.newLine();
_builder.append("return Paths.get(");
String _defaultVariableName_6 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_6);
_builder.append(".getFileURL().getPath().substring(1));");
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(signal, operationname, this._typeReferenceBuilder.typeRef(Path.class), _function);
_xifexpression = 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();
EObject _eContainer = interchange.getDataRef().eContainer();
String _configFileURL = this.df.getConfigFileURL(((DataInterchangeGroup) _eContainer).getName());
_builder.append(_configFileURL);
_builder.newLineIfNotEmpty();
String _basicRunConfiguration = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.EXPORT.name(), null);
_builder.append(_basicRunConfiguration);
_builder.newLineIfNotEmpty();
String _defaultVariableName = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName);
_builder.append(".setDirection(WorkerThreadRunnable.Direction.EXPORT);");
_builder.newLineIfNotEmpty();
_builder.append("try {");
_builder.newLine();
_builder.append("\t");
CharSequence _xifexpression_1 = null;
boolean _equals_1 = ((SignalScheduler) signal).getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
if (_equals_1) {
StringConcatenation _builder_1 = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(signal.getName());
String _plus = (_firstUpper + "Scheduler");
_builder_1.append(_plus);
_builder_1.append(".getExecutorService().submit(");
String _defaultVariableName_1 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_1.append(_defaultVariableName_1);
_builder_1.append(").get();");
_xifexpression_1 = _builder_1;
} else {
StringConcatenation _builder_2 = new StringConcatenation();
String _firstUpper_1 = StringExtensions.toFirstUpper(signal.getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
_builder_2.append(_plus_1);
_builder_2.append(".getExecutorService().execute(");
String _defaultVariableName_2 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_2.append(_defaultVariableName_2);
_builder_2.append(");");
_xifexpression_1 = _builder_2;
}
_builder.append(_xifexpression_1, "\t");
_builder.newLineIfNotEmpty();
_builder.append("}catch (Exception e) {");
_builder.newLine();
_builder.append("\t");
_builder.append("log.error(\"Execution - \" + ");
String _defaultVariableName_3 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_3, "\t");
_builder.append(".getDirection() + \" for \" + ");
String _defaultVariableName_4 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_4, "\t");
_builder.append(".getName() + \" interupted!\\n\" + e.getMessage());");
_builder.newLineIfNotEmpty();
_builder.append("}");
_builder.newLine();
_builder.append("return ");
String _defaultVariableName_5 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_5);
_builder.append(".getExportPath();");
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_2);
};
JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(signal, operationname, this._typeReferenceBuilder.typeRef(Path.class), _function_1);
_xifexpression = this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
}
return _xifexpression;
}
public boolean watcherInterchangeOperation(final JvmGenericType type, final SignalWatcher watcher, final SignalDatainterchange interchange, final String operationname) {
boolean _xifexpression = false;
boolean _equals = watcher.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
if (_equals) {
EList<JvmMember> _members = type.getMembers();
final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
CharSequence _xifexpression_1 = null;
SignalActionTypeEnum _actionType = interchange.getActionType();
boolean _equals_1 = Objects.equal(_actionType, SignalActionTypeEnum.DATAIMPORT);
if (_equals_1) {
StringConcatenation _builder_1 = new StringConcatenation();
String _basicRunConfiguration = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.IMPORT.name(), this.baseInterchange(watcher));
_builder_1.append(_basicRunConfiguration);
_builder_1.newLineIfNotEmpty();
String _defaultVariableName = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_1.append(_defaultVariableName);
_builder_1.append(".setDirection(WorkerThreadRunnable.Direction.IMPORT);");
_builder_1.newLineIfNotEmpty();
_xifexpression_1 = _builder_1;
} else {
StringConcatenation _builder_2 = new StringConcatenation();
EObject _eContainer = interchange.getDataRef().eContainer();
String _configFileURL = this.df.getConfigFileURL(((DataInterchangeGroup) _eContainer).getName());
_builder_2.append(_configFileURL);
_builder_2.newLineIfNotEmpty();
String _basicRunConfiguration_1 = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.EXPORT.name(), this.baseInterchange(watcher));
_builder_2.append(_basicRunConfiguration_1);
_builder_2.newLineIfNotEmpty();
String _defaultVariableName_1 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_2.append(_defaultVariableName_1);
_builder_2.append(".setDirection(WorkerThreadRunnable.Direction.EXPORT);");
_builder_2.newLineIfNotEmpty();
_xifexpression_1 = _builder_2;
}
_builder.append(_xifexpression_1);
_builder.newLineIfNotEmpty();
CharSequence _xifexpression_2 = null;
DataInterchange _baseInterchange = this.baseInterchange(watcher);
boolean _equals_2 = Objects.equal(interchange, _baseInterchange);
if (_equals_2) {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append("URI uri = getTriggerfile().toUri();");
_builder_3.newLine();
String _defaultVariableName_2 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_3.append(_defaultVariableName_2);
_builder_3.append(".setFileURL(uri.toString());");
_builder_3.newLineIfNotEmpty();
_xifexpression_2 = _builder_3;
} else {
StringConcatenation _builder_4 = new StringConcatenation();
String _defaultVariableName_3 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_4.append(_defaultVariableName_3);
_builder_4.append(".setFileURL(getTriggerfile().getParent().toString() + File.separator + \"");
String _dataInterchangeFileName = this.df.getDataInterchangeFileName(interchange.getDataRef());
_builder_4.append(_dataInterchangeFileName);
_builder_4.append("\");");
_xifexpression_2 = _builder_4;
}
_builder.append(_xifexpression_2);
_builder.newLineIfNotEmpty();
_builder.append("try{");
_builder.newLine();
_builder.append("\t");
_builder.append("WatcherImpl.getExecutorService().submit(");
String _defaultVariableName_4 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_4, "\t");
_builder.append(").get();");
_builder.newLineIfNotEmpty();
_builder.append("}catch (Exception e) {");
_builder.newLine();
_builder.append("\t");
_builder.append("log.error(\"Execution - \" + ");
String _defaultVariableName_5 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_5, "\t");
_builder.append(".getDirection() + \" for \" + ");
String _defaultVariableName_6 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_6, "\t");
_builder.append(".getName() + \" interupted!\\n\" + e.getMessage());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
String _defaultVariableName_7 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_7, "\t");
_builder.append(".setExecutionDone(true);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
CharSequence _xifexpression_3 = null;
SignalActionTypeEnum _actionType_1 = interchange.getActionType();
boolean _equals_3 = Objects.equal(_actionType_1, SignalActionTypeEnum.DATAIMPORT);
if (_equals_3) {
CharSequence _xifexpression_4 = null;
if ((Objects.equal(interchange.getDataRef(), this.baseInterchange(watcher)) && interchange.getDataRef().isDeleteFileAfterImport())) {
StringConcatenation _builder_5 = new StringConcatenation();
_builder_5.append("renameFile(getTriggerfile(), \"");
String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
_builder_5.append(_firstUpper);
_builder_5.append("WatcherJob\");");
_xifexpression_4 = _builder_5;
} else {
CharSequence _xifexpression_5 = null;
boolean _isDeleteFileAfterImport = interchange.getDataRef().isDeleteFileAfterImport();
if (_isDeleteFileAfterImport) {
StringConcatenation _builder_6 = new StringConcatenation();
_builder_6.append("renameFile(Paths.get(");
String _defaultVariableName_8 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_6.append(_defaultVariableName_8);
_builder_6.append(".getFileURL().toString()), \"");
String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName());
_builder_6.append(_firstUpper_1);
_builder_6.append("WatcherJob\");");
_xifexpression_5 = _builder_6;
}
_xifexpression_4 = _xifexpression_5;
}
_xifexpression_3 = _xifexpression_4;
}
_builder.append(_xifexpression_3, "\t");
_builder.newLineIfNotEmpty();
_builder.append("}");
_builder.newLine();
CharSequence _xifexpression_6 = null;
SignalActionTypeEnum _actionType_2 = interchange.getActionType();
boolean _equals_4 = Objects.equal(_actionType_2, SignalActionTypeEnum.DATAIMPORT);
if (_equals_4) {
StringConcatenation _builder_7 = new StringConcatenation();
_builder_7.append("return Paths.get(");
String _defaultVariableName_9 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_7.append(_defaultVariableName_9);
_builder_7.append(".getFileURL().getPath().substring(1));");
_xifexpression_6 = _builder_7;
} else {
StringConcatenation _builder_8 = new StringConcatenation();
_builder_8.append("return ");
String _defaultVariableName_10 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_8.append(_defaultVariableName_10);
_builder_8.append(".getExportPath();");
_xifexpression_6 = _builder_8;
}
_builder.append(_xifexpression_6);
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, operationname, this._typeReferenceBuilder.typeRef(Path.class), _function);
_xifexpression = this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
} else {
EList<JvmMember> _members_1 = type.getMembers();
final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
CharSequence _xifexpression_1 = null;
SignalActionTypeEnum _actionType = interchange.getActionType();
boolean _equals_1 = Objects.equal(_actionType, SignalActionTypeEnum.DATAIMPORT);
if (_equals_1) {
StringConcatenation _builder_1 = new StringConcatenation();
String _basicRunConfiguration = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.IMPORT.name(), this.baseInterchange(watcher));
_builder_1.append(_basicRunConfiguration);
_builder_1.newLineIfNotEmpty();
String _defaultVariableName = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_1.append(_defaultVariableName);
_builder_1.append(".setDirection(WorkerThreadRunnable.Direction.IMPORT);");
_builder_1.newLineIfNotEmpty();
_xifexpression_1 = _builder_1;
} else {
StringConcatenation _builder_2 = new StringConcatenation();
EObject _eContainer = interchange.getDataRef().eContainer();
String _configFileURL = this.df.getConfigFileURL(((DataInterchangeGroup) _eContainer).getName());
_builder_2.append(_configFileURL);
_builder_2.newLineIfNotEmpty();
String _basicRunConfiguration_1 = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.EXPORT.name(), this.baseInterchange(watcher));
_builder_2.append(_basicRunConfiguration_1);
_builder_2.newLineIfNotEmpty();
String _defaultVariableName_1 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_2.append(_defaultVariableName_1);
_builder_2.append(".setDirection(WorkerThreadRunnable.Direction.EXPORT);");
_builder_2.newLineIfNotEmpty();
_xifexpression_1 = _builder_2;
}
_builder.append(_xifexpression_1);
_builder.newLineIfNotEmpty();
CharSequence _xifexpression_2 = null;
DataInterchange _baseInterchange = this.baseInterchange(watcher);
boolean _equals_2 = Objects.equal(interchange, _baseInterchange);
if (_equals_2) {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append("URI uri = getTriggerfile().toUri();");
_builder_3.newLine();
String _defaultVariableName_2 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_3.append(_defaultVariableName_2);
_builder_3.append(".setFileURL(uri.toString());");
_xifexpression_2 = _builder_3;
} else {
StringConcatenation _builder_4 = new StringConcatenation();
String _defaultVariableName_3 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_4.append(_defaultVariableName_3);
_builder_4.append(".setFileURL(getTriggerfile().getParent().toString() + File.separator + \"");
String _dataInterchangeFileName = this.df.getDataInterchangeFileName(interchange.getDataRef());
_builder_4.append(_dataInterchangeFileName);
_builder_4.append("\");");
_xifexpression_2 = _builder_4;
}
_builder.append(_xifexpression_2);
_builder.newLineIfNotEmpty();
_builder.append("checkForCompletion(");
String _defaultVariableName_4 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_4);
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append("try{");
_builder.newLine();
_builder.append("\t");
_builder.append("WatcherImpl.getExecutorService().execute(");
String _defaultVariableName_5 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_5, "\t");
_builder.append(");");
_builder.newLineIfNotEmpty();
_builder.append("}catch (Exception e) {");
_builder.newLine();
_builder.append("\t");
_builder.append("log.error(\"Execution - \" + ");
String _defaultVariableName_6 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_6, "\t");
_builder.append(".getDirection() + \" for \" + ");
String _defaultVariableName_7 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_7, "\t");
_builder.append(".getName() + \" interupted!\\n\" + e.getMessage());");
_builder.newLineIfNotEmpty();
_builder.append("\t");
String _defaultVariableName_8 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder.append(_defaultVariableName_8, "\t");
_builder.append(".setExecutionDone(true);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
CharSequence _xifexpression_3 = null;
SignalActionTypeEnum _actionType_1 = interchange.getActionType();
boolean _equals_3 = Objects.equal(_actionType_1, SignalActionTypeEnum.DATAIMPORT);
if (_equals_3) {
CharSequence _xifexpression_4 = null;
if ((Objects.equal(interchange.getDataRef(), this.baseInterchange(watcher)) && interchange.getDataRef().isDeleteFileAfterImport())) {
StringConcatenation _builder_5 = new StringConcatenation();
_builder_5.append("renameFile(getTriggerfile(), \"");
String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
_builder_5.append(_firstUpper);
_builder_5.append("WatcherJob\");");
_xifexpression_4 = _builder_5;
} else {
CharSequence _xifexpression_5 = null;
boolean _isDeleteFileAfterImport = interchange.getDataRef().isDeleteFileAfterImport();
if (_isDeleteFileAfterImport) {
StringConcatenation _builder_6 = new StringConcatenation();
_builder_6.append("renameFile(Paths.get(");
String _defaultVariableName_9 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_6.append(_defaultVariableName_9);
_builder_6.append(".getFileURL().toString()), \"");
String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName());
_builder_6.append(_firstUpper_1);
_builder_6.append("WatcherJob\");");
_xifexpression_5 = _builder_6;
}
_xifexpression_4 = _xifexpression_5;
}
_xifexpression_3 = _xifexpression_4;
}
_builder.append(_xifexpression_3, "\t");
_builder.newLineIfNotEmpty();
_builder.append("}");
_builder.newLine();
CharSequence _xifexpression_6 = null;
SignalActionTypeEnum _actionType_2 = interchange.getActionType();
boolean _equals_4 = Objects.equal(_actionType_2, SignalActionTypeEnum.DATAIMPORT);
if (_equals_4) {
StringConcatenation _builder_7 = new StringConcatenation();
_builder_7.append("return Paths.get(");
String _defaultVariableName_10 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_7.append(_defaultVariableName_10);
_builder_7.append(".getFileURL().getPath().substring(1));");
_xifexpression_6 = _builder_7;
} else {
StringConcatenation _builder_8 = new StringConcatenation();
_builder_8.append("return ");
String _defaultVariableName_11 = this.df.getDefaultVariableName(interchange.getDataRef());
_builder_8.append(_defaultVariableName_11);
_builder_8.append(".getExportPath();");
_xifexpression_6 = _builder_8;
}
_builder.append(_xifexpression_6);
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_2);
};
JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, operationname, this._typeReferenceBuilder.typeRef(Path.class), _function_1);
_xifexpression = this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
}
return _xifexpression;
}
/**
* Creates the fields for all watcher and scheduler files.
*/
public void toFields(final JvmGenericType type, final SignalDefinition signal) {
JvmField field = null;
final Procedure1<JvmField> _function = (JvmField it) -> {
it.setVisibility(JvmVisibility.PRIVATE);
};
field = this._jvmTypesBuilder.toField(signal, "thread", this._typeReferenceBuilder.typeRef(Thread.class), _function);
EList<JvmMember> _members = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
field = this._jvmTypesBuilder.toField(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_1 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
field = this._jvmTypesBuilder.toField(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_2 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
field = this._jvmTypesBuilder.toField(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_3 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
field = this._jvmTypesBuilder.toField(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_4 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
if ((signal instanceof SignalScheduler)) {
field = this._jvmTypesBuilder.toField(signal, "scheduler", this._typeReferenceBuilder.typeRef(Scheduler.class));
StringConcatenation _builder = new StringConcatenation();
_builder.append("the scheduler instance");
this._jvmTypesBuilder.setDocumentation(field, _builder.toString());
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_5 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
}
}
public String getActivate(final SignalDefinition signal) {
String signalName = "";
if ((signal instanceof SignalWatcher)) {
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
signalName = _plus;
} else {
if ((signal instanceof SignalScheduler)) {
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
signalName = _plus_1;
}
}
StringConcatenation _builder = new StringConcatenation();
_builder.append("thread = new Thread(\"");
_builder.append(signalName);
_builder.append("\") {");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("@Override");
_builder.newLine();
_builder.append("\t");
_builder.append("public void run() {");
_builder.newLine();
_builder.append("\t\t");
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("setMaxParallelThreadsCount(getHandlerPropertyFromConfigurationFile(SignalConstants.MAXPARALLELTHREADCOUNT_NAME));");
_builder_1.newLine();
_builder_1.append("initMaxThreadCount();");
_builder_1.newLine();
_builder_1.append("startWatcherJobsHandling();");
_builder_1.newLine();
_builder_1.append("executeWatcherService();");
_builder_1.newLine();
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("setMaxParallelThreadsCount(getHandlerPropertyFromConfigurationFile(SignalConstants.MAXPARALLELTHREADCOUNT_NAME));");
_builder_2.newLine();
_builder_2.append("initMaxThreadCount();");
_builder_2.newLine();
_builder_2.append("setExecutorService(\"");
_builder_2.append(signalName);
_builder_2.append("\");");
_builder_2.newLineIfNotEmpty();
_builder_2.append("executeSchedulerService();");
_builder_2.newLine();
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression, "\t\t");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("};");
_builder.newLine();
_builder.append("thread.start();");
return _builder.toString();
}
public String getExecuteService(final SignalDefinition signal) {
String signalName = "";
if ((signal instanceof SignalWatcher)) {
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
signalName = _plus;
} else {
if ((signal instanceof SignalScheduler)) {
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
signalName = _plus_1;
}
}
StringConcatenation _builder = new StringConcatenation();
CharSequence _xifexpression = null;
if ((signal instanceof SignalWatcher)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("try {");
_builder_1.newLine();
_builder_1.append("\t");
String _registerHandlerPathToWatch = this.registerHandlerPathToWatch(((SignalWatcher)signal));
_builder_1.append(_registerHandlerPathToWatch, "\t");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t");
_builder_1.append("log.info(\"");
_builder_1.append(signalName, "\t");
_builder_1.append(" service successfully started.\");");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t");
_builder_1.append("processEvents();");
_builder_1.newLine();
_builder_1.append("} catch (Exception e) {");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("log.error(\"");
_builder_1.append(signalName, "\t");
_builder_1.append(" service interrupted due to: \", e);");
_builder_1.newLineIfNotEmpty();
_builder_1.append("}");
_xifexpression = _builder_1;
} else {
CharSequence _xifexpression_1 = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("scheduler = createScheduler(\"");
_builder_2.append(signalName, "\t");
_builder_2.append("\");");
_builder_2.newLineIfNotEmpty();
_builder_2.append("\t");
_builder_2.append("scheduleAllJobs();");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("startScheduler();");
_builder_2.newLine();
_builder_2.append("} catch (Exception e) {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("log.error(\"");
_builder_2.append(signalName, "\t");
_builder_2.append(" service interrupted due to: \", e);");
_builder_2.newLineIfNotEmpty();
_builder_2.append("}");
_xifexpression_1 = _builder_2;
}
_xifexpression = _xifexpression_1;
}
_builder.append(_xifexpression);
return _builder.toString();
}
public String getDeactivate(final SignalDefinition signal) {
String signalName = "";
if ((signal instanceof SignalWatcher)) {
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
signalName = _plus;
} else {
if ((signal instanceof SignalScheduler)) {
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
signalName = _plus_1;
}
}
StringConcatenation _builder = new StringConcatenation();
CharSequence _xifexpression = null;
if ((signal instanceof SignalScheduler)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("try {");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("if(scheduler != null){");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("shutdownScheduler(false);");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("thread.join();");
_builder_1.newLine();
_builder_1.append("} catch (Exception e) {");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("log.error(\"");
_builder_1.append(signalName, "\t");
_builder_1.append(" service shortly interrupted ...\", e);");
_builder_1.newLineIfNotEmpty();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("log.info(\"");
_builder_1.append(signalName);
_builder_1.append(" service shutted down...\");");
_builder_1.newLineIfNotEmpty();
_xifexpression = _builder_1;
} else {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("closeWatcher();");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("stopWatcherJobsHandling();");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("thread.join();");
_builder_2.newLine();
_builder_2.append("} catch (Exception e) {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("log.error(\"");
_builder_2.append(signalName, "\t");
_builder_2.append(" service shortly interrupted ...\", e);");
_builder_2.newLineIfNotEmpty();
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("log.info(\"");
_builder_2.append(signalName);
_builder_2.append(" service shutted down...\");");
_builder_2.newLineIfNotEmpty();
_xifexpression = _builder_2;
}
_builder.append(_xifexpression);
_builder.newLineIfNotEmpty();
return _builder.toString();
}
public String scheduleAllJobs(final SignalScheduler scheduler) {
String _firstUpper = StringExtensions.toFirstUpper(scheduler.getName());
String signalName = (_firstUpper + "Scheduler");
int index = 1;
StringConcatenation _builder = new StringConcatenation();
_builder.append("log.info(\"");
_builder.append(signalName);
_builder.append(" - Starting scheduling all jobs ...\");");
_builder.newLineIfNotEmpty();
_builder.append("Trigger trigger; JobDetail job; Date ft; String expr; int hour; int min; int dOw; int dOm; String key;String keyOne;String keyTwo;");
_builder.newLine();
String result = _builder.toString();
SchedulerType _schedulertype = scheduler.getSchedulertype();
if ((_schedulertype instanceof CronScheduler)) {
SchedulerType _schedulertype_1 = scheduler.getSchedulertype();
CronScheduler type = ((CronScheduler) _schedulertype_1);
if ((((type != null) && (type.getExpression() != null)) && (!type.getExpression().isEmpty()))) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("job = createDataTransferJob(\"");
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_1.append(_fullyQualifiedName);
_builder_1.append("SchedulerJob");
_builder_1.append(index);
_builder_1.append("\", \"jobs\", \"-\", ");
boolean _equals = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
_builder_1.append(_equals);
_builder_1.append(", \"");
QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_1.append(_fullyQualifiedName_1);
_builder_1.append("\", ");
_builder_1.append(signalName);
_builder_1.append(".class);");
_builder_1.newLineIfNotEmpty();
_builder_1.append("key = \"");
QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_1.append(_fullyQualifiedName_2);
_builder_1.append("Scheduler\" + SignalConstants.CRON_SCHEDULER;");
_builder_1.newLineIfNotEmpty();
_builder_1.append("expr = getCronExpressionValue(getHandlerPropertyFromConfigurationFile(key));");
_builder_1.newLine();
_builder_1.append("trigger = createCronTrigger(\"");
QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_1.append(_fullyQualifiedName_3);
_builder_1.append("SchedulerTrigger");
_builder_1.append(index);
_builder_1.append("\", \"triggers\", expr != null ? expr : \"");
String _expression = type.getExpression();
_builder_1.append(_expression);
_builder_1.append("\");");
_builder_1.newLineIfNotEmpty();
_builder_1.append("ft = scheduleJob(job, trigger);");
_builder_1.newLine();
_builder_1.append("log.info(\"");
String _firstUpper_1 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_1.append(_firstUpper_1);
_builder_1.append("SchedulerJob");
_builder_1.append(index);
_builder_1.append(" has been scheduled to run at: \" + ft);");
_builder_1.newLineIfNotEmpty();
result = result.concat(_builder_1.toString());
}
} else {
SchedulerType _schedulertype_2 = scheduler.getSchedulertype();
if ((_schedulertype_2 instanceof HourlyScheduler)) {
SchedulerType _schedulertype_3 = scheduler.getSchedulertype();
HourlyScheduler type_1 = ((HourlyScheduler) _schedulertype_3);
if (((type_1 != null) && (type_1.getMinute() > (-1)))) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("job = createDataTransferJob(\"");
QualifiedName _fullyQualifiedName_4 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_2.append(_fullyQualifiedName_4);
_builder_2.append("SchedulerJob");
_builder_2.append(index);
_builder_2.append("\", \"jobs\", \"-\", ");
boolean _equals_1 = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
_builder_2.append(_equals_1);
_builder_2.append(", \"");
QualifiedName _fullyQualifiedName_5 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_2.append(_fullyQualifiedName_5);
_builder_2.append("\", ");
_builder_2.append(signalName);
_builder_2.append(".class);");
_builder_2.newLineIfNotEmpty();
_builder_2.append("key = \"");
QualifiedName _fullyQualifiedName_6 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_2.append(_fullyQualifiedName_6);
_builder_2.append("Scheduler\" + SignalConstants.HOURLY_SCHEDULER;");
_builder_2.newLineIfNotEmpty();
_builder_2.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(key));");
_builder_2.newLine();
_builder_2.append("trigger = createHourlyTrigger(\"");
QualifiedName _fullyQualifiedName_7 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_2.append(_fullyQualifiedName_7);
_builder_2.append("SchedulerTrigger");
_builder_2.append(index);
_builder_2.append("\", \"triggers\", min>=0? min : ");
int _minute = type_1.getMinute();
_builder_2.append(_minute);
_builder_2.append(");");
_builder_2.newLineIfNotEmpty();
_builder_2.append("ft = scheduleJob(job, trigger);");
_builder_2.newLine();
_builder_2.append("log.info(\"");
String _firstUpper_2 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_2.append(_firstUpper_2);
_builder_2.append("SchedulerJob");
_builder_2.append(index);
_builder_2.append(" has been scheduled to run at: \" + ft);");
_builder_2.newLineIfNotEmpty();
result = result.concat(_builder_2.toString());
}
} else {
SchedulerType _schedulertype_4 = scheduler.getSchedulertype();
if ((_schedulertype_4 instanceof DailyScheduler)) {
SchedulerType _schedulertype_5 = scheduler.getSchedulertype();
DailyScheduler type_2 = ((DailyScheduler) _schedulertype_5);
if ((((type_2 != null) && (type_2.getHour() > (-1))) && (type_2.getMinute() > (-1)))) {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append("job = createDataTransferJob(\"");
QualifiedName _fullyQualifiedName_8 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_3.append(_fullyQualifiedName_8);
_builder_3.append("SchedulerJob");
_builder_3.append(index);
_builder_3.append("\", \"jobs\", \"-\", ");
boolean _equals_2 = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
_builder_3.append(_equals_2);
_builder_3.append(", \"");
QualifiedName _fullyQualifiedName_9 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_3.append(_fullyQualifiedName_9);
_builder_3.append("\", ");
_builder_3.append(signalName);
_builder_3.append(".class);");
_builder_3.newLineIfNotEmpty();
_builder_3.append("key = \"");
QualifiedName _fullyQualifiedName_10 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_3.append(_fullyQualifiedName_10);
_builder_3.append("Scheduler\" + SignalConstants.DAILY_SCHEDULER_HOUR;");
_builder_3.newLineIfNotEmpty();
_builder_3.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(key));");
_builder_3.newLine();
_builder_3.append("keyOne = \"");
QualifiedName _fullyQualifiedName_11 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_3.append(_fullyQualifiedName_11);
_builder_3.append("Scheduler\" + SignalConstants.DAILY_SCHEDULER_MIN;");
_builder_3.newLineIfNotEmpty();
_builder_3.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyOne));");
_builder_3.newLine();
_builder_3.append("trigger = createDailyTriggerAtHourandMins(\"");
QualifiedName _fullyQualifiedName_12 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_3.append(_fullyQualifiedName_12);
_builder_3.append("SchedulerTrigger");
_builder_3.append(index);
_builder_3.append("\", \"triggers\", hour>=0 ? hour : ");
int _hour = type_2.getHour();
_builder_3.append(_hour);
_builder_3.append(", min>=0 ? min : ");
int _minute_1 = type_2.getMinute();
_builder_3.append(_minute_1);
_builder_3.append(");");
_builder_3.newLineIfNotEmpty();
_builder_3.append("ft = scheduleJob(job, trigger);");
_builder_3.newLine();
_builder_3.append("log.info(\"");
String _firstUpper_3 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_3.append(_firstUpper_3);
_builder_3.append("SchedulerJob");
_builder_3.append(index);
_builder_3.append(" has been scheduled to run at: \" + ft);");
_builder_3.newLineIfNotEmpty();
result = result.concat(_builder_3.toString());
}
} else {
SchedulerType _schedulertype_6 = scheduler.getSchedulertype();
if ((_schedulertype_6 instanceof WeeklyScheduler)) {
SchedulerType _schedulertype_7 = scheduler.getSchedulertype();
WeeklyScheduler type_3 = ((WeeklyScheduler) _schedulertype_7);
if (((((type_3 != null) && (type_3.getDayofweek() != null)) && (type_3.getHour() > (-1))) &&
(type_3.getMinute() > (-1)))) {
StringConcatenation _builder_4 = new StringConcatenation();
_builder_4.append("job = createDataTransferJob(\"");
QualifiedName _fullyQualifiedName_13 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_4.append(_fullyQualifiedName_13);
_builder_4.append("SchedulerJob");
_builder_4.append(index);
_builder_4.append("\", \"jobs\", \"-\", ");
boolean _equals_3 = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
_builder_4.append(_equals_3);
_builder_4.append(", \"");
QualifiedName _fullyQualifiedName_14 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_4.append(_fullyQualifiedName_14);
_builder_4.append("\", ");
_builder_4.append(signalName);
_builder_4.append(".class);");
_builder_4.newLineIfNotEmpty();
_builder_4.append("key = \"");
QualifiedName _fullyQualifiedName_15 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_4.append(_fullyQualifiedName_15);
_builder_4.append("Scheduler\" + SignalConstants.WEEKLY_SCHEDULER_DAYOFWEEK;");
_builder_4.newLineIfNotEmpty();
_builder_4.append("dOw = getDayOfWeekValue(getHandlerPropertyFromConfigurationFile(key));");
_builder_4.newLine();
_builder_4.append("keyOne = \"");
QualifiedName _fullyQualifiedName_16 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_4.append(_fullyQualifiedName_16);
_builder_4.append("Scheduler\" + SignalConstants.WEEKLY_SCHEDULER_HOUR;");
_builder_4.newLineIfNotEmpty();
_builder_4.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));");
_builder_4.newLine();
_builder_4.append("keyTwo = \"");
QualifiedName _fullyQualifiedName_17 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_4.append(_fullyQualifiedName_17);
_builder_4.append("Scheduler\" + SignalConstants.WEEKLY_SCHEDULER_MIN;");
_builder_4.newLineIfNotEmpty();
_builder_4.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));");
_builder_4.newLine();
_builder_4.append("trigger = createWeeklyTriggerOnDayAndHourAndMinute(\"");
QualifiedName _fullyQualifiedName_18 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_4.append(_fullyQualifiedName_18);
_builder_4.append("SchedulerTrigger");
_builder_4.append(index);
_builder_4.append("\", \"triggers\", dOw>0? dOw : ");
int _ordinal = type_3.getDayofweek().ordinal();
_builder_4.append(_ordinal);
_builder_4.append(", hour>=0 ? hour : ");
int _hour_1 = type_3.getHour();
_builder_4.append(_hour_1);
_builder_4.append(", min>=0 ? min : ");
int _minute_2 = type_3.getMinute();
_builder_4.append(_minute_2);
_builder_4.append(");");
_builder_4.newLineIfNotEmpty();
_builder_4.append("ft = scheduleJob(job, trigger);");
_builder_4.newLine();
_builder_4.append("log.info(\"");
String _firstUpper_4 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_4.append(_firstUpper_4);
_builder_4.append("SchedulerJob");
_builder_4.append(index);
_builder_4.append(" has been scheduled to run at: \" + ft);");
_builder_4.newLineIfNotEmpty();
result = result.concat(_builder_4.toString());
}
} else {
SchedulerType _schedulertype_8 = scheduler.getSchedulertype();
if ((_schedulertype_8 instanceof MonthlyScheduler)) {
SchedulerType _schedulertype_9 = scheduler.getSchedulertype();
MonthlyScheduler type_4 = ((MonthlyScheduler) _schedulertype_9);
if (((((type_4 != null) && (type_4.getDayofmonth() > (-1))) && (type_4.getHour() > (-1))) && (type_4.getMinute() > (-1)))) {
StringConcatenation _builder_5 = new StringConcatenation();
_builder_5.append("job = createDataTransferJob(\"");
QualifiedName _fullyQualifiedName_19 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_5.append(_fullyQualifiedName_19);
_builder_5.append("SchedulerJob");
_builder_5.append(index);
_builder_5.append("\", \"jobs\", \"-\", ");
boolean _equals_4 = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
_builder_5.append(_equals_4);
_builder_5.append(", \"");
QualifiedName _fullyQualifiedName_20 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_5.append(_fullyQualifiedName_20);
_builder_5.append("\", ");
_builder_5.append(signalName);
_builder_5.append(".class);");
_builder_5.newLineIfNotEmpty();
_builder_5.append("key = \"");
QualifiedName _fullyQualifiedName_21 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_5.append(_fullyQualifiedName_21);
_builder_5.append("Scheduler\" + SignalConstants.MONTHLY_SCHEDULER_DAYOFMONTH;");
_builder_5.newLineIfNotEmpty();
_builder_5.append("dOm = getDayOfMonthValue(getHandlerPropertyFromConfigurationFile(key));");
_builder_5.newLine();
_builder_5.append("keyOne = \"");
QualifiedName _fullyQualifiedName_22 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_5.append(_fullyQualifiedName_22);
_builder_5.append("Scheduler\" + SignalConstants.MONTHLY_SCHEDULER_HOUR;");
_builder_5.newLineIfNotEmpty();
_builder_5.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));");
_builder_5.newLine();
_builder_5.append("keyTwo = \"");
QualifiedName _fullyQualifiedName_23 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_5.append(_fullyQualifiedName_23);
_builder_5.append("Scheduler\" + SignalConstants.MONTHLY_SCHEDULER_MIN;");
_builder_5.newLineIfNotEmpty();
_builder_5.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));");
_builder_5.newLine();
_builder_5.append("trigger = createMonthlyTriggerOnDayAndHourAndMinute(\"");
QualifiedName _fullyQualifiedName_24 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
_builder_5.append(_fullyQualifiedName_24);
_builder_5.append("SchedulerTrigger");
_builder_5.append(index);
_builder_5.append("\", \"triggers\", dOm>0? dOm : ");
int _dayofmonth = type_4.getDayofmonth();
_builder_5.append(_dayofmonth);
_builder_5.append(", hour>=0 ? hour : ");
int _hour_2 = type_4.getHour();
_builder_5.append(_hour_2);
_builder_5.append(", min>=0 ? min : ");
int _minute_3 = type_4.getMinute();
_builder_5.append(_minute_3);
_builder_5.append(");");
_builder_5.newLineIfNotEmpty();
_builder_5.append("ft = scheduleJob(job, trigger);");
_builder_5.newLine();
_builder_5.append("log.info(\"");
String _firstUpper_5 = StringExtensions.toFirstUpper(scheduler.getName());
_builder_5.append(_firstUpper_5);
_builder_5.append("SchedulerJob");
_builder_5.append(index);
_builder_5.append(" has been scheduled to run at: \" + ft);");
_builder_5.newLineIfNotEmpty();
result = result.concat(_builder_5.toString());
}
}
}
}
}
}
index++;
StringConcatenation _builder_6 = new StringConcatenation();
_builder_6.append("log.info(\"");
_builder_6.append(signalName);
_builder_6.append(" - Scheduling all jobs done.\");");
result = result.concat(_builder_6.toString());
return result;
}
public String registerHandlerPathToWatch(final SignalWatcher signal) {
String result = "";
DataInterchange interchange = this.baseInterchange(signal);
if ((interchange != null)) {
String modelurl = this.df.getDataInterchangeDirectoryUrlPath(interchange);
StringConcatenation _builder = new StringConcatenation();
_builder.append("registerUrl(getHandlerPropertyFromConfigurationFile(\"");
String _name = interchange.getName();
_builder.append(_name);
_builder.append("-import\"),\"");
_builder.append(modelurl);
_builder.append("\");");
_builder.newLineIfNotEmpty();
result = result.concat(_builder.toString());
}
return result;
}
/**
* Special function to read signal (watcher or scheduler) properties
* from configuration files.
*/
public String handlerPropertyFromConfigurationFile(final SignalDefinition signal) {
if ((signal != null)) {
String signalName = "";
if ((signal instanceof SignalWatcher)) {
String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
String _plus = (_firstUpper + "Watcher");
signalName = _plus;
} else {
if ((signal instanceof SignalScheduler)) {
String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
String _plus_1 = (_firstUpper_1 + "Scheduler");
signalName = _plus_1;
}
}
StringConcatenation _builder = new StringConcatenation();
_builder.append("if (propertyname != null) {");
_builder.newLine();
_builder.append("\t");
String _configFileURL = this.df.getConfigFileURL(signal.getInterchangegroup().getName());
_builder.append(_configFileURL, "\t");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("File file = new File(url);");
_builder.newLine();
_builder.append("\t");
_builder.append("if (file.exists()) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("try {");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("FileInputStream fileInput = new FileInputStream(file);");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("Properties properties = new Properties();");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("properties.loadFromXML(fileInput);");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("fileInput.close();");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("String value = properties.getProperty(propertyname);");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("if (value != null) {");
_builder.newLine();
_builder.append("\t\t\t\t");
_builder.append("if (log.isDebugEnabled()) {");
_builder.newLine();
_builder.append("\t\t\t\t\t");
_builder.append("log.debug(\"");
_builder.append(signalName, "\t\t\t\t\t");
_builder.append(" - getHandlerPropertyFromConfigurationFile propertyname[\" + propertyname");
_builder.newLineIfNotEmpty();
_builder.append("\t\t\t\t\t\t\t");
_builder.append("+ \"] -> value [\" + value + \"]\");");
_builder.newLine();
_builder.append("\t\t\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t\t\t\t");
_builder.append("return value;");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t\t");
_builder.append("} catch (IOException e) {");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("StringWriter sw = new StringWriter();");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("e.printStackTrace(new PrintWriter(sw));");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("log.error(\"");
_builder.append(signalName, "\t\t\t");
_builder.append(" - Error during getHandlerPropertyFromConfigurationFile of propertyname: [\" + propertyname");
_builder.newLineIfNotEmpty();
_builder.append("\t\t\t\t\t");
_builder.append("+ \"] ... {}\", sw.toString());");
_builder.newLine();
_builder.append("\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.append("if (log.isDebugEnabled()) {");
_builder.newLine();
_builder.append("\t");
_builder.append("log.debug(\"");
_builder.append(signalName, "\t");
_builder.append(" - getHandlerPropertyFromConfigurationFile propertyname[\" + propertyname + \"] -> value [null] because the given path\"");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("+ \" in \'Window->Preferences->OSBP Application Configuration->External Data Sources->DataInterchange Settings\' is non-existing or the propertyname is not defined.\");");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.append("return null;");
_builder.newLine();
return _builder.toString();
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("return \"\";");
return _builder_1.toString();
}
public boolean hasSchedulers(final SignalPackage pck) {
if ((((pck != null) && (pck.getSignals() != null)) && (!pck.getSignals().isEmpty()))) {
EList<SignalDefinition> _signals = pck.getSignals();
for (final SignalDefinition signal : _signals) {
if ((signal instanceof SignalScheduler)) {
return true;
}
}
}
return false;
}
public boolean hasWatchers(final SignalPackage pck) {
if ((((pck != null) && (pck.getSignals() != null)) && (!pck.getSignals().isEmpty()))) {
EList<SignalDefinition> _signals = pck.getSignals();
for (final SignalDefinition signal : _signals) {
if ((signal instanceof SignalScheduler)) {
return true;
}
}
}
return false;
}
public int getSignalCount(final SignalPackage pck, final boolean isWatcher) {
if ((((pck != null) && (pck.getSignals() != null)) && (!pck.getSignals().isEmpty()))) {
int count = 0;
EList<SignalDefinition> _signals = pck.getSignals();
for (final SignalDefinition signal : _signals) {
if ((isWatcher && (signal instanceof SignalWatcher))) {
count++;
} else {
if (((!isWatcher) && (signal instanceof SignalScheduler))) {
count++;
}
}
}
return count;
}
return (-1);
}
public boolean hasFunctionWithFile(final SignalDefinition signal) {
if ((((signal != null) && (signal.getTasks() != null)) && (!signal.getTasks().isEmpty()))) {
EList<SignalTask> _tasks = signal.getTasks();
for (final SignalTask task : _tasks) {
if ((task instanceof SignalFunction)) {
if ((((SignalFunction)task).isOnExportFile() || ((SignalFunction)task).isOnImportFile())) {
return true;
}
}
}
}
return false;
}
/**
* Gives back the default interchange unit.
*/
public DataInterchange baseInterchange(final SignalDefinition signal) {
if ((signal instanceof SignalWatcher)) {
DataInterchange _defaultInterchange = ((SignalWatcher)signal).getDefaultInterchange();
boolean _tripleNotEquals = (_defaultInterchange != null);
if (_tripleNotEquals) {
return ((SignalWatcher)signal).getDefaultInterchange();
} else {
if (((((SignalWatcher)signal).getTasks() != null) && (!((SignalWatcher)signal).getTasks().isEmpty()))) {
EList<SignalTask> _tasks = ((SignalWatcher)signal).getTasks();
for (final SignalTask task : _tasks) {
if ((task instanceof SignalDatainterchange)) {
boolean _isBaseinterchange = ((SignalDatainterchange)task).isBaseinterchange();
if (_isBaseinterchange) {
return ((SignalDatainterchange)task).getDataRef();
}
}
}
}
}
}
return null;
}
public int definedBaseInterchangeCount(final SignalDefinition signal) {
int count = 0;
EList<SignalTask> _tasks = signal.getTasks();
for (final SignalTask task : _tasks) {
if ((task instanceof SignalDatainterchange)) {
boolean _isBaseinterchange = ((SignalDatainterchange)task).isBaseinterchange();
if (_isBaseinterchange) {
count++;
}
}
}
return count;
}
public SignalDatainterchange definedBaseInterchange(final SignalDefinition signal) {
EList<SignalTask> _tasks = signal.getTasks();
for (final SignalTask task : _tasks) {
if ((task instanceof SignalDatainterchange)) {
boolean _isBaseinterchange = ((SignalDatainterchange)task).isBaseinterchange();
if (_isBaseinterchange) {
return ((SignalDatainterchange)task);
}
}
}
return null;
}
public int taskCount(final SignalDefinition signal, final boolean interchange) {
int count = 0;
EList<SignalTask> _tasks = signal.getTasks();
for (final SignalTask task : _tasks) {
if (interchange) {
if ((task instanceof SignalDatainterchange)) {
count++;
}
} else {
if ((task instanceof SignalFunction)) {
count++;
}
}
}
return count;
}
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());
}
}
}