Skip to content

Commit a08ffcc

Browse files
committed
TSchemaSupplier implementation
Signed-off-by: dbulahov <[email protected]>
1 parent bbf7553 commit a08ffcc

File tree

15 files changed

+1469
-8
lines changed
  • instance
    • emf
      • serializer
      • tutorial/cube
        • calculatedmember.color/src/main/java/org/eclipse/daanse/rolap/mapping/instance/emf/tutorial/cube/calculatedmember/color
        • calculatedmember.intro/src/main/java/org/eclipse/daanse/rolap/mapping/instance/emf/tutorial/cube/calculatedmember/intro
        • calculatedmember.property/src/main/java/org/eclipse/daanse/rolap/mapping/instance/emf/tutorial/cube/calculatedmember/property
        • dimension.intro/src/main/java/org/eclipse/daanse/rolap/mapping/instance/emf/tutorial/cube/dimension/intro
        • hierarchy.hasall/src/main/java/org/eclipse/daanse/rolap/mapping/instance/emf/tutorial/cube/hierarchy/hasall
        • hierarchy.query.join.base/src/main/java/org/eclipse/daanse/rolap/mapping/instance/emf/tutorial/cube/hierarchy/query/join/base
        • measure.multiple/src/main/java/org/eclipse/daanse/rolap/mapping/instance/emf/tutorial/cube/measure/multiple
        • minimal/src/main/java/org/eclipse/daanse/rolap/mapping/instance/emf/tutorial/cube/minimal
  • model
  • verifyer/basic

15 files changed

+1469
-8
lines changed

instance/emf/serializer/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323

2424
<properties>
2525
<gecko.emf.version>6.2.0</gecko.emf.version>
26-
<emf.common.version>2.30.0</emf.common.version>
27-
<emf.ecore.version>2.36.0</emf.ecore.version>
28-
<emf.ecore.xmi.version>2.37.0</emf.ecore.xmi.version>
26+
<emf.common.version>2.44.0</emf.common.version>
27+
<emf.ecore.version>2.41.0</emf.ecore.version>
28+
<emf.ecore.xmi.version>2.39.0</emf.ecore.xmi.version>
2929
</properties>
3030

3131
<dependencies>

instance/emf/serializer/src/test/java/org/eclipse/daanse/rolap/mapping/instance/emf/serializer/integration/ResourceSetWriteReadTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
import java.util.zip.ZipOutputStream;
3939

4040
import org.eclipse.daanse.rolap.mapping.model.provider.CatalogMappingSupplier;
41+
import org.eclipse.daanse.xmla.csdl.model.v2.bi.BiPackage;
42+
import org.eclipse.daanse.xmla.csdl.model.v2.edm.EdmPackage;
43+
import org.eclipse.daanse.xmla.csdl.model.v2.edm.util.EdmResourceFactoryImpl;
4144
import org.eclipse.daanse.rolap.mapping.model.AbstractElement;
4245
import org.eclipse.daanse.rolap.mapping.model.Catalog;
4346
import org.eclipse.daanse.rolap.mapping.model.Documentation;
@@ -52,6 +55,7 @@
5255
import org.eclipse.emf.ecore.EStructuralFeature;
5356
import org.eclipse.emf.ecore.resource.Resource;
5457
import org.eclipse.emf.ecore.resource.ResourceSet;
58+
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
5559
import org.eclipse.emf.ecore.util.EcoreUtil;
5660
import org.eclipse.emf.ecore.xmi.XMLResource;
5761
import org.gecko.emf.osgi.annotation.require.RequireEMF;
@@ -159,6 +163,13 @@ public void writePopulation(@InjectBundleContext BundleContext bc,
159163

160164
}
161165

166+
@Test
167+
public void test() throws IOException {
168+
org.eclipse.daanse.rolap.mapping.instance.emf.tutorial.cube.calculatedmember.color.TSchemaSupplier supplier = new org.eclipse.daanse.rolap.mapping.instance.emf.tutorial.cube.calculatedmember.color.TSchemaSupplier();
169+
String csdl = serializeToXml(supplier.get());
170+
System.out.println(csdl);
171+
}
172+
162173
Map<Documentation, EObject> map = new HashMap<Documentation, EObject>();
163174

164175
private void serializeCatalog(ResourceSet resourceSet, StringBuilder parentReadme,
@@ -647,4 +658,30 @@ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOEx
647658
}
648659
});
649660
}
661+
662+
private String serializeToXml(EObject eObject) throws IOException {
663+
ResourceSetImpl resourceSet = new ResourceSetImpl();
664+
665+
// Register the EDM resource factory that respects ExtendedMetaData
666+
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xml", new EdmResourceFactoryImpl());
667+
668+
// Register packages
669+
resourceSet.getPackageRegistry().put(EdmPackage.eNS_URI, EdmPackage.eINSTANCE);
670+
resourceSet.getPackageRegistry().put(BiPackage.eNS_URI, BiPackage.eINSTANCE);
671+
Resource resource = resourceSet.createResource(URI.createURI("temp.xml"));
672+
resource.getContents().add(eObject);
673+
674+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
675+
Map<String, Object> options = new HashMap<>();
676+
options.put(XMLResource.OPTION_ENCODING, "UTF-8");
677+
options.put(XMLResource.OPTION_FORMATTED, Boolean.TRUE);
678+
options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
679+
680+
resource.save(baos, options);
681+
682+
resource.getContents().clear();
683+
resourceSet.getResources().remove(resource);
684+
685+
return baos.toString("UTF-8");
686+
}
650687
}

instance/emf/serializer/test.bndrun

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
bnd.identity;id='org.eclipse.daanse.rolap.mapping.instance.emf.complex.expressivenames',\
127127
bnd.identity;id='org.eclipse.daanse.rolap.mapping.instance.emf.complex.population.jena',\
128128
bnd.identity;id='org.eclipse.daanse.rolap.mapping.instance.emf.tutorial.level.unique',\
129-
bnd.identity;id='org.eclipse.daanse.rolap.mapping.instance.emf.complex.foodmart'
129+
bnd.identity;id='org.eclipse.daanse.rolap.mapping.instance.emf.complex.foodmart',\
130130
bnd.identity;id='org.eclipse.daanse.rolap.mapping.instance.emf.complex.steelwheels',\
131131
bnd.identity;id='org.eclipse.daanse.rolap.mapping.instance.emf.complex.parcel'
132132
# -runbundles is calculated by the bnd-resolver-maven-plugin
@@ -146,10 +146,13 @@
146146
org.eclipse.daanse.olap.api;version='[0.0.1,0.0.2)',\
147147
org.eclipse.daanse.olap.check.model.emf;version='[0.0.1,0.0.2)',\
148148
org.eclipse.daanse.olap.check.runtime;version='[0.0.1,0.0.2)',\
149+
org.eclipse.daanse.olap.csdl.api;version='[0.0.1,0.0.2)',\
149150
org.eclipse.daanse.rolap.mapping.instance.emf.complex.expressivenames;version='[0.0.1,0.0.2)',\
150151
org.eclipse.daanse.rolap.mapping.instance.emf.complex.foodmart;version='[0.0.1,0.0.2)',\
152+
org.eclipse.daanse.rolap.mapping.instance.emf.complex.parcel;version='[0.0.1,0.0.2)',\
151153
org.eclipse.daanse.rolap.mapping.instance.emf.complex.population.jena;version='[0.0.1,0.0.2)',\
152154
org.eclipse.daanse.rolap.mapping.instance.emf.complex.school;version='[0.0.1,0.0.2)',\
155+
org.eclipse.daanse.rolap.mapping.instance.emf.complex.steelwheels;version='[0.0.1,0.0.2)',\
153156
org.eclipse.daanse.rolap.mapping.instance.emf.serializer;version='[0.0.1,0.0.2)',\
154157
org.eclipse.daanse.rolap.mapping.instance.emf.serializer-tests;version='[0.0.1,0.0.2)',\
155158
org.eclipse.daanse.rolap.mapping.instance.emf.tutorial.access.cataloggrand;version='[0.0.1,0.0.2)',\
@@ -228,9 +231,14 @@
228231
org.eclipse.daanse.rolap.mapping.instance.emf.tutorial.writeback.withoutdimension;version='[0.0.1,0.0.2)',\
229232
org.eclipse.daanse.rolap.mapping.model;version='[0.0.1,0.0.2)',\
230233
org.eclipse.daanse.sql.guard.api;version='[0.0.1,0.0.2)',\
231-
org.eclipse.emf.common;version='[2.30.0,2.30.1)',\
232-
org.eclipse.emf.ecore;version='[2.36.0,2.36.1)',\
233-
org.eclipse.emf.ecore.xmi;version='[2.37.0,2.37.1)',\
234+
org.eclipse.daanse.xmla.csdl.model.v2.an;version='[0.0.1,0.0.2)',\
235+
org.eclipse.daanse.xmla.csdl.model.v2.bi;version='[0.0.1,0.0.2)',\
236+
org.eclipse.daanse.xmla.csdl.model.v2.cg;version='[0.0.1,0.0.2)',\
237+
org.eclipse.daanse.xmla.csdl.model.v2.edm;version='[0.0.1,0.0.2)',\
238+
org.eclipse.emf.common;version='[2.44.0,2.44.1)',\
239+
org.eclipse.emf.ecore;version='[2.41.0,2.41.1)',\
240+
org.eclipse.emf.ecore.xmi;version='[2.39.0,2.39.1)',\
241+
org.eclipse.fennec.emf.osgi.api;version='[1.0.0,1.0.1)',\
234242
org.gecko.emf.osgi.component;version='[6.2.0,6.2.1)',\
235243
org.opentest4j;version='[1.3.0,1.3.1)',\
236244
org.osgi.service.cm;version='[1.6.1,1.6.2)',\
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
/*
2+
* Copyright (c) 2025 Contributors to the Eclipse Foundation.
3+
*
4+
* This program and the accompanying materials are made
5+
* available under the terms of the Eclipse Public License 2.0
6+
* which is available at https://www.eclipse.org/legal/epl-2.0/
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
*
12+
*/
13+
package org.eclipse.daanse.rolap.mapping.instance.emf.tutorial.cube.calculatedmember.color;
14+
15+
import org.eclipse.daanse.olap.csdl.api.OlapTSchemaSupplier;
16+
import org.eclipse.daanse.xmla.csdl.model.v2.bi.BiFactory;
17+
import org.eclipse.daanse.xmla.csdl.model.v2.bi.TEntityContainer;
18+
import org.eclipse.daanse.xmla.csdl.model.v2.bi.TEntitySet;
19+
import org.eclipse.daanse.xmla.csdl.model.v2.bi.TEntityType;
20+
import org.eclipse.daanse.xmla.csdl.model.v2.bi.THierarchy;
21+
import org.eclipse.daanse.xmla.csdl.model.v2.bi.TLevel;
22+
import org.eclipse.daanse.xmla.csdl.model.v2.bi.TMeasure;
23+
import org.eclipse.daanse.xmla.csdl.model.v2.edm.EdmFactory;
24+
import org.eclipse.daanse.xmla.csdl.model.v2.edm.EntityContainerType;
25+
import org.eclipse.daanse.xmla.csdl.model.v2.edm.EntitySetType;
26+
import org.eclipse.daanse.xmla.csdl.model.v2.edm.TEntityProperty;
27+
import org.eclipse.daanse.xmla.csdl.model.v2.edm.TSchema;
28+
import org.osgi.service.component.annotations.Component;
29+
30+
@Component(service = OlapTSchemaSupplier.class)
31+
public class TSchemaSupplier implements OlapTSchemaSupplier {
32+
private static EdmFactory edmFactory = EdmFactory.eINSTANCE;
33+
private static BiFactory biFactory = BiFactory.eINSTANCE;
34+
35+
@Override
36+
public TSchema get() {
37+
TSchema schema = edmFactory.createTSchema();
38+
schema.setNamespace("Model");
39+
schema.setAlias("Model");
40+
41+
EntityContainerType container = edmFactory.createEntityContainerType();
42+
container.setName("Daanse Tutorial - Cube Calculated Member Color");
43+
44+
TEntityContainer biContainer = biFactory.createTEntityContainer();
45+
biContainer.setCaption("Cube CalculatedMember with different colors");
46+
biContainer.setCulture("de-DE");
47+
container.setBiEntityContainer(biContainer);
48+
49+
EntitySetType entitySetTheHierarchy = edmFactory.createEntitySetType();
50+
entitySetTheHierarchy.setName("theHierarchy");
51+
entitySetTheHierarchy.setEntityType("Model.theHierarchy");
52+
53+
TEntitySet biEntitySetTheHierarchy = biFactory.createTEntitySet();
54+
biEntitySetTheHierarchy.setCaption("theHierarchy");
55+
56+
entitySetTheHierarchy.setBiEntitySet(biEntitySetTheHierarchy);
57+
58+
container.getEntitySet().add(entitySetTheHierarchy);
59+
60+
EntitySetType entitySet1 = edmFactory.createEntitySetType();
61+
entitySet1.setName("Measure-Sum");
62+
entitySet1.setEntityType("Model.Measure-Sum");
63+
64+
TEntitySet biEntitySet1 = biFactory.createTEntitySet();
65+
biEntitySet1.setCaption("Measure-Sum");
66+
entitySet1.setBiEntitySet(biEntitySet1);
67+
68+
container.getEntitySet().add(entitySet1);
69+
70+
EntitySetType entitySet2 = edmFactory.createEntitySetType();
71+
entitySet2.setName("Measure-Count");
72+
entitySet2.setEntityType("Model.Measure-Count");
73+
74+
TEntitySet biEntitySet2 = biFactory.createTEntitySet();
75+
biEntitySet2.setCaption("Measure-Count");
76+
entitySet2.setBiEntitySet(biEntitySet2);
77+
78+
container.getEntitySet().add(entitySet2);
79+
80+
EntitySetType entitySet3 = edmFactory.createEntitySetType();
81+
entitySet3.setName("Calculated_Member1");
82+
entitySet3.setEntityType("Model.Calculated_Member1");
83+
84+
TEntitySet biEntitySet3 = biFactory.createTEntitySet();
85+
biEntitySet3.setCaption("Calculated Member 1");
86+
entitySet3.setBiEntitySet(biEntitySet3);
87+
88+
container.getEntitySet().add(entitySet3);
89+
90+
EntitySetType entitySet4 = edmFactory.createEntitySetType();
91+
entitySet4.setName("Calculated_Member2");
92+
entitySet4.setEntityType("Model.Calculated_Member2");
93+
94+
TEntitySet biEntitySet4 = biFactory.createTEntitySet();
95+
biEntitySet4.setCaption("Calculated Member 2");
96+
entitySet4.setBiEntitySet(biEntitySet4);
97+
98+
container.getEntitySet().add(entitySet4);
99+
100+
schema.getEntityContainer().add(container);
101+
102+
org.eclipse.daanse.xmla.csdl.model.v2.edm.TEntityType theHierarchyType = edmFactory.createTEntityType();
103+
theHierarchyType.setName("theHierarchy");
104+
105+
TLevel tLevel = biFactory.createTLevel();
106+
tLevel.setName("theLevel");
107+
tLevel.setCaption("theLevel");
108+
tLevel.setReferenceName("[theDimension].[theHierarchy].[theLevel]");
109+
110+
THierarchy theHierarchyTHierarchy = biFactory.createTHierarchy();
111+
theHierarchyTHierarchy.setCaption("theHierarchy");
112+
theHierarchyTHierarchy.setName("theHierarchy");
113+
theHierarchyTHierarchy.setReferenceName("[theDimension].[theHierarchy]");
114+
theHierarchyTHierarchy.getLevel().add(tLevel);
115+
116+
TEntityType theHierarchyTEntityType = biFactory.createTEntityType();
117+
theHierarchyTEntityType.setContents("theHierarchy");
118+
theHierarchyTEntityType.getHierarchy().add(theHierarchyTHierarchy);
119+
120+
theHierarchyType.setBiEntityType(theHierarchyTEntityType);
121+
122+
TEntityProperty theHierarchyProperty = edmFactory.createTEntityProperty();
123+
theHierarchyProperty.setName("theHierarchy");
124+
theHierarchyProperty.setType("String");
125+
theHierarchyProperty.setNullable(false);
126+
127+
theHierarchyType.getProperty().add(theHierarchyProperty);
128+
129+
schema.getEntityType().add(theHierarchyType);
130+
131+
org.eclipse.daanse.xmla.csdl.model.v2.edm.TEntityType measureSumType = edmFactory.createTEntityType();
132+
measureSumType.setName("Measure-Sum");
133+
134+
TEntityType biMeasureSumType = biFactory.createTEntityType();
135+
biMeasureSumType.setContents("Measure-Sum");
136+
measureSumType.setBiEntityType(biMeasureSumType);
137+
138+
TEntityProperty measureSumProperty = edmFactory.createTEntityProperty();
139+
measureSumProperty.setName("Measure-Sum");
140+
measureSumProperty.setType("Int32");
141+
measureSumProperty.setNullable(false);
142+
143+
TMeasure biMeasureSumMeasure = biFactory.createTMeasure();
144+
biMeasureSumMeasure.setCaption("Measure-Sum");
145+
biMeasureSumMeasure.setHidden(false);
146+
biMeasureSumMeasure.setReferenceName("[measures].[Measure-Sum]");
147+
measureSumProperty.setBiMeasure(biMeasureSumMeasure);
148+
149+
measureSumType.getProperty().add(measureSumProperty);
150+
151+
schema.getEntityType().add(measureSumType);
152+
153+
org.eclipse.daanse.xmla.csdl.model.v2.edm.TEntityType measureCountType = edmFactory.createTEntityType();
154+
measureCountType.setName("Measure-Count");
155+
156+
TEntityType biMeasureCountType = biFactory.createTEntityType();
157+
biMeasureCountType.setContents("Measure-Count");
158+
measureCountType.setBiEntityType(biMeasureSumType);
159+
160+
TEntityProperty measureCountProperty = edmFactory.createTEntityProperty();
161+
measureCountProperty.setName("Measure-Count");
162+
measureCountProperty.setType("Int32");
163+
measureCountProperty.setNullable(false);
164+
165+
TMeasure biMeasureCountMeasure = biFactory.createTMeasure();
166+
biMeasureCountMeasure.setCaption("Measure-Count");
167+
biMeasureCountMeasure.setHidden(false);
168+
biMeasureCountMeasure.setReferenceName("[measures].[Measure-Count]");
169+
170+
measureCountProperty.setBiMeasure(biMeasureCountMeasure);
171+
172+
measureCountType.getProperty().add(measureCountProperty);
173+
174+
schema.getEntityType().add(measureCountType);
175+
176+
org.eclipse.daanse.xmla.csdl.model.v2.edm.TEntityType calculatedMember1Type = edmFactory.createTEntityType();
177+
calculatedMember1Type.setName("Calculated_Member1");
178+
179+
TEntityType biCalculatedMember1Type = biFactory.createTEntityType();
180+
biCalculatedMember1Type.setContents("Calculated_Member1");
181+
calculatedMember1Type.setBiEntityType(biCalculatedMember1Type);
182+
183+
TEntityProperty calculatedMember1Property = edmFactory.createTEntityProperty();
184+
calculatedMember1Property.setName("Calculated_Member1");
185+
calculatedMember1Property.setType("Int32");
186+
calculatedMember1Property.setNullable(false);
187+
188+
TMeasure biMeasureCalculatedMember1 = biFactory.createTMeasure();
189+
biMeasureCalculatedMember1.setCaption("Calculated Member 1");
190+
biMeasureCalculatedMember1.setHidden(false);
191+
biMeasureCalculatedMember1.setReferenceName("[measures].[Calculated Member 1]");
192+
193+
calculatedMember1Property.setBiMeasure(biMeasureCalculatedMember1);
194+
195+
calculatedMember1Type.getProperty().add(calculatedMember1Property);
196+
197+
schema.getEntityType().add(calculatedMember1Type);
198+
199+
org.eclipse.daanse.xmla.csdl.model.v2.edm.TEntityType calculatedMember2Type = edmFactory.createTEntityType();
200+
calculatedMember2Type.setName("Calculated_Member2");
201+
202+
TEntityType biCalculatedMember2Type = biFactory.createTEntityType();
203+
biCalculatedMember2Type.setContents("Calculated_Member2");
204+
calculatedMember1Type.setBiEntityType(biCalculatedMember1Type);
205+
206+
TEntityProperty calculatedMember2Property = edmFactory.createTEntityProperty();
207+
calculatedMember2Property.setName("Calculated_Member2");
208+
calculatedMember2Property.setType("Int32");
209+
calculatedMember2Property.setNullable(false);
210+
211+
TMeasure biMeasureCalculatedMember2 = biFactory.createTMeasure();
212+
biMeasureCalculatedMember2.setCaption("Calculated Member 2");
213+
biMeasureCalculatedMember2.setHidden(false);
214+
biMeasureCalculatedMember2.setReferenceName("[measures].[Calculated Member 2]");
215+
216+
calculatedMember2Property.setBiMeasure(biMeasureCalculatedMember2);
217+
218+
calculatedMember2Type.getProperty().add(calculatedMember2Property);
219+
220+
schema.getEntityType().add(calculatedMember2Type);
221+
222+
return schema;
223+
}
224+
225+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/*
2+
* Copyright (c) 2025 Contributors to the Eclipse Foundation.
3+
*
4+
* This program and the accompanying materials are made
5+
* available under the terms of the Eclipse Public License 2.0
6+
* which is available at https://www.eclipse.org/legal/epl-2.0/
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
*
12+
*/
13+
@org.osgi.annotation.bundle.Export
14+
@org.osgi.annotation.versioning.Version("0.0.1")
15+
package org.eclipse.daanse.rolap.mapping.instance.emf.tutorial.cube.calculatedmember.color;

0 commit comments

Comments
 (0)