package org.eclipselabs.spray.generator.graphiti.templates;
import com.google.inject.Inject;
import org.eclipse.xtext.xbase.XExpression;
import org.eclipse.xtext.xbase.compiler.ImportManager;
import org.eclipse.xtext.xtend2.lib.StringConcatenation;
import org.eclipselabs.spray.generator.graphiti.util.GeneratorUtil;
import org.eclipselabs.spray.generator.graphiti.util.SprayCompiler;
import org.eclipselabs.spray.mm.spray.Text;
import org.eclipselabs.spray.mm.spray.extensions.SprayExtensions;
@SuppressWarnings("all")
public class TemplateUtil {
@Inject
private SprayExtensions e1;
@Inject
private SprayCompiler compiler;
public StringConcatenation header(final Object templateClass) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("/*************************************************************************************");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("* Generated ");
String _timestamp = GeneratorUtil.timestamp();
_builder.append(_timestamp, " ");
_builder.append("by Spray ");
Class<? extends Object> _class = templateClass.getClass();
String _simpleName = _class.getSimpleName();
_builder.append(_simpleName, " ");
_builder.append(".xtend");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("* This file contains generated and should not be changed.");
_builder.newLine();
_builder.append(" ");
_builder.append("* Use the extension point class (the direct subclass of this class) to add manual code");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("*************************************************************************************/");
_builder.newLine();
return _builder;
}
public StringConcatenation extensionHeader(final Object templateClass) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("/*************************************************************************************");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("* Generated ");
String _timestamp = GeneratorUtil.timestamp();
_builder.append(_timestamp, " ");
_builder.append("by Spray ");
Class<? extends Object> _class = templateClass.getClass();
String _simpleName = _class.getSimpleName();
_builder.append(_simpleName, " ");
_builder.append(".xtend");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("* ");
_builder.newLine();
_builder.append(" ");
_builder.append("* This file is an extension point: copy to \"src\" folder to manually add code to this");
_builder.newLine();
_builder.append(" ");
_builder.append("* extension point.");
_builder.newLine();
_builder.append(" ");
_builder.append("*");
_builder.newLine();
_builder.append(" ");
_builder.append("*************************************************************************************/");
_builder.newLine();
return _builder;
}
public StringConcatenation pluginHeader(final Object templateClass) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("<!--");
_builder.newLine();
_builder.append(" ");
_builder.append("Generated ");
String _timestamp = GeneratorUtil.timestamp();
_builder.append(_timestamp, " ");
_builder.append("by Spray ");
Class<? extends Object> _class = templateClass.getClass();
String _simpleName = _class.getSimpleName();
_builder.append(_simpleName, " ");
_builder.append(".xtend");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("This file will be generated oinly once if it need to be regenerated, remove this file.");
_builder.newLine();
_builder.append(" ");
_builder.newLine();
_builder.append("-->");
_builder.newLine();
return _builder;
}
/**
* Generate the fulle expression to calculate the value of a Text, existing of string literals and navigation expressions
*/
public StringConcatenation valueGenerator(final Text text, final String metaClassVariable) {
try {
{
this.compiler.setMetaClassVariable(metaClassVariable);
ImportManager _importManager = new ImportManager(false);
String _compile = this.compiler.compile(text, _importManager);
final String body = _compile;
StringConcatenation _stringConcatenation = new StringConcatenation();
final StringConcatenation result = _stringConcatenation;
result.append(body);
return result;
}
} finally {
this.compiler.setMetaClassVariable(null);
}
}
/**
* Generate a unique key for the full expression to be used in map storage
*/
public String keyGenerator(final Text text) {
XExpression _value = text.getValue();
String _string = _value.toString();
return _string;
}
}