Why helper.createQuery() takes a considerable time? [message #1058459] |
Tue, 14 May 2013 08:34 |
Kosala Yapa Messages: 159 Registered: September 2010 |
Senior Member |
|
|
Hi there,
I create an OCL query and execute that over an EObject called Device.
Sample code:
// create OCL instance for Ecore
OCL ocl = OCL.newInstance(EcoreEnvironmentFactory.INSTANCE);
// create OCL helper
OCLHelper<EClassifier, EOperation, EStructuralFeature, Constraint> helper = ocl
.createOCLHelper();
// set OCL context classifier
helper.setContext(ModelPackage.Literals.DEVICE);
// helper.setInstanceContext(ModelPackage.Literals.DEVICE__MODULES);
helper.setInstanceContext(device);
// create query
OCLExpression<EClassifier> query = helper
.createQuery("self.Modules->select(m|m.number<>null)->size()");
// use the query expression parsed before to create a Query
Query eval = ocl.createQuery(query);
int result = (Integer) eval.evaluate(device);
This is working fine, but createQuery() statement takes a considerable time. Any approach to fix that issue?
Here is my XML model:
<?xml version="1.0" encoding="UTF-8"?>
<Device xmlns="model" xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="dd" comment="">
<HeadModule orderNumber="328061"/>
<Modules xsi:type="Module" number="1" deviceType="49157" orderNumber="328095"/>
<Modules xsi:type="Module" number="2" deviceType="49157" orderNumber="328095"/>
<Modules xsi:type="Module" number="3" deviceType="49157" orderNumber="328095"/>
<Modules xsi:type="Module" number="4" deviceType="49157" orderNumber="328095"/>
<Modules xsi:type="Module" number="5" deviceType="49157" orderNumber="328095"/>
<Modules xsi:type="Module" number="6" deviceType="49157" orderNumber="328095"/>
<Modules xsi:type="Module" number="7" deviceType="49157" orderNumber="328095"/>
<Modules xsi:type="Module" number="8" deviceType="49157" orderNumber="328095"/>
<Modules xsi:type="Module" number="9" deviceType="15" orderNumber="328301"/>
<Modules xsi:type="Module" number="10" deviceType="15" orderNumber="328301"/>
<Modules xsi:type="NullModule" number="11"/>
<Modules xsi:type="NullModule" number="12"/>
<BackPlanes orderNumber="321702"/>
<BackPlanes orderNumber="321702"/>
<BackPlanes orderNumber="321702"/>
</Device>
Thanks in advance.
Kosala
[Updated on: Tue, 14 May 2013 09:10] Report message to a moderator
|
|
|
|
Re: Why helper.createQuery() takes a considerable time? [message #1059016 is a reply to message #1058482] |
Thu, 16 May 2013 08:52 |
Kosala Yapa Messages: 159 Registered: September 2010 |
Senior Member |
|
|
Sorry, I still could not figure out the reason for the above issue.
I made ocl.setParseTracingEnabled(true).
Tracing results are:
[OCL] variableExpCS: Variable Expression: self
[OCL] variableExpCS: Property: Modules
[OCL] operationCallExpCS: size
12
false
It eats time, to come to the following step.
[OCL] variableExpCS: Property: Modules
Anyone has a solution?
Cheers,
Kosala
[Updated on: Thu, 16 May 2013 09:18] Report message to a moderator
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.05125 seconds