/**
* generated by Xtext
*/
package com.robotoworks.mechanoid.ops.generator;
import com.google.inject.Inject;
import com.robotoworks.mechanoid.generator.MechanoidOutputConfigurationProvider;
import com.robotoworks.mechanoid.ops.generator.Extensions;
import com.robotoworks.mechanoid.ops.generator.OperationGenerator;
import com.robotoworks.mechanoid.ops.generator.OperationProcessorGenerator;
import com.robotoworks.mechanoid.ops.generator.OperationRegistryGenerator;
import com.robotoworks.mechanoid.ops.generator.ServiceConfigurationGenerator;
import com.robotoworks.mechanoid.ops.generator.ServiceGenerator;
import com.robotoworks.mechanoid.ops.opServiceModel.Model;
import com.robotoworks.mechanoid.ops.opServiceModel.Operation;
import com.robotoworks.mechanoid.ops.opServiceModel.ServiceBlock;
import com.robotoworks.mechanoid.text.Strings;
import java.util.function.Consumer;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtext.generator.IFileSystemAccess;
import org.eclipse.xtext.generator.IGenerator;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
@SuppressWarnings("all")
public class OpServiceModelGenerator implements IGenerator {
@Inject
private OperationGenerator mOperationGenerator;
@Inject
private ServiceConfigurationGenerator mServiceConfigGenerator;
@Inject
private ServiceGenerator mServiceGenerator;
@Inject
private OperationProcessorGenerator mOperationProcessorGenerator;
@Inject
private OperationRegistryGenerator mOperationRegistryGenerator;
public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
EList<EObject> _contents = resource.getContents();
EObject _head = IterableExtensions.<EObject>head(_contents);
Model model = ((Model) _head);
this.generateOperationProcessor(resource, fsa);
this.generateService(resource, fsa);
this.generateServiceConfiguration(resource, fsa);
this.generateOperationRegistry(resource, fsa);
ServiceBlock _service = model.getService();
EList<Operation> _ops = _service.getOps();
final Consumer<Operation> _function = new Consumer<Operation>() {
public void accept(final Operation item) {
OpServiceModelGenerator.this.generateOps(resource, fsa, item);
}
};
_ops.forEach(_function);
}
public void generateOps(final Resource resource, final IFileSystemAccess fsa, final Operation op) {
EList<EObject> _contents = resource.getContents();
EObject _head = IterableExtensions.<EObject>head(_contents);
Model model = ((Model) _head);
String _packageName = model.getPackageName();
String _name = op.getName();
String _pascalize = Strings.pascalize(_name);
String _concat = "Abstract".concat(_pascalize);
String _concat_1 = _concat.concat("Operation");
String _resolveFileName = Strings.resolveFileName(_packageName, _concat_1);
CharSequence _generate = this.mOperationGenerator.generate(model, op);
fsa.generateFile(_resolveFileName, _generate);
String _packageName_1 = model.getPackageName();
String _name_1 = op.getName();
String _pascalize_1 = Strings.pascalize(_name_1);
String _concat_2 = _pascalize_1.concat("Operation");
String _resolveFileName_1 = Strings.resolveFileName(_packageName_1, _concat_2);
CharSequence _generateStub = this.mOperationGenerator.generateStub(model, op);
fsa.generateFile(_resolveFileName_1,
MechanoidOutputConfigurationProvider.DEFAULT_STUB_OUTPUT, _generateStub);
}
public void generateOperationRegistry(final Resource resource, final IFileSystemAccess fsa) {
EList<EObject> _contents = resource.getContents();
EObject _head = IterableExtensions.<EObject>head(_contents);
Model model = ((Model) _head);
String _packageName = model.getPackageName();
ServiceBlock _service = model.getService();
String _name = _service.getName();
String _formatServiceName = Extensions.formatServiceName(_name);
String _concat = "Abstract".concat(_formatServiceName);
String _concat_1 = _concat.concat("OperationConfigurationRegistry");
String _resolveFileName = Strings.resolveFileName(_packageName, _concat_1);
CharSequence _generate = this.mOperationRegistryGenerator.generate(model);
fsa.generateFile(_resolveFileName, _generate);
String _packageName_1 = model.getPackageName();
ServiceBlock _service_1 = model.getService();
String _name_1 = _service_1.getName();
String _formatServiceName_1 = Extensions.formatServiceName(_name_1);
String _concat_2 = _formatServiceName_1.concat("OperationConfigurationRegistry");
String _resolveFileName_1 = Strings.resolveFileName(_packageName_1, _concat_2);
CharSequence _generateStub = this.mOperationRegistryGenerator.generateStub(model);
fsa.generateFile(_resolveFileName_1,
MechanoidOutputConfigurationProvider.DEFAULT_STUB_OUTPUT, _generateStub);
}
public void generateServiceConfiguration(final Resource resource, final IFileSystemAccess fsa) {
EList<EObject> _contents = resource.getContents();
EObject _head = IterableExtensions.<EObject>head(_contents);
Model model = ((Model) _head);
String _packageName = model.getPackageName();
ServiceBlock _service = model.getService();
String _name = _service.getName();
String _pascalize = Strings.pascalize(_name);
String _concat = "Abstract".concat(_pascalize);
String _concatOnce = Strings.concatOnce(_concat, "Service");
String _concat_1 = _concatOnce.concat("Configuration");
String _resolveFileName = Strings.resolveFileName(_packageName, _concat_1);
CharSequence _generate = this.mServiceConfigGenerator.generate(model);
fsa.generateFile(_resolveFileName, _generate);
String _packageName_1 = model.getPackageName();
ServiceBlock _service_1 = model.getService();
String _name_1 = _service_1.getName();
String _pascalize_1 = Strings.pascalize(_name_1);
String _concatOnce_1 = Strings.concatOnce(_pascalize_1, "Service");
String _concat_2 = _concatOnce_1.concat("Configuration");
String _resolveFileName_1 = Strings.resolveFileName(_packageName_1, _concat_2);
CharSequence _generateStub = this.mServiceConfigGenerator.generateStub(model);
fsa.generateFile(_resolveFileName_1,
MechanoidOutputConfigurationProvider.DEFAULT_STUB_OUTPUT, _generateStub);
}
public void generateService(final Resource resource, final IFileSystemAccess fsa) {
EList<EObject> _contents = resource.getContents();
EObject _head = IterableExtensions.<EObject>head(_contents);
Model model = ((Model) _head);
String _packageName = model.getPackageName();
ServiceBlock _service = model.getService();
String _name = _service.getName();
String _pascalize = Strings.pascalize(_name);
String _concat = "Abstract".concat(_pascalize);
String _concatOnce = Strings.concatOnce(_concat, "Service");
String _resolveFileName = Strings.resolveFileName(_packageName, _concatOnce);
CharSequence _generate = this.mServiceGenerator.generate(model);
fsa.generateFile(_resolveFileName, _generate);
String _packageName_1 = model.getPackageName();
ServiceBlock _service_1 = model.getService();
String _name_1 = _service_1.getName();
String _pascalize_1 = Strings.pascalize(_name_1);
String _concatOnce_1 = Strings.concatOnce(_pascalize_1, "Service");
String _resolveFileName_1 = Strings.resolveFileName(_packageName_1, _concatOnce_1);
CharSequence _generateStub = this.mServiceGenerator.generateStub(model);
fsa.generateFile(_resolveFileName_1,
MechanoidOutputConfigurationProvider.DEFAULT_STUB_OUTPUT, _generateStub);
}
public void generateOperationProcessor(final Resource resource, final IFileSystemAccess fsa) {
EList<EObject> _contents = resource.getContents();
EObject _head = IterableExtensions.<EObject>head(_contents);
Model model = ((Model) _head);
String _packageName = model.getPackageName();
ServiceBlock _service = model.getService();
String _name = _service.getName();
String _pascalize = Strings.pascalize(_name);
String _concat = "Abstract".concat(_pascalize);
String _concat_1 = _concat.concat("Processor");
String _resolveFileName = Strings.resolveFileName(_packageName, _concat_1);
CharSequence _generate = this.mOperationProcessorGenerator.generate(model);
fsa.generateFile(_resolveFileName, _generate);
String _packageName_1 = model.getPackageName();
ServiceBlock _service_1 = model.getService();
String _name_1 = _service_1.getName();
String _pascalize_1 = Strings.pascalize(_name_1);
String _concat_2 = _pascalize_1.concat("Processor");
String _resolveFileName_1 = Strings.resolveFileName(_packageName_1, _concat_2);
CharSequence _generateStub = this.mOperationProcessorGenerator.generateStub(model);
fsa.generateFile(_resolveFileName_1,
MechanoidOutputConfigurationProvider.DEFAULT_STUB_OUTPUT, _generateStub);
}
}