Generate several files [message #1730381] |
Mon, 25 April 2016 07:16  |
Eclipse User |
|
|
|
Hey guys! I need some help, i hope you can enlight me 
Im sitll working on my generator, i want to generate more than one file, but i dont really understand. I have checked the example generator codes, but i didnt get the point. I assume its more complicated compared to what i need. So, can you give me an example of code for this easy problem:
I want one file named "FirstFile", which contains "I am the first generated file!!", and one file named "SecondFile", which contains "I am the second file!!" , in the extend file. This is the code ive got:
package org.eclipse.vorto.example
import org.eclipse.core.runtime.IProgressMonitor
import org.eclipse.vorto.codegen.api.ICodeGenerator
import org.eclipse.vorto.codegen.api.tasks.Generated
import org.eclipse.vorto.codegen.api.tasks.ICodeGeneratorTask
import org.eclipse.vorto.codegen.api.tasks.IOutputter
import org.eclipse.vorto.codegen.api.tasks.eclipse.EclipseProjectGenerator
import org.eclipse.vorto.core.api.model.informationmodel.InformationModel
class MyGenerator implements ICodeGenerator<InformationModel> {
override generate(InformationModel infomodel, IProgressMonitor monitor) {
new EclipseProjectGenerator(infomodel.getName()+"Device").addTask(new EmptyJavaGeneratorTask()).javaNature().generate(infomodel,monitor);
}
public static class EmptyJavaGeneratorTask implements ICodeGeneratorTask<InformationModel> {
public override generate(InformationModel infomodel, IOutputter outputter) {
outputter.output(new Generated(infomodel.getName(),null, getContent));
}
def String getContent() {
return '//"I am the first generated file!!';
}
}
override getName() {
return "FirstFile";
}
}
|
|
|
Re: Generate several files [message #1730391 is a reply to message #1730381] |
Mon, 25 April 2016 07:44  |
Eclipse User |
|
|
|
Hello Komaromi,
you can create a code generator task for every file that you want to create. The generator class could look like follows:
public class MyGenerator implements IVortoCodeGenerator {
public IGenerationResult generate(InformationModel infomodel, IMappingContext mappingContext) {
GenerationResultZip zipOutputter = new GenerationResultZip(infomodel,getServiceKey());
ChainedCodeGeneratorTask<InformationModel> generator = new ChainedCodeGeneratorTask<InformationModel>();
generator.addTask(new EmptyJavaGeneratorTask();
generator.addTask(new EmptyJavaGeneratorTask2();
generator.generate(infomodel ,mappingContext, zipOutputter);
return zipOutputter;
}
@Override
public String getServiceKey() {
return "MyGenerator";
}
}
One of the related tasks could look like this:
public class EmptyJavaGeneratorTask extends
AbstractTemplateGeneratorTask<InformationModel> {
@Override
public String getFileName(InformationModel im) {
return im.getName();
}
@Override
public String getPath(InformationModel im) {
return "myPath";
}
@Override
public ITemplate<InformationModel> getTemplate() {
return new EmptyTemplate1();
}
}
And a related template xtend-class could look like this:
class EmptyTemplate1 implements ITemplate<InformationModel>{
override getContent(InformationModel im) {
'''
Hello World
'''
}
}
Please let me know if this helps!
Cheers,
Olaf
|
|
|
Powered by
FUDForum. Page generated in 0.06256 seconds