package com.robotoworks.mechanoid.ops.generator;
import com.robotoworks.mechanoid.ops.generator.Extensions;
import com.robotoworks.mechanoid.ops.opServiceModel.Model;
import com.robotoworks.mechanoid.ops.opServiceModel.ServiceBlock;
import com.robotoworks.mechanoid.text.Strings;
import org.eclipse.xtend2.lib.StringConcatenation;
@SuppressWarnings("all")
public class ServiceGenerator {
public CharSequence generate(final Model model) {
StringConcatenation _builder = new StringConcatenation();
ServiceBlock svc = model.getService();
_builder.newLineIfNotEmpty();
_builder.append("/*");
_builder.newLine();
_builder.append(" ");
_builder.append("* Generated by Robotoworks Mechanoid");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append("package ");
String _packageName = model.getPackageName();
_builder.append(_packageName, "");
_builder.append(";");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("import com.robotoworks.mechanoid.ops.OperationProcessor;");
_builder.newLine();
_builder.append("import com.robotoworks.mechanoid.ops.OperationService;");
_builder.newLine();
_builder.append("import com.robotoworks.mechanoid.ops.OperationServiceConfiguration;");
_builder.newLine();
_builder.newLine();
_builder.append("import ");
String _packageName_1 = model.getPackageName();
_builder.append(_packageName_1, "");
_builder.append(".");
String _name = svc.getName();
String _pascalize = Strings.pascalize(_name);
_builder.append(_pascalize, "");
_builder.append("Processor;");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("public abstract class Abstract");
String _name_1 = svc.getName();
String _formatServiceName = Extensions.formatServiceName(_name_1);
_builder.append(_formatServiceName, "");
_builder.append(" extends OperationService {");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("public static final OperationServiceConfiguration CONFIG = new ");
String _name_2 = svc.getName();
String _formatServiceName_1 = Extensions.formatServiceName(_name_2);
_builder.append(_formatServiceName_1, "\t");
_builder.append("Configuration();");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("@Override");
_builder.newLine();
_builder.append("\t");
_builder.append("protected OperationProcessor createProcessor() {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("return new ");
String _name_3 = svc.getName();
String _pascalize_1 = Strings.pascalize(_name_3);
_builder.append(_pascalize_1, "\t\t");
_builder.append("Processor(this);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("public Abstract");
String _name_4 = svc.getName();
String _formatServiceName_2 = Extensions.formatServiceName(_name_4);
_builder.append(_formatServiceName_2, "\t");
_builder.append("(boolean enableLogging) {");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
_builder.append("super(enableLogging);");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
return _builder;
}
public CharSequence generateStub(final Model model) {
StringConcatenation _builder = new StringConcatenation();
ServiceBlock svc = model.getService();
_builder.newLineIfNotEmpty();
_builder.append("/*");
_builder.newLine();
_builder.append(" ");
_builder.append("* Generated by Robotoworks Mechanoid");
_builder.newLine();
_builder.append(" ");
_builder.append("*/");
_builder.newLine();
_builder.append("package ");
String _packageName = model.getPackageName();
_builder.append(_packageName, "");
_builder.append(";");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("import ");
String _packageName_1 = model.getPackageName();
_builder.append(_packageName_1, "");
_builder.append(".Abstract");
String _name = svc.getName();
String _formatServiceName = Extensions.formatServiceName(_name);
_builder.append(_formatServiceName, "");
_builder.append(";");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("public class ");
String _name_1 = svc.getName();
String _formatServiceName_1 = Extensions.formatServiceName(_name_1);
_builder.append(_formatServiceName_1, "");
_builder.append(" extends Abstract");
String _name_2 = svc.getName();
String _formatServiceName_2 = Extensions.formatServiceName(_name_2);
_builder.append(_formatServiceName_2, "");
_builder.append(" {");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("public ");
String _name_3 = svc.getName();
String _formatServiceName_3 = Extensions.formatServiceName(_name_3);
_builder.append(_formatServiceName_3, "\t");
_builder.append("() {");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
_builder.append("super(false);");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
return _builder;
}
}