I have text files to be parsed (i.e., convert to Java Bean Instances),
Formed the required XText grammar.
My XText Grammar:
grammar org.eclipse.xtext.example.Domainmodel with org.eclipse.xtext.common.Terminals
generate domainmodel "http://www.eclipse.org/xtext/example/Domainmodel"
Model:
greetings+=Greeting*;
Greeting:
'Hello' name =ID '!' ;
Able to generate the Greeting and Model Java Bean Classes, By running " Generate XText Artifacts " Generated Bean classes are given below
Greeting.java
package org.eclipse.xtext.example.domainmodel;
import org.eclipse.emf.ecore.EObject;
public interface Greeting extends EObject
{
String getName();
void setName(String value);
}
Model.java
package org.eclipse.xtext.example.domainmodel;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
public interface Model extends EObject
{
EList<Greeting> getGreetings();
}
GenerateDomainmodel.mwe2 generated.
Able to generate Resource using the .genmodel, as given in the below Main (Partial) class
package org.eclipse.xtext.example;
import java.io.File;
import java.util.List;
import java.util.Map;
import javax.tools.Diagnostic;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage;
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
import org.eclipse.emf.codegen.ecore.genmodel.impl.GenModelImpl;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.Diagnostician;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl;
import org.eclipse.emf.mwe2.language.mwe2.Mwe2Package;
import org.eclipse.emf.mwe2.runtime.workflow.IWorkflow;
import org.eclipse.xtext.AbstractElement;
import org.eclipse.xtext.example.domainmodel.DomainmodelFactory;
import org.eclipse.xtext.example.domainmodel.Greeting;
import org.eclipse.xtext.example.domainmodel.Model;
import org.eclipse.xtext.example.domainmodel.impl.DomainmodelFactoryImpl;
import org.eclipse.xtext.example.domainmodel.impl.DomainmodelPackageImpl;
import org.eclipse.xtext.example.domainmodel.impl.GreetingImpl;
public class Main {
public static void main(String args[]){
new DomainmodelStandaloneSetup().createInjectorAndDoEMFRegistration();
ResourceSet rs = new ResourceSetImpl();
rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put("genmodel", new XMIResourceFactoryImpl());
EPackage.Registry.INSTANCE.put(GenModelPackage.eNS_URI, GenModelPackage.eINSTANCE);
File f = new File("/data/TASKS/4. 2016-2017_PS1/XTEXT/ECLIPSE WORKSPACE 1/org.eclipse.xtext.example.domainmodel/model/generated/Domainmodel.genmodel");
System.out.println(f.canRead());
Resource resource = rs.getResource(URI.createURI(f.toURI().toString()), true);
}
}
Having done all this, How to generate the Greeting class instances using the below text input file.
Hello Ramasamy !
Hello Govinda Govinda !
Hello Kuppusamy !
Hello Karuppusamy !
I am in need of Model Instance, which contains 4 No. of Greeting Instances with the following values as a name.
- Greeting instance1 -> name ( " Ramasamy " )
- Greeting instance1 -> name ( " Govinda Govinda " )
- Greeting instance1 -> name ( " Kuppusamy " )
- Greeting instance1 -> name ( " Karuppusamy " )
My Main program has to generate the Greeting instances using the above text input file, Can somebody help me out on this
Or is there any other way to achieve?
Here is a sample for such a main
updated to your code it would look like