|
Re: EWL and reserved word as metaclass name (Integer) and instanciation [message #19550 is a reply to message #19504] |
Thu, 04 June 2009 08:33 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Stephane,
The implicit name of the model behind the tree/GMF editor is Model. As
such, Model!Integer instead of sfdoctrine!Integer should do what you want.
Two minor comments by looking at your code (if I may): you can use "new"
instead of "createInstance". e.g.
var idcolumn : Column;
idcolumn := Column.createInstance();
can be replaced with
var idcolumn : Column;
idcolumn = new Column;
or (even simpler)
var idcolumn : new Column;
Also, you could just use = instead of := since 0.8.5 (see
http://epsilonblog.wordpress.com/2009/05/24/new-in-epsilon-0 -8-5/)
For example
idcolumn.name := 'id';
can now be replaced with
idcolumn.name = 'id';
Cheers,
Dimitris
Stephane wrote:
> Hi list,
>
> I'm trying to get something like creating an Integer instance (which is
> an EClass, part of my meta-model) working with a dynamic model which is
> registered using right-click->Register EPackage, but I get an error.
>
> Here is the ewl:
>
> wizard addIdentifierAsPrimaryKeyToClass {
>
> guard : self.isTypeOf(Class) and not
> self.column.exists(c|c.name.matches('id'))
>
> title : 'Add an Id column as primary key to ' + self.name
>
> do {
>
> self.column.add( self.generateIdPKUnikColumn() );
> }
> }
>
> wizard addIdentifiersAsPrimaryKeyToClasses {
>
> guard : self.isTypeOf(Class)
>
> title : 'Add an Id column as primary key to classes (Model-wide)'
>
> do {
> for( class in Class.allInstances() )
> {
> if( not class.column.exists(c|c.name.matches('id') ) )
> {
> class.column.add( class.generateIdPKUnikColumn() );
> }
> }
> }
> }
>
> operation Class generateIdPKUnikColumn () : Column {
> var idcolumn : Column;
> idcolumn := Column.createInstance();
> idcolumn.name := 'id';
> idcolumn.primary := true;
> idcolumn.unique := true;
> var idtype : sfdoctrine!Integer; <----------- problem here
> idtype := sfdoctrine!Integer.createInstance();
> idcolumn.type = idtype;
> return idcolumn;
> }
>
> I have replaced sfdoctrine!Integer; by sfDoctrine and with Integer alone
> but none does works.
>
> Here is the emfatic head of my meta-model :
>
> @namespace(uri=" http://stephaneerard.wordpress.com/meta-models/sfDoctrine/1. 2",
> prefix="sfdoctrine")
> package sfDoctrine;
>
> And the error with sfDoctrine (same with sfdoctrine) :
> Type 'sfdoctrine!Integer' not found
> (D:\e_workspaces\modeling\sfDoctrine-1.2\tools\wizards\addIdentifierAsPrimaryKeyAndUniqueToClass.ewl@36:28)
>
> at
> org.eclipse.epsilon.eol.execute.TypeExecutor.execute(TypeExe cutor.java:90)
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.VarStatementExecutor.execute (VarStatementExecutor.java:48)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te(StatementBlockExecutor.java:33)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.EolOperation.executeBody(EolOperatio n.java:257)
> at org.eclipse.epsilon.eol.EolOperation.execute(EolOperation.ja va:230)
> at org.eclipse.epsilon.eol.EolOperation.execute(EolOperation.ja va:188)
> at
> org.eclipse.epsilon.eol.EolOperations.execute(EolOperations. java:143)
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on(PointExecutor.java:160)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:66)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:36)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:122)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.ParametersExecutor.execute(P arametersExecutor.java:29)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on(PointExecutor.java:154)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:66)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:36)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:122)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te(StatementBlockExecutor.java:33)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at org.eclipse.epsilon.ewl.EwlWizard.process(EwlWizard.java:78)
> at
> org.eclipse.epsilon.ewl.EwlWizardInstance.process(EwlWizardI nstance.java:66)
>
> at
> org.eclipse.epsilon.ewl.emf.ExecuteWizardInstanceCommand.exe cute(ExecuteWizardInstanceCommand.java:42)
>
> at
> org.eclipse.emf.common.command.BasicCommandStack.execute(Bas icCommandStack.java:84)
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction. execute(AbstractContributeWizardsAction.java:235)
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction$ 1.widgetSelected(AbstractContributeWizardsAction.java:223)
>
> at
> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListe ner.java:228)
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :84)
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:3823)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3422)
> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2384)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 00)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:490)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:386)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>
> And the error with Integer alone (which is not really surprising me,
> anyway) :
> Internal error: java.lang.ClassCastException: java.lang.Integer cannot
> be cast to org.eclipse.emf.ecore.InternalEObject
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleEObject.dynamicSet[EStructuralFeatureImpl .java:2413]
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicSet[Basi cEObjectImpl.java:1126]
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet[BasicEObjec tImpl.java:1100]
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet[BasicEObjec tImpl.java:1071]
>
> at
> org.eclipse.epsilon.emc.emf.EmfPropertySetter.invoke[EmfProp ertySetter.java:53]
>
> at
> org.eclipse.epsilon.eol.execute.AssignExecutor.execute[Assig nExecutor.java:55]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:257]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:230]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:188]
> at
> org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:143]
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:160]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:66]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:36]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:122]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P arametersExecutor.java:29]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:154]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:66]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:36]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:122]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at org.eclipse.epsilon.ewl.EwlWizard.process[EwlWizard.java:78]
> at
> org.eclipse.epsilon.ewl.EwlWizardInstance.process[EwlWizardI nstance.java:66]
>
> at
> org.eclipse.epsilon.ewl.emf.ExecuteWizardInstanceCommand.exe cute[ExecuteWizardInstanceCommand.java:42]
>
> at
> org.eclipse.emf.common.command.BasicCommandStack.execute[Bas icCommandStack.java:84]
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction. execute[AbstractContributeWizardsAction.java:235]
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction$ 1.widgetSelected[AbstractContributeWizardsAction.java:223]
>
> at
> org.eclipse.swt.widgets.TypedListener.handleEvent[TypedListe ner.java:228]
> at org.eclipse.swt.widgets.EventTable.sendEvent[EventTable.java :84]
> at org.eclipse.swt.widgets.Widget.sendEvent[Widget.java:1003]
> at org.eclipse.swt.widgets.Display.runDeferredEvents[Display.ja va:3823]
> at org.eclipse.swt.widgets.Display.readAndDispatch[Display.java :3422]
> at org.eclipse.ui.internal.Workbench.runEventLoop[Workbench.jav a:2384]
> at org.eclipse.ui.internal.Workbench.runUI[Workbench.java:2348]
> at org.eclipse.ui.internal.Workbench.access$4[Workbench.java:22 00]
> at org.eclipse.ui.internal.Workbench$5.run[Workbench.java:495]
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault [Realm.java:288]
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench[Work bench.java:490]
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench[PlatformUI.j ava:149]
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start [IDEApplication.java:113]
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run[Eclips eAppHandle.java:193]
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication[EclipseAppLauncher.java:110]
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start[EclipseAppLauncher.java:79]
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run[EclipseS tarter.java:386]
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run[EclipseS tarter.java:179]
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0[Native Method]
> at sun.reflect.NativeMethodAccessorImpl.invoke[Unknown Source]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke[Unknown Source]
> at java.lang.reflect.Method.invoke[Unknown Source]
> at org.eclipse.equinox.launcher.Main.invokeFramework[Main.java: 549]
> at org.eclipse.equinox.launcher.Main.basicRun[Main.java:504]
> at org.eclipse.equinox.launcher.Main.run[Main.java:1236]
> (D:\e_workspaces\modeling\sfDoctrine-1.2\tools\wizards\addIdentifierAsPrimaryKeyAndUniqueToClass.ewl@38:18)
>
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleEObject.dynamicSet(EStructuralFeatureImpl .java:2413)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicSet(Basi cEObjectImpl.java:1126)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjec tImpl.java:1100)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjec tImpl.java:1071)
>
> at
> org.eclipse.epsilon.emc.emf.EmfPropertySetter.invoke(EmfProp ertySetter.java:53)
>
> at
> org.eclipse.epsilon.eol.execute.AssignExecutor.execute(Assig nExecutor.java:55)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te(StatementBlockExecutor.java:33)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.EolOperation.executeBody(EolOperatio n.java:257)
> at org.eclipse.epsilon.eol.EolOperation.execute(EolOperation.ja va:230)
> at org.eclipse.epsilon.eol.EolOperation.execute(EolOperation.ja va:188)
> at
> org.eclipse.epsilon.eol.EolOperations.execute(EolOperations. java:143)
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on(PointExecutor.java:160)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:66)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:36)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:122)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.ParametersExecutor.execute(P arametersExecutor.java:29)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on(PointExecutor.java:154)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:66)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:36)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:122)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te(StatementBlockExecutor.java:33)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at org.eclipse.epsilon.ewl.EwlWizard.process(EwlWizard.java:78)
> at
> org.eclipse.epsilon.ewl.EwlWizardInstance.process(EwlWizardI nstance.java:66)
>
> at
> org.eclipse.epsilon.ewl.emf.ExecuteWizardInstanceCommand.exe cute(ExecuteWizardInstanceCommand.java:42)
>
> at
> org.eclipse.emf.common.command.BasicCommandStack.execute(Bas icCommandStack.java:84)
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction. execute(AbstractContributeWizardsAction.java:235)
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction$ 1.widgetSelected(AbstractContributeWizardsAction.java:223)
>
> at
> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListe ner.java:228)
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :84)
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:3823)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3422)
> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2384)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 00)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:490)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:386)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>
>
> I have two other evl scripts running well (but still they dont make use
> of such syntax-need).
> Thanks for all guys !!
>
|
|
|
|
Re: EWL and reserved word as metaclass name (Integer) and instanciation [message #19640 is a reply to message #19595] |
Thu, 04 June 2009 10:52 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Stéphane,
Glad it worked and many thanks for your kind words! It's both refreshing
and encouraging to get some positive feedback every now and then among
problems and bug reports :)
Cheers,
Dimitris
Stéphane wrote:
> Really, Dimitris, you're genius ! ;-)
>
> I'm writting blog tickets in french to spread the word about what you
> are all doing here, got lots of good feedbacks from my friends whoses
> aren't developers, as I'm writting tool to develop easily data-models
> using symfony (php framework) but for now sfDoctrine (php orm) ! Very
> very very handy tools you gave us !!!
>
> I've been using oAW, Acceleo and AndroMDA but for sure, well, in my
> case, Epsilon fits best !
>
> Thanks for all !!!!
>
|
|
|
Re: EWL and reserved word as metaclass name (Integer) and instanciation [message #568813 is a reply to message #19504] |
Thu, 04 June 2009 08:33 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Stephane,
The implicit name of the model behind the tree/GMF editor is Model. As
such, Model!Integer instead of sfdoctrine!Integer should do what you want.
Two minor comments by looking at your code (if I may): you can use "new"
instead of "createInstance". e.g.
var idcolumn : Column;
idcolumn := Column.createInstance();
can be replaced with
var idcolumn : Column;
idcolumn = new Column;
or (even simpler)
var idcolumn : new Column;
Also, you could just use = instead of := since 0.8.5 (see
http://epsilonblog.wordpress.com/2009/05/24/new-in-epsilon-0 -8-5/)
For example
idcolumn.name := 'id';
can now be replaced with
idcolumn.name = 'id';
Cheers,
Dimitris
Stephane wrote:
> Hi list,
>
> I'm trying to get something like creating an Integer instance (which is
> an EClass, part of my meta-model) working with a dynamic model which is
> registered using right-click->Register EPackage, but I get an error.
>
> Here is the ewl:
>
> wizard addIdentifierAsPrimaryKeyToClass {
>
> guard : self.isTypeOf(Class) and not
> self.column.exists(c|c.name.matches('id'))
>
> title : 'Add an Id column as primary key to ' + self.name
>
> do {
>
> self.column.add( self.generateIdPKUnikColumn() );
> }
> }
>
> wizard addIdentifiersAsPrimaryKeyToClasses {
>
> guard : self.isTypeOf(Class)
>
> title : 'Add an Id column as primary key to classes (Model-wide)'
>
> do {
> for( class in Class.allInstances() )
> {
> if( not class.column.exists(c|c.name.matches('id') ) )
> {
> class.column.add( class.generateIdPKUnikColumn() );
> }
> }
> }
> }
>
> operation Class generateIdPKUnikColumn () : Column {
> var idcolumn : Column;
> idcolumn := Column.createInstance();
> idcolumn.name := 'id';
> idcolumn.primary := true;
> idcolumn.unique := true;
> var idtype : sfdoctrine!Integer; <----------- problem here
> idtype := sfdoctrine!Integer.createInstance();
> idcolumn.type = idtype;
> return idcolumn;
> }
>
> I have replaced sfdoctrine!Integer; by sfDoctrine and with Integer alone
> but none does works.
>
> Here is the emfatic head of my meta-model :
>
> @namespace(uri=" http://stephaneerard.wordpress.com/meta-models/sfDoctrine/1. 2",
> prefix="sfdoctrine")
> package sfDoctrine;
>
> And the error with sfDoctrine (same with sfdoctrine) :
> Type 'sfdoctrine!Integer' not found
> (D:\e_workspaces\modeling\sfDoctrine-1.2\tools\wizards\addIdentifierAsPrimaryKeyAndUniqueToClass.ewl@36:28)
>
> at
> org.eclipse.epsilon.eol.execute.TypeExecutor.execute(TypeExe cutor.java:90)
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.VarStatementExecutor.execute (VarStatementExecutor.java:48)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te(StatementBlockExecutor.java:33)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.EolOperation.executeBody(EolOperatio n.java:257)
> at org.eclipse.epsilon.eol.EolOperation.execute(EolOperation.ja va:230)
> at org.eclipse.epsilon.eol.EolOperation.execute(EolOperation.ja va:188)
> at
> org.eclipse.epsilon.eol.EolOperations.execute(EolOperations. java:143)
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on(PointExecutor.java:160)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:66)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:36)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:122)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.ParametersExecutor.execute(P arametersExecutor.java:29)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on(PointExecutor.java:154)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:66)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:36)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:122)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te(StatementBlockExecutor.java:33)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at org.eclipse.epsilon.ewl.EwlWizard.process(EwlWizard.java:78)
> at
> org.eclipse.epsilon.ewl.EwlWizardInstance.process(EwlWizardI nstance.java:66)
>
> at
> org.eclipse.epsilon.ewl.emf.ExecuteWizardInstanceCommand.exe cute(ExecuteWizardInstanceCommand.java:42)
>
> at
> org.eclipse.emf.common.command.BasicCommandStack.execute(Bas icCommandStack.java:84)
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction. execute(AbstractContributeWizardsAction.java:235)
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction$ 1.widgetSelected(AbstractContributeWizardsAction.java:223)
>
> at
> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListe ner.java:228)
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :84)
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:3823)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3422)
> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2384)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 00)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:490)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:386)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>
> And the error with Integer alone (which is not really surprising me,
> anyway) :
> Internal error: java.lang.ClassCastException: java.lang.Integer cannot
> be cast to org.eclipse.emf.ecore.InternalEObject
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleEObject.dynamicSet[EStructuralFeatureImpl .java:2413]
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicSet[Basi cEObjectImpl.java:1126]
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet[BasicEObjec tImpl.java:1100]
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet[BasicEObjec tImpl.java:1071]
>
> at
> org.eclipse.epsilon.emc.emf.EmfPropertySetter.invoke[EmfProp ertySetter.java:53]
>
> at
> org.eclipse.epsilon.eol.execute.AssignExecutor.execute[Assig nExecutor.java:55]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.EolOperation.executeBody[EolOperatio n.java:257]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:230]
> at org.eclipse.epsilon.eol.EolOperation.execute[EolOperation.ja va:188]
> at
> org.eclipse.epsilon.eol.EolOperations.execute[EolOperations. java:143]
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:160]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:66]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:36]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:122]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.execute.ParametersExecutor.execute[P arametersExecutor.java:29]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on[PointExecutor.java:154]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:66]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:36]
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute[PointE xecutor.java:122]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te[StatementBlockExecutor.java:33]
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST[E xecutorFactory.java:184]
>
> at org.eclipse.epsilon.ewl.EwlWizard.process[EwlWizard.java:78]
> at
> org.eclipse.epsilon.ewl.EwlWizardInstance.process[EwlWizardI nstance.java:66]
>
> at
> org.eclipse.epsilon.ewl.emf.ExecuteWizardInstanceCommand.exe cute[ExecuteWizardInstanceCommand.java:42]
>
> at
> org.eclipse.emf.common.command.BasicCommandStack.execute[Bas icCommandStack.java:84]
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction. execute[AbstractContributeWizardsAction.java:235]
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction$ 1.widgetSelected[AbstractContributeWizardsAction.java:223]
>
> at
> org.eclipse.swt.widgets.TypedListener.handleEvent[TypedListe ner.java:228]
> at org.eclipse.swt.widgets.EventTable.sendEvent[EventTable.java :84]
> at org.eclipse.swt.widgets.Widget.sendEvent[Widget.java:1003]
> at org.eclipse.swt.widgets.Display.runDeferredEvents[Display.ja va:3823]
> at org.eclipse.swt.widgets.Display.readAndDispatch[Display.java :3422]
> at org.eclipse.ui.internal.Workbench.runEventLoop[Workbench.jav a:2384]
> at org.eclipse.ui.internal.Workbench.runUI[Workbench.java:2348]
> at org.eclipse.ui.internal.Workbench.access$4[Workbench.java:22 00]
> at org.eclipse.ui.internal.Workbench$5.run[Workbench.java:495]
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault [Realm.java:288]
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench[Work bench.java:490]
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench[PlatformUI.j ava:149]
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start [IDEApplication.java:113]
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run[Eclips eAppHandle.java:193]
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication[EclipseAppLauncher.java:110]
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start[EclipseAppLauncher.java:79]
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run[EclipseS tarter.java:386]
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run[EclipseS tarter.java:179]
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0[Native Method]
> at sun.reflect.NativeMethodAccessorImpl.invoke[Unknown Source]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke[Unknown Source]
> at java.lang.reflect.Method.invoke[Unknown Source]
> at org.eclipse.equinox.launcher.Main.invokeFramework[Main.java: 549]
> at org.eclipse.equinox.launcher.Main.basicRun[Main.java:504]
> at org.eclipse.equinox.launcher.Main.run[Main.java:1236]
> (D:\e_workspaces\modeling\sfDoctrine-1.2\tools\wizards\addIdentifierAsPrimaryKeyAndUniqueToClass.ewl@38:18)
>
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleEObject.dynamicSet(EStructuralFeatureImpl .java:2413)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicSet(Basi cEObjectImpl.java:1126)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjec tImpl.java:1100)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSet(BasicEObjec tImpl.java:1071)
>
> at
> org.eclipse.epsilon.emc.emf.EmfPropertySetter.invoke(EmfProp ertySetter.java:53)
>
> at
> org.eclipse.epsilon.eol.execute.AssignExecutor.execute(Assig nExecutor.java:55)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te(StatementBlockExecutor.java:33)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.EolOperation.executeBody(EolOperatio n.java:257)
> at org.eclipse.epsilon.eol.EolOperation.execute(EolOperation.ja va:230)
> at org.eclipse.epsilon.eol.EolOperation.execute(EolOperation.ja va:188)
> at
> org.eclipse.epsilon.eol.EolOperations.execute(EolOperations. java:143)
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on(PointExecutor.java:160)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:66)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:36)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:122)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.ParametersExecutor.execute(P arametersExecutor.java:29)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.executeOperati on(PointExecutor.java:154)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:66)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:36)
>
> at
> org.eclipse.epsilon.eol.execute.PointExecutor.execute(PointE xecutor.java:122)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at
> org.eclipse.epsilon.eol.execute.StatementBlockExecutor.execu te(StatementBlockExecutor.java:33)
>
> at
> org.eclipse.epsilon.eol.execute.ExecutorFactory.executeAST(E xecutorFactory.java:184)
>
> at org.eclipse.epsilon.ewl.EwlWizard.process(EwlWizard.java:78)
> at
> org.eclipse.epsilon.ewl.EwlWizardInstance.process(EwlWizardI nstance.java:66)
>
> at
> org.eclipse.epsilon.ewl.emf.ExecuteWizardInstanceCommand.exe cute(ExecuteWizardInstanceCommand.java:42)
>
> at
> org.eclipse.emf.common.command.BasicCommandStack.execute(Bas icCommandStack.java:84)
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction. execute(AbstractContributeWizardsAction.java:235)
>
> at
> org.eclipse.epsilon.ewl.emf.AbstractContributeWizardsAction$ 1.widgetSelected(AbstractContributeWizardsAction.java:223)
>
> at
> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListe ner.java:228)
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :84)
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:3823)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3422)
> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2384)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 00)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:490)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:386)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>
>
> I have two other evl scripts running well (but still they dont make use
> of such syntax-need).
> Thanks for all guys !!
>
|
|
|
|
Re: EWL and reserved word as metaclass name (Integer) and instanciation [message #568868 is a reply to message #19595] |
Thu, 04 June 2009 10:52 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Stéphane,
Glad it worked and many thanks for your kind words! It's both refreshing
and encouraging to get some positive feedback every now and then among
problems and bug reports :)
Cheers,
Dimitris
Stéphane wrote:
> Really, Dimitris, you're genius ! ;-)
>
> I'm writting blog tickets in french to spread the word about what you
> are all doing here, got lots of good feedbacks from my friends whoses
> aren't developers, as I'm writting tool to develop easily data-models
> using symfony (php framework) but for now sfDoctrine (php orm) ! Very
> very very handy tools you gave us !!!
>
> I've been using oAW, Acceleo and AndroMDA but for sure, well, in my
> case, Epsilon fits best !
>
> Thanks for all !!!!
>
|
|
|
Powered by
FUDForum. Page generated in 0.29503 seconds