|
|
Re: Splitting to multiple resources [message #703722 is a reply to message #703716] |
Wed, 27 July 2011 21:13 |
|
Hi,
and if you have cross refs you have to split resource creation and saving
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.common.util.URI;
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.EcoreUtil;
import org.xtext.example.mydsl.MyDslStandaloneSetup;
import org.xtext.example.mydsl.myDsl.Module;
import org.xtext.example.mydsl.myDsl.MyDslFactory;
public class Main {
public static void main(String[] args) {
org.xtext.example.mydsl.myDsl.Package p = MyDslFactory.eINSTANCE
.createPackage();
p.setName("p1");
Module m1 = MyDslFactory.eINSTANCE.createModule();
Module m2 = MyDslFactory.eINSTANCE.createModule();
Module m3 = MyDslFactory.eINSTANCE.createModule();
m1.setName("m1");
m2.setName("m2");
m3.setName("m3");
m1.setRefs(m2);
m2.setRefs(m3);
m3.setRefs(m1);
p.getModules().add(m1);
p.getModules().add(m2);
p.getModules().add(m3);
MyDslStandaloneSetup.doSetup();
ResourceSet resourceSet = new ResourceSetImpl();
List<Resource> tbs = new ArrayList<Resource>();
List<Module> modules = new ArrayList<Module>();
modules.addAll(p.getModules());
for (Module moduleElement : modules) {
Resource resource = resourceSet.createResource(URI
.createURI(moduleElement.getName() + ".mydsl"));
org.xtext.example.mydsl.myDsl.Package container = MyDslFactory.eINSTANCE
.createPackage();
container.setName(moduleElement.getName() + "_package");
container.getModules().add(moduleElement);
resource.getContents().add(container);
tbs.add(resource);
}
for (Resource r : tbs) {
try {
r.save(null);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
~Christian
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.04838 seconds