Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Epsilon » ETL, ::= and equivalent()(About transforming an ecore model to a doctrine one)
ETL, ::= and equivalent() [message #509632] Sat, 23 January 2010 20:45 Go to next message
St is currently offline StFriend
Messages: 77
Registered: July 2009
Member
Hi, I'm trying to transform an ecore model to a doctrine one.

Here is my transformation code:

rule ePackage2Model
transform i : ecore!EPackage
to o : doctrine!Model {
guard: not i.eSuperPackage.isDefined()

o.name = i.name;

var rootPackage = doctrine!doctrine::Record::Package.createInstance();
rootPackage.name = i.name;
o.packages.add( rootPackage );

for( package in i.eSubpackages )
{
rootPackage.subPackages.add( package.toDoctrinePackage( rootPackage ) );
}

}


operation ecore!EPackage toDoctrinePackage( parentPackage : doctrine!doctrine::Record::Package ) : doctrine!doctrine::Record::Package
{
var package = doctrine!doctrine::Record::Package.createInstance();
package.name = self.name;
for( eclass in self.eClassifiers )
{
package.records.add( eclass.toDoctrineRecord( package ) );
}
for( epackage in self.eSubpackages )
{
package.subPackages.add( epackage.toDoctrinePackage( package ) );
}
return package;
}

operation ecore!EClass toDoctrineRecord( package : doctrine!doctrine::Record::Package ) : doctrine!doctrine::Record::Record
{
var record = doctrine!doctrine::Record::Record.createInstance();
record.name = self.name;
//record.transformDoctrineRecordInheritance(self);

return record;
}

operation doctrine!doctrine::Record::Record transformDoctrineRecordInheritance( input: ecore!EClass ) : null
{
if( input.eSuperTypes.isDefined() and input.eSuperTypes.select(c|not c.interface).size()>0)
{
var super ::= input.eSuperTypes.select(c|not c.interface).first().equivalent();
var inheritance = doctrine!doctrine::Record::Inheritance::Inheritance.createIn stance();
inheritance.`extends` = super;
self.inheritance = inheritance;

}
}

My problem is that I try to retrieve the equivalent doctrine record of the eclass to create the inheritance element in my doctrine model.

What had I done bad ?
Thanks
Re: ETL, ::= and equivalent() [message #509637 is a reply to message #509632] Sat, 23 January 2010 21:48 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Stephane,

This line looks suspicious:

var super ::= input.eSuperTypes.select(c|not
c.interface).first().equivalent();

In ETL a ::= b is a shorthand for a = b.equivalent() so having both ::=
and equivalent() in the same statement is probably not what you want. If
this is not the source of your problem, could you please send me your
transformation/metamodels/sample models so that I can have a closer look?

Cheers,
Dimitris

Stéphane wrote:
> Hi, I'm trying to transform an ecore model to a doctrine one.
>
> Here is my transformation code:
>
> rule ePackage2Model
> transform i : ecore!EPackage
> to o : doctrine!Model {
> guard: not i.eSuperPackage.isDefined()
>
> o.name = i.name;
>
> var rootPackage =
> doctrine!doctrine::Record::Package.createInstance();
> rootPackage.name = i.name;
> o.packages.add( rootPackage );
>
> for( package in i.eSubpackages )
> {
> rootPackage.subPackages.add( package.toDoctrinePackage(
> rootPackage ) );
> }
>
> }
>
>
> operation ecore!EPackage toDoctrinePackage( parentPackage :
> doctrine!doctrine::Record::Package ) : doctrine!doctrine::Record::Package
> {
> var package = doctrine!doctrine::Record::Package.createInstance();
> package.name = self.name;
> for( eclass in self.eClassifiers )
> {
> package.records.add( eclass.toDoctrineRecord( package ) );
> }
> for( epackage in self.eSubpackages )
> {
> package.subPackages.add( epackage.toDoctrinePackage( package ) );
> }
> return package;
> }
>
> operation ecore!EClass toDoctrineRecord( package :
> doctrine!doctrine::Record::Package ) : doctrine!doctrine::Record::Record
> {
> var record = doctrine!doctrine::Record::Record.createInstance();
> record.name = self.name;
> //record.transformDoctrineRecordInheritance(self);
>
> return record;
> }
>
> operation doctrine!doctrine::Record::Record
> transformDoctrineRecordInheritance( input: ecore!EClass ) : null
> {
> if( input.eSuperTypes.isDefined() and
> input.eSuperTypes.select(c|not c.interface).size()>0)
> {
> var super ::= input.eSuperTypes.select(c|not
> c.interface).first().equivalent();
> var inheritance =
> doctrine!doctrine::Record::Inheritance::Inheritance.createIn stance();
> inheritance.`extends` = super;
> self.inheritance = inheritance;
>
> }
> }
>
> My problem is that I try to retrieve the equivalent doctrine record of
> the eclass to create the inheritance element in my doctrine model.
>
> What had I done bad ?
> Thanks
Re: ETL, ::= and equivalent() [message #509641 is a reply to message #509637] Sat, 23 January 2010 22:39 Go to previous messageGo to next message
St is currently offline StFriend
Messages: 77
Registered: July 2009
Member
Hi,

The problem is that is doesnt work event when writting line correctly.
I get this error :
Internal error: java.lang.NullPointerException
at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy. getEquivalent[FastTransformationStrategy.java:75]
at org.eclipse.epsilon.etl.execute.EquivalentAssignExecutor.get RhsEquivalent[EquivalentAssignExecutor.java:31]
at org.eclipse.epsilon.eol.execute.AssignExecutor.execute[Assig nExecutor.java:53]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.IfStatementExecutor.execute[ IfStatementExecutor.java:42]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:258]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:231]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:189]
at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:144]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:161]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:258]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:231]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:189]
at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:144]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:161]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P arametersExecutor.java:29]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:155]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute [ForStatementExecutor.java:115]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:258]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:231]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:189]
at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:144]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:161]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P arametersExecutor.java:29]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:155]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute [ForStatementExecutor.java:115]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:258]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:231]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:189]
at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:144]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:161]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P arametersExecutor.java:29]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:155]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute [ForStatementExecutor.java:115]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.etl.TransformRule.executeSuperRulesAndBo dy[TransformRule.java:312]
at org.eclipse.epsilon.etl.TransformRule.transform[TransformRul e.java:255]
at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy. executeTransformations[FastTransformationStrategy.java:172]
at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy. transformModels[FastTransformationStrategy.java:164]
at org.eclipse.epsilon.etl.EtlModule.execute[EtlModule.java:187 ]
at org.eclipse.epsilon.etl.dt.launching.EtlLaunchConfigurationD elegate.launch[EtlLaunchConfigurationDelegate.java:89]
at org.eclipse.debug.internal.core.LaunchConfiguration.launch[L aunchConfiguration.java:853]
at org.eclipse.debug.internal.core.LaunchConfiguration.launch[L aunchConfiguration.java:703]
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch[D ebugUIPlugin.java:866]
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run[DebugUIPlu gin.java:1069]
at org.eclipse.core.internal.jobs.Worker.run[Worker.java:55]
(/home/serard/Documents/workspaces/trVilnus/se.ecore2doctrin e/src/ecore2doctrine.etl@50:30)


with operation rewritten and line 50 is marked with a commented

operation doctrine!doctrine::Record::Record transformDoctrineRecordInheritance( input: ecore!EClass ) : null
{
if( input.eSuperTypes.isDefined() and input.eSuperTypes.select(c|not c.interface).size()>0)
{
var inheritance = doctrine!doctrine::Record::Inheritance::Inheritance.createIn stance();
inheritance.`extends` ::= input.eSuperTypes.select(c|not c.interface).first(); //line 50
self.inheritance = inheritance;

}
}


Here is the link to download eclipse projects (emfatic doesnt work on my eclipse):
http://stephaneerard.fr/epsilon_etl.zip

I have 3 projects:
se.doctrine.mm
se.ecore2doctrine
se.eds.mm

input : mm ecore, model : se.eds.mm/model/eds.ecore
output: mm : se.doctrine.mm/model/doctrine.ecore, output model: se.ecore2doctrine/src/gen.xmi


Thanks a lot Dimitrios, I wish you a good year.

BTW, I have already told you about acceleo and ui generation launcher project, which is generated easily with two-clicks when using acceleo and give user the ability to launch a generation from a file with a right-click after plugin is installed.

I'd like to pay you to do something similar for epsilon egl, etl and others why not (it is quite simple to do such thing to generate plugin projects which would be ui launchers for etl, egl; no more ant for basic users of eclipse plugins created using epsilon). Is this a big deal to do ?
The generated plugin, by the acceleo ui launcher generator, is fairly simple.
Anyway I don't have time to run on this by myself right now, and I quite need it in three months or such.

Is this possible ? Making it open source, it would push the epsilon plugin development a lot (you can test it using latest acceleo by downloading eclipse sdk then acceleo from update site; also there is an irc chan) Smile

Thank you.

[Updated on: Sat, 23 January 2010 23:02]

Report message to a moderator

Re: ETL, ::= and equivalent() [message #509651 is a reply to message #509641] Sat, 23 January 2010 21:24 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Stephane,

In ETL, only rules are traced (i.e. you can get the equivalent() of x
only if x is transformed through a rule). In this transformation
however, only EPackages are transformed through a rule (the
ePackage2Model). All other objects (including EClasses) are transformed
through operations. Therefore, to be able to invoke equivalent() (or
assign through ::=) for EClasses you should refactor your transformation
to use a rule instead of an operation for transforming EClasses to Records.

Of course the ETL engine should fail more gracefully in case you attempt
to get the equivalent() of an element that cannot be transformed by any
rule (I'll file a bugzilla for this).

Regarding the UI generation launcher project, I'm definitely happy to
have a go at it. I'll send you an email shortly so that we can take this
off-line and discuss it in more detail.

Cheers,
Dimitris

Stéphane wrote:
> Hi,
>
> The problem is that is doesnt work event when writting line correctly.
> I get this error :
> Internal error: java.lang.NullPointerException
> at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy.
> getEquivalent[FastTransformationStrategy.java:75]
> at org.eclipse.epsilon.etl.execute.EquivalentAssignExecutor.get
> RhsEquivalent[EquivalentAssignExecutor.java:31]
> at org.eclipse.epsilon.eol.execute.AssignExecutor.execute[Assig
> nExecutor.java:53]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.IfStatementExecutor.execute[
> IfStatementExecutor.java:42]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio
> n.java:258]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:231]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:189]
> at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations.
> java:144]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:161]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio
> n.java:258]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:231]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:189]
> at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations.
> java:144]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:161]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P
> arametersExecutor.java:29]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:155]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute
> [ForStatementExecutor.java:115]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio
> n.java:258]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:231]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:189]
> at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations.
> java:144]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:161]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P
> arametersExecutor.java:29]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:155]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute
> [ForStatementExecutor.java:115]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio
> n.java:258]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:231]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:189]
> at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations.
> java:144]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:161]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P
> arametersExecutor.java:29]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:155]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute
> [ForStatementExecutor.java:115]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.etl.TransformRule.executeSuperRulesAndBo
> dy[TransformRule.java:312]
> at org.eclipse.epsilon.etl.TransformRule.transform[TransformRul
> e.java:255]
> at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy.
> executeTransformations[FastTransformationStrategy.java:172]
> at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy.
> transformModels[FastTransformationStrategy.java:164]
> at org.eclipse.epsilon.etl.EtlModule.execute[EtlModule.java:187 ]
> at org.eclipse.epsilon.etl.dt.launching.EtlLaunchConfigurationD
> elegate.launch[EtlLaunchConfigurationDelegate.java:89]
> at org.eclipse.debug.internal.core.LaunchConfiguration.launch[L
> aunchConfiguration.java:853]
> at org.eclipse.debug.internal.core.LaunchConfiguration.launch[L
> aunchConfiguration.java:703]
> at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch[D
> ebugUIPlugin.java:866]
> at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run[DebugUIPlu
> gin.java:1069]
> at org.eclipse.core.internal.jobs.Worker.run[Worker.java:55]
> (/home/serard/Documents/workspaces/trVilnus/se.ecore2doctrin
> e/src/mailto:ecore2doctrine.etl@50:30)
>
>
> with operation rewritten and line 50 is marked with a commented
>
> operation doctrine!doctrine::Record::Record
> transformDoctrineRecordInheritance( input: ecore!EClass ) : null
> {
> if( input.eSuperTypes.isDefined() and
> input.eSuperTypes.select(c|not c.interface).size()>0)
> {
> var inheritance =
> doctrine!doctrine::Record::Inheritance::Inheritance.createIn stance();
> inheritance.`extends` ::= input.eSuperTypes.select(c|not
> c.interface).first(); //line 50
> self.inheritance = inheritance;
>
> }
> }
>
>
> Here is the link to download eclipse projects (emfatic doesnt work on my
> eclipse):
> http://stephaneerard.fr/epsilon_etl.zip
>
> I have 3 projects:
> se.doctrine.mm se.ecore2doctrine
> se.eds.mm
>
> input : mm ecore, model : se.eds.mm/model/eds.ecore
> output: mm : se.doctrine.mm/model/doctrine.ecore, output model:
> se.ecore2doctrine/src/gen.xmi
>
>
> Thanks a lot Dimitris, I wish you a good year.
>
> BTW, I have already told you about acceleo and ui generation launcher
> project, which is generated easily with two-clicks when using acceleo
> and give user the ability to launch a generation from a file with a
> right-click after plugin is installed.
> I'd like to pay you to do something similar for epsilon egl, etl and
> others why not (it is quite simple to do such thing to generate plugin
> projects which would be ui launchers for etl, egl; no more ant for basic
> users of eclipse plugins created using epsilon). Is this a big deal to do ?
> The generated plugin, by the acceleo ui launcher generator, is fairly
> simple.
> Anyway I don't have time to run on this by myself right now, and I quite
> need it in three months or such.
> Is this possible ? Making it open source, it would push the epsilon
> plugin development a lot (you can test it using latest acceleo by
> downloading eclipse sdk then acceleo from update site; also there is an
> irc chan) :)
>
> Thank you.
Re: ETL, ::= and equivalent() [message #509675 is a reply to message #509651] Sun, 24 January 2010 15:51 Go to previous messageGo to next message
St is currently offline StFriend
Messages: 77
Registered: July 2009
Member
Hi,

Thank for you reply.

It's amazing, I got it to work with this code :

rule ePackage2Package
transform i : ecore!EPackage
to o : doctrine!doctrine::Record::Package{
o.name = i.name;

if( i.eSuperPackage.isDefined())
{
o.superPackage ::= i.eSuperPackage;
}
if( i.eSubpackages.isDefined() )
{
for( package in i.eSubpackages )
{
o.subPackages.add( package.equivalent() );
}
}
if( i.eClassifiers.isDefined() )
{
for( class in i.eClassifiers )
{
o.records.add( class.equivalent() );
}
}
}


rule eClass2Record
transform i : ecore!EClass
to o : doctrine!doctrine::Record::Record{

if( i.ePackage.isDefined() )
{
o.package ::= i.ePackage;
}
o.name = i.name;
}


Thank you a lot, and I'm waiting for your email Wink
Re: ETL, ::= and equivalent() [message #509676 is a reply to message #509675] Sun, 24 January 2010 16:07 Go to previous messageGo to next message
St is currently offline StFriend
Messages: 77
Registered: July 2009
Member
Re,

I'm trying to add inheritance management to the transformation :

rule ePackage2Package
transform i : ecore!EPackage
to o : doctrine!doctrine::Record::Package{
o.name = i.name;

if( i.eSuperPackage.isDefined())
{
o.superPackage ::= i.eSuperPackage;
}
if( i.eSubpackages.isDefined() )
{
for( package in i.eSubpackages )
{
o.subPackages.add( package.equivalent() );
}
}
if( i.eClassifiers.isDefined() )
{
for( class in i.eClassifiers )
{
o.records.add( class.equivalent() );
}
}
}


rule eClass2Record
transform i : ecore!EClass
to o : doctrine!doctrine::Record::Record{

if( i.ePackage.isDefined() )
{
o.package ::= i.ePackage;
}
o.name = i.name;

if( i.eSuperTypes.select(c|not c.interface).size()>0)
{
o.inheritance = doctrine!doctrine::Record::Inheritance::Inheritance.createIn stance();
o.inheritance.extending ::= i.eSuperTypes.select(c|not c.interface).first(); //line 40
}
}



But I get this error : Property 'extending' not found in object Record [name=Party, ] (/home/serard/Documents/workspaces/modeling_one/se.ecore2doc trine/src/ecore2doctrine.etl@40:26)

(from model, I deleted the doctrine!Model element to use Package instead and renamed the Record.extends to extending to avoid some more problems, but looks like it is not solving the problem -_-)

Thanks Smile
Re: ETL, ::= and equivalent() [message #509679 is a reply to message #509676] Sun, 24 January 2010 12:26 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Stephane,

Would you mind uploading a .zip file with the current version of your
transformation/metamodels so that I can have a look?

Cheers,
Dimitris

Stéphane wrote:
> Re,
>
> I'm trying to add inheritance management to the transformation :
>
> rule ePackage2Package
> transform i : ecore!EPackage
> to o : doctrine!doctrine::Record::Package{
> o.name = i.name;
>
> if( i.eSuperPackage.isDefined())
> {
> o.superPackage ::= i.eSuperPackage;
> }
> if( i.eSubpackages.isDefined() )
> {
> for( package in i.eSubpackages )
> {
> o.subPackages.add( package.equivalent() );
> }
> }
> if( i.eClassifiers.isDefined() )
> {
> for( class in i.eClassifiers )
> {
> o.records.add( class.equivalent() );
> }
> }
> }
>
>
> rule eClass2Record
> transform i : ecore!EClass
> to o : doctrine!doctrine::Record::Record{
>
> if( i.ePackage.isDefined() )
> {
> o.package ::= i.ePackage;
> }
> o.name = i.name;
>
> if( i.eSuperTypes.select(c|not c.interface).size()>0)
> {
> o.inheritance =
> doctrine!doctrine::Record::Inheritance::Inheritance.createIn stance();
> o.inheritance.extending ::= i.eSuperTypes.select(c|not
> c.interface).first(); //line 40
> }
> }
>
>
>
> But I get this error : Property 'extending' not found in object Record
> [name=Party, ]
> (/home/serard/Documents/workspaces/modeling_one/se.ecore2doc
> trine/src/mailto:ecore2doctrine.etl@40:26)
>
> (from model, I deleted the doctrine!Model element to use Package instead
> and renamed the Record.extends to extending to avoid some more problems,
> but looks like it is not solving the problem -_-)
>
> Thanks :)
Re: ETL, ::= and equivalent() [message #509682 is a reply to message #509675] Sun, 24 January 2010 12:40 Go to previous messageGo to next message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Stephane,

Glad this helped! I'll get in touch with you shortly.

Cheers,
Dimitris

Stéphane wrote:
> Hi,
>
> Thank for you reply.
>
> It's amazing, I got it to work with this code :
> rule ePackage2Package
> transform i : ecore!EPackage
> to o : doctrine!doctrine::Record::Package{
> o.name = i.name;
>
> if( i.eSuperPackage.isDefined())
> {
> o.superPackage ::= i.eSuperPackage;
> }
> if( i.eSubpackages.isDefined() )
> {
> for( package in i.eSubpackages )
> {
> o.subPackages.add( package.equivalent() );
> }
> }
> if( i.eClassifiers.isDefined() )
> {
> for( class in i.eClassifiers )
> {
> o.records.add( class.equivalent() );
> }
> }
> }
>
>
> rule eClass2Record
> transform i : ecore!EClass
> to o : doctrine!doctrine::Record::Record{
>
> if( i.ePackage.isDefined() )
> {
> o.package ::= i.ePackage;
> }
> o.name = i.name;
> }
>
>
> Thank you a lot, and I'm waiting for your email ;)
Re: ETL, ::= and equivalent() [message #509683 is a reply to message #509679] Sun, 24 January 2010 17:39 Go to previous messageGo to next message
St is currently offline StFriend
Messages: 77
Registered: July 2009
Member
Latest here (I'll have a svn soon ^^):
http://stephaneerard.fr/modeling_one.zip

I have problems in ecore2doctrine.etl at lines
41,
68

If you have any suggestion for other things (way I code, etc), don't hesitate Wink

Thaaaanks Surprised)
Re: ETL, ::= and equivalent() [message #509684 is a reply to message #509683] Sun, 24 January 2010 18:10 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Stephane,

The problem was that you configured your models as "EMF Decorator
Model"s instead of plain "EMF Model"s. Not quite sure what might be
going wrong with this (another bugzilla is probably due) but
reconfiguring your models as plain EMF models solves this problem.

Below is the modified ecore2doctrine.launch

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration
type=" org.epsilon.etl.eclipse.dt.launching.EtlLaunchConfigurationD elegate ">
<listAttribute key="models">
<listEntry value="#&#13;&#10;#Sun Jan 24 18:03:38 GMT
2010&#13;&#10;isMetamodelFileBased=false&#13;&am p;#10;name=ecore&#13;&#10;readOnLoad=true&#13;&a mp;#10;storeOnDisposal=false&#13;&#10;aliases=ecore& amp;#13;&#10;metamodelUri=http\://www.eclipse.org/emf/2002/Ecore&#13 ;&#10;type=EMF&#13;&#10;modelFile=/se.eds.mm/mod el/eds.ecore&#13;&#10;expand=true&#13;&#10;m etamodelFile=&#13;&#10; "/>
<listEntry value="#&#13;&#10;#Sun Jan 24 18:03:41 GMT
2010&#13;&#10;isMetamodelFileBased=true&#13;& ;#10;name=doctrine&#13;&#10;readOnLoad=false&#13 ;&#10;storeOnDisposal=true&#13;&#10;aliases=& ;#13;&#10;metamodelUri=&#13;&#10;type=EMF&#1 3;&#10;modelFile=/se.ecore2doctrine/src/gen.xmi&#13; &#10;expand=true&#13;&#10;metamodelFile=/se.doct rine.mm/model/doctrine.ecore&#13;&#10; "/>
</listAttribute>
<stringAttribute key="source"
value="/se.ecore2doctrine/src/ecore2doctrine.etl"/>
</launchConfiguration>

Cheers,
Dimitris

Stéphane wrote:
> Latest here (I'll have a svn soon ^^):
> http://stephaneerard.fr/modeling_one.zip
>
> I have problems in ecore2doctrine.etl at lines
> 41,
> 68
>
> If you have any suggestion for other things (way I code, etc), don't
> hesitate ;)
>
> Thaaaanks :o)
Re: ETL, ::= and equivalent() [message #584918 is a reply to message #509637] Sat, 23 January 2010 22:39 Go to previous message
St is currently offline StFriend
Messages: 77
Registered: July 2009
Member
Hi,

The problem is that is doesnt work event when writting line correctly.
I get this error :
Internal error: java.lang.NullPointerException
at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy. getEquivalent[FastTransformationStrategy.java:75]
at org.eclipse.epsilon.etl.execute.EquivalentAssignExecutor.get RhsEquivalent[EquivalentAssignExecutor.java:31]
at org.eclipse.epsilon.eol.execute.AssignExecutor.execute[Assig nExecutor.java:53]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.IfStatementExecutor.execute[ IfStatementExecutor.java:42]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:258]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:231]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:189]
at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:144]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:161]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:258]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:231]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:189]
at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:144]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:161]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P arametersExecutor.java:29]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:155]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute [ForStatementExecutor.java:115]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:258]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:231]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:189]
at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:144]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:161]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P arametersExecutor.java:29]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:155]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute [ForStatementExecutor.java:115]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:258]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:231]
at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:189]
at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:144]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:161]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P arametersExecutor.java:29]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:155]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:67]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:37]
at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:123]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute [ForStatementExecutor.java:115]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:185]
at org.eclipse.epsilon.etl.TransformRule.executeSuperRulesAndBo dy[TransformRule.java:312]
at org.eclipse.epsilon.etl.TransformRule.transform[TransformRul e.java:255]
at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy. executeTransformations[FastTransformationStrategy.java:172]
at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy. transformModels[FastTransformationStrategy.java:164]
at org.eclipse.epsilon.etl.EtlModule.execute[EtlModule.java:187 ]
at org.eclipse.epsilon.etl.dt.launching.EtlLaunchConfigurationD elegate.launch[EtlLaunchConfigurationDelegate.java:89]
at org.eclipse.debug.internal.core.LaunchConfiguration.launch[L aunchConfiguration.java:853]
at org.eclipse.debug.internal.core.LaunchConfiguration.launch[L aunchConfiguration.java:703]
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch[D ebugUIPlugin.java:866]
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run[DebugUIPlu gin.java:1069]
at org.eclipse.core.internal.jobs.Worker.run[Worker.java:55]
(/home/serard/Documents/workspaces/trVilnus/se.ecore2doctrin e/src/mailto:ecore2doctrine.etl@50:30)


with operation rewritten and line 50 is marked with a commented

operation doctrine!doctrine::Record::Record transformDoctrineRecordInheritance( input: ecore!EClass ) : null
{
if( input.eSuperTypes.isDefined() and input.eSuperTypes.select(c|not c.interface).size()>0)
{
var inheritance = doctrine!doctrine::Record::Inheritance::Inheritance.createIn stance();
inheritance.`extends` ::= input.eSuperTypes.select(c|not c.interface).first(); //line 50
self.inheritance = inheritance;

}
}


Here is the link to download eclipse projects (emfatic doesnt work on my eclipse):
http://stephaneerard.fr/epsilon_etl.zip

I have 3 projects:
se.doctrine.mm
se.ecore2doctrine
se.eds.mm

input : mm ecore, model : se.eds.mm/model/eds.ecore
output: mm : se.doctrine.mm/model/doctrine.ecore, output model: se.ecore2doctrine/src/gen.xmi


Thanks a lot Dimitris, I wish you a good year.

BTW, I have already told you about acceleo and ui generation launcher project, which is generated easily with two-clicks when using acceleo and give user the ability to launch a generation from a file with a right-click after plugin is installed.

I'd like to pay you to do something similar for epsilon egl, etl and others why not (it is quite simple to do such thing to generate plugin projects which would be ui launchers for etl, egl; no more ant for basic users of eclipse plugins created using epsilon). Is this a big deal to do ?
The generated plugin, by the acceleo ui launcher generator, is fairly simple.
Anyway I don't have time to run on this by myself right now, and I quite need it in three months or such.

Is this possible ? Making it open source, it would push the epsilon plugin development a lot (you can test it using latest acceleo by downloading eclipse sdk then acceleo from update site; also there is an irc chan) :)

Thank you.
Re: ETL, ::= and equivalent() [message #584933 is a reply to message #509641] Sun, 24 January 2010 02:14 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Stephane,

In ETL, only rules are traced (i.e. you can get the equivalent() of x
only if x is transformed through a rule). In this transformation
however, only EPackages are transformed through a rule (the
ePackage2Model). All other objects (including EClasses) are transformed
through operations. Therefore, to be able to invoke equivalent() (or
assign through ::=) for EClasses you should refactor your transformation
to use a rule instead of an operation for transforming EClasses to Records.

Of course the ETL engine should fail more gracefully in case you attempt
to get the equivalent() of an element that cannot be transformed by any
rule (I'll file a bugzilla for this).

Regarding the UI generation launcher project, I'm definitely happy to
have a go at it. I'll send you an email shortly so that we can take this
off-line and discuss it in more detail.

Cheers,
Dimitris

Stéphane wrote:
> Hi,
>
> The problem is that is doesnt work event when writting line correctly.
> I get this error :
> Internal error: java.lang.NullPointerException
> at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy.
> getEquivalent[FastTransformationStrategy.java:75]
> at org.eclipse.epsilon.etl.execute.EquivalentAssignExecutor.get
> RhsEquivalent[EquivalentAssignExecutor.java:31]
> at org.eclipse.epsilon.eol.execute.AssignExecutor.execute[Assig
> nExecutor.java:53]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.IfStatementExecutor.execute[
> IfStatementExecutor.java:42]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio
> n.java:258]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:231]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:189]
> at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations.
> java:144]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:161]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio
> n.java:258]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:231]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:189]
> at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations.
> java:144]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:161]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P
> arametersExecutor.java:29]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:155]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute
> [ForStatementExecutor.java:115]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio
> n.java:258]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:231]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:189]
> at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations.
> java:144]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:161]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P
> arametersExecutor.java:29]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:155]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute
> [ForStatementExecutor.java:115]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio
> n.java:258]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:231]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja
> va:189]
> at org.eclipse.epsilon.eol.EolOperations.execute[EolOperations.
> java:144]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:161]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P
> arametersExecutor.java:29]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati
> on[PointExecutor.java:155]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:67]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:37]
> at org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE
> xecutor.java:123]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.ForStatementExecutor.execute
> [ForStatementExecutor.java:115]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu
> te[StatementBlockExecutor.java:33]
> at org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E
> xecutorFactory.java:185]
> at org.eclipse.epsilon.etl.TransformRule.executeSuperRulesAndBo
> dy[TransformRule.java:312]
> at org.eclipse.epsilon.etl.TransformRule.transform[TransformRul
> e.java:255]
> at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy.
> executeTransformations[FastTransformationStrategy.java:172]
> at org.eclipse.epsilon.etl.strategy.FastTransformationStrategy.
> transformModels[FastTransformationStrategy.java:164]
> at org.eclipse.epsilon.etl.EtlModule.execute[EtlModule.java:187 ]
> at org.eclipse.epsilon.etl.dt.launching.EtlLaunchConfigurationD
> elegate.launch[EtlLaunchConfigurationDelegate.java:89]
> at org.eclipse.debug.internal.core.LaunchConfiguration.launch[L
> aunchConfiguration.java:853]
> at org.eclipse.debug.internal.core.LaunchConfiguration.launch[L
> aunchConfiguration.java:703]
> at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch[D
> ebugUIPlugin.java:866]
> at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run[DebugUIPlu
> gin.java:1069]
> at org.eclipse.core.internal.jobs.Worker.run[Worker.java:55]
> (/home/serard/Documents/workspaces/trVilnus/se.ecore2doctrin
> e/src/mailto:ecore2doctrine.etl@50:30)
>
>
> with operation rewritten and line 50 is marked with a commented
>
> operation doctrine!doctrine::Record::Record
> transformDoctrineRecordInheritance( input: ecore!EClass ) : null
> {
> if( input.eSuperTypes.isDefined() and
> input.eSuperTypes.select(c|not c.interface).size()>0)
> {
> var inheritance =
> doctrine!doctrine::Record::Inheritance::Inheritance.createIn stance();
> inheritance.`extends` ::= input.eSuperTypes.select(c|not
> c.interface).first(); //line 50
> self.inheritance = inheritance;
>
> }
> }
>
>
> Here is the link to download eclipse projects (emfatic doesnt work on my
> eclipse):
> http://stephaneerard.fr/epsilon_etl.zip
>
> I have 3 projects:
> se.doctrine.mm se.ecore2doctrine
> se.eds.mm
>
> input : mm ecore, model : se.eds.mm/model/eds.ecore
> output: mm : se.doctrine.mm/model/doctrine.ecore, output model:
> se.ecore2doctrine/src/gen.xmi
>
>
> Thanks a lot Dimitris, I wish you a good year.
>
> BTW, I have already told you about acceleo and ui generation launcher
> project, which is generated easily with two-clicks when using acceleo
> and give user the ability to launch a generation from a file with a
> right-click after plugin is installed.
> I'd like to pay you to do something similar for epsilon egl, etl and
> others why not (it is quite simple to do such thing to generate plugin
> projects which would be ui launchers for etl, egl; no more ant for basic
> users of eclipse plugins created using epsilon). Is this a big deal to do ?
> The generated plugin, by the acceleo ui launcher generator, is fairly
> simple.
> Anyway I don't have time to run on this by myself right now, and I quite
> need it in three months or such.
> Is this possible ? Making it open source, it would push the epsilon
> plugin development a lot (you can test it using latest acceleo by
> downloading eclipse sdk then acceleo from update site; also there is an
> irc chan) :)
>
> Thank you.
Re: ETL, ::= and equivalent() [message #584952 is a reply to message #584933] Sun, 24 January 2010 15:51 Go to previous message
St is currently offline StFriend
Messages: 77
Registered: July 2009
Member
Hi,

Thank for you reply.

It's amazing, I got it to work with this code :

rule ePackage2Package
transform i : ecore!EPackage
to o : doctrine!doctrine::Record::Package{
o.name = i.name;

if( i.eSuperPackage.isDefined())
{
o.superPackage ::= i.eSuperPackage;
}
if( i.eSubpackages.isDefined() )
{
for( package in i.eSubpackages )
{
o.subPackages.add( package.equivalent() );
}
}
if( i.eClassifiers.isDefined() )
{
for( class in i.eClassifiers )
{
o.records.add( class.equivalent() );
}
}
}


rule eClass2Record
transform i : ecore!EClass
to o : doctrine!doctrine::Record::Record{

if( i.ePackage.isDefined() )
{
o.package ::= i.ePackage;
}
o.name = i.name;
}


Thank you a lot, and I'm waiting for your email ;)
Re: ETL, ::= and equivalent() [message #584984 is a reply to message #584952] Sun, 24 January 2010 17:25 Go to previous message
Dimitrios Kolovos is currently offline Dimitrios KolovosFriend
Messages: 1776
Registered: July 2009
Senior Member
Hi Stephane,

Glad this helped! I'll get in touch with you shortly.

Cheers,
Dimitris

Stéphane wrote:
> Hi,
>
> Thank for you reply.
>
> It's amazing, I got it to work with this code :
> rule ePackage2Package
> transform i : ecore!EPackage
> to o : doctrine!doctrine::Record::Package{
> o.name = i.name;
>
> if( i.eSuperPackage.isDefined())
> {
> o.superPackage ::= i.eSuperPackage;
> }
> if( i.eSubpackages.isDefined() )
> {
> for( package in i.eSubpackages )
> {
> o.subPackages.add( package.equivalent() );
> }
> }
> if( i.eClassifiers.isDefined() )
> {
> for( class in i.eClassifiers )
> {
> o.records.add( class.equivalent() );
> }
> }
> }
>
>
> rule eClass2Record
> transform i : ecore!EClass
> to o : doctrine!doctrine::Record::Record{
>
> if( i.ePackage.isDefined() )
> {
> o.package ::= i.ePackage;
> }
> o.name = i.name;
> }
>
>
> Thank you a lot, and I'm waiting for your email ;)
Previous Topic:ETL, ::= and equivalent()
Next Topic:Re: ETL, ::= and equivalent()
Goto Forum:
  


Current Time: Thu Apr 25 23:30:27 GMT 2024

Powered by FUDForum. Page generated in 0.04327 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top