io.pelle.mango.dsl.generator.MangoGenerator Maven / Gradle / Ivy
package io.pelle.mango.dsl.generator;
import com.google.common.collect.Iterables;
import com.google.inject.Inject;
import io.pelle.mango.dsl.generator.GeneratorConstants;
import io.pelle.mango.dsl.generator.VOMapperGenerator;
import io.pelle.mango.dsl.generator.client.ClientGenerator;
import io.pelle.mango.dsl.generator.server.ServerGenerator;
import io.pelle.mango.dsl.generator.server.SpringGenerator;
import io.pelle.mango.dsl.generator.util.NameUtils;
import io.pelle.mango.dsl.generator.xml.XmlGenerator;
import io.pelle.mango.dsl.mango.Model;
import org.eclipse.emf.common.util.TreeIterator;
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.Extension;
import org.eclipse.xtext.xbase.lib.IteratorExtensions;
@SuppressWarnings("all")
public class MangoGenerator implements IGenerator {
@Inject
@Extension
private VOMapperGenerator _vOMapperGenerator;
@Inject
@Extension
private NameUtils _nameUtils;
@Inject
@Extension
private ClientGenerator clientGenerator;
@Inject
@Extension
private ServerGenerator serverGenerator;
@Inject
@Extension
private XmlGenerator xmlGenerator;
@Inject
@Extension
private SpringGenerator _springGenerator;
public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
this.clientGenerator.doGenerate(resource, fsa);
this.serverGenerator.doGenerate(resource, fsa);
this.xmlGenerator.doGenerate(resource, fsa);
TreeIterator _allContents = resource.getAllContents();
Iterable _iterable = IteratorExtensions.toIterable(_allContents);
Iterable _filter = Iterables.filter(_iterable, Model.class);
for (final Model model : _filter) {
{
String _springDBApplicationContextFullQualifiedFileName = this._nameUtils.springDBApplicationContextFullQualifiedFileName(model);
CharSequence _compileSpringDBApplicationContext = this._springGenerator.compileSpringDBApplicationContext(model);
fsa.generateFile(_springDBApplicationContextFullQualifiedFileName, GeneratorConstants.SERVER_GEN_OUTPUT, _compileSpringDBApplicationContext);
String _springPersistenceXMLFullQualifiedFileName = this._nameUtils.springPersistenceXMLFullQualifiedFileName(model);
CharSequence _compilePersistenceXml = this._springGenerator.compilePersistenceXml(model);
fsa.generateFile(_springPersistenceXMLFullQualifiedFileName, GeneratorConstants.SERVER_GEN_OUTPUT, _compilePersistenceXml);
String _baseApplicationContextFullQualifiedFileName = this._nameUtils.baseApplicationContextFullQualifiedFileName(model);
CharSequence _compileBaseApplicationContext = this._springGenerator.compileBaseApplicationContext(model);
fsa.generateFile(_baseApplicationContextFullQualifiedFileName, GeneratorConstants.SERVER_GEN_OUTPUT, _compileBaseApplicationContext);
String _voMapperFullQualifiedFileName = this._nameUtils.voMapperFullQualifiedFileName(model);
CharSequence _compileVOMapper = this._vOMapperGenerator.compileVOMapper(model);
fsa.generateFile(_voMapperFullQualifiedFileName, GeneratorConstants.SERVER_GEN_OUTPUT, _compileVOMapper);
}
}
}
}