1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
package org.eclipse.qvtd.cs2as.compiler.tests.models.example2.java;
import java.io.IOException;
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.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.ocl.pivot.internal.resource.StandaloneProjectMap;
import org.eclipse.qvtd.xtext.qvtbase.tests.utilities.TestsXMLUtil;
import example2.classescs.ClassCS;
import example2.classescs.ClassescsFactory;
import example2.classescs.PackageCS;
import example2.classescs.PathElementCS;
import example2.classescs.PathNameCS;
import example2.classescs.RootCS;
public class ClassesCSModelsGen {
private static URI TESTS_BASE_URI = URI.createPlatformResourceURI("org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models", true);
private static int NUM_ROOT_PACKAGES = 4;
private static int NUM_SUB_PACKAGES = 4;
private static int NUM_CLASS_PER_PACKAGE = 6;
private static int NUM_PACKAGE_PER_PACKAGE = 5;
public static void main(String[] args) {
ClassesCSModelsGen mGen = new ClassesCSModelsGen();
URI baseURI = TESTS_BASE_URI.appendSegments(new String[]{"example2", "samples"});
ResourceSet rSet = new ResourceSetImpl();
StandaloneProjectMap.getAdapter(rSet);
rSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl());
Resource resource = rSet.createResource(baseURI.appendSegment("model7_input.xmi"));
resource.getContents().add(mGen.createRootCS(NUM_ROOT_PACKAGES, NUM_SUB_PACKAGES, NUM_CLASS_PER_PACKAGE, NUM_PACKAGE_PER_PACKAGE));
try {
resource.save(TestsXMLUtil.defaultSavingOptions);
} catch (IOException e) {
e.printStackTrace();
}
}
public RootCS createRootCS(int nRootPackages, int maxDepth, int nClassesPPackage, int nPackagesPPackage) {
RootCS r = ClassescsFactory.eINSTANCE.createRootCS();
for (int i = 1; i <= nRootPackages; i++) {
r.getOwnedPackages().add(createPackage(String.valueOf(i), nClassesPPackage, nPackagesPPackage, maxDepth));
}
return r;
}
private PackageCS createPackage(String numberHint, int maxDepth, int nClassesPPackage, int nPackagesPPackage) {
PackageCS p = ClassescsFactory.eINSTANCE.createPackageCS();
p.setName("P"+numberHint);
for (int i = 1; i <= nClassesPPackage; i++) {
p.getOwnedClasses().add(createClass(numberHint + String.valueOf(i)));
}
if (maxDepth > 1) {
for (int i = 1; i <= nPackagesPPackage; i++) {
p.getOwnedPackages().add(createPackage(numberHint + String.valueOf(i), maxDepth -1, nClassesPPackage, nPackagesPPackage));
}
}
return p;
}
private ClassCS createClass(String numberHint) {
ClassCS c = ClassescsFactory.eINSTANCE.createClassCS();
c.setName("C"+numberHint);;
// We set the reference to the class in the root package
if (numberHint.length() > 2) {
PathNameCS pName = ClassescsFactory.eINSTANCE.createPathNameCS();
PathElementCS pElement= ClassescsFactory.eINSTANCE.createPathElementCS();
pElement.setName("C" + numberHint.substring(0, 1) + numberHint.substring(numberHint.length()-1));
pName.getPath().add(pElement);
c.setExtends(pName);
}
return c;
}
}
|