Newbie question [message #7457] |
Sat, 24 December 2005 20:39  |
Eclipse User |
|
|
|
Originally posted by: info.dfm2html.com
Hello!
Can anybody tell me how to work with EMFT?
I can check out org.eclipse.emft in the CVS, but
how to I start the examples and install the plugins in there?
The plugins are not displayed in an eclipse runtime configuration.
THX
|
|
|
|
Re: Newbie question [message #9754 is a reply to message #7469] |
Wed, 28 December 2005 13:11  |
Eclipse User |
|
|
|
Originally posted by: cdamus.ca.ibm.com
Hi, Jrg,
Regarding the OCL expression that you tried to formulate: if you want to
select the author's books that have more than 100 pages, then you need:
books->select(pages >= 100)
because
books->collect(pages >= 100)
will give you a collection of booleans indicating for each book whether it
has more than 100 pages.
You can also specify an iterator variable to assign to each book via:
books->select(b | b.pages >= 100)
or even
books->select(b : Book | b.pages >= 100)
OCL does not resemble SQL in any way nor have any like capabilities. For
the definitive reference on OCL, see the language specification at
http://www.omg.org/technology/documents/modeling_spec_catalo g.htm#UML
(click on the "UML 2 OCL Available Specification" link). There may be other
resources on the Internet to help you familiarize yourself with the OCL
language.
Regarding your other question: the OCL parser works equally well with
dynamic EObjects as it does with EObjects from generated package
implementations. Just load the library.ecore model, register the EPackage
that it contains in the global package registry
(EPackage.Registry.INSTANCE), and use its factory
(epackage.getEFactoryInstance()) to instantiate the various EClasses. The
resulting dynamic EObjects can be used as the context for parsing OCL
expressions in the IOclHelper API.
HTH,
Christian
Jrg wrote:
> I meanwhile figured it out, but not downloaded something of
> the EMFT CVS projects but used org.eclipse.emf.ocl
> already delivered with emf.
> (I just could not get it run with CVS EMFT).
>
> In the library example, I select an EAuthor object
> in the sample editor. Now following query fails:
>
> books->collect(pages | pages>=100)
>
> with message
> AnyType: source for operation (greaterThanEqual) must have compatible
> method: compareTo
>
>
> I just have no overview over expressions which would work.
> Can anyone post an example how to do a normal SQL
> select * from .. where .. in this OCL grammar?
> Tried to interpret OCLGrammar.g, but this was to complex finally.
>
> Another example would be helpful how to declare local variables:
> Set {Book b | b in books}
>
> does not work:
>
> unexpected token: Book
>
> Another question is: How do I
> create instances for the library example with only having library.ecore
> available (so without java-implementation classes, only using
> some kind of reflective API) and how can I pass such instances (stored as
> XMI-files) to the ocl-parser?
|
|
|
Re: Newbie question [message #562194 is a reply to message #7457] |
Mon, 26 December 2005 15:32  |
Eclipse User |
|
|
|
Originally posted by: info.dfm2html.com
I meanwhile figured it out, but not downloaded something of
the EMFT CVS projects but used org.eclipse.emf.ocl
already delivered with emf.
(I just could not get it run with CVS EMFT).
In the library example, I select an EAuthor object
in the sample editor. Now following query fails:
books->collect(pages | pages>=100)
with message
AnyType: source for operation (greaterThanEqual) must have compatible
method: compareTo
I just have no overview over expressions which would work.
Can anyone post an example how to do a normal SQL
select * from .. where .. in this OCL grammar?
Tried to interpret OCLGrammar.g, but this was to complex finally.
Another example would be helpful how to declare local variables:
Set {Book b | b in books}
does not work:
unexpected token: Book
Another question is: How do I
create instances for the library example with only having library.ecore
available (so without java-implementation classes, only using
some kind of reflective API) and how can I pass such instances (stored as
XMI-files) to the ocl-parser?
|
|
|
Re: Newbie question [message #562320 is a reply to message #7469] |
Wed, 28 December 2005 13:11  |
Eclipse User |
|
|
|
Originally posted by: cdamus.ca.ibm.com
Hi, Jrg,
Regarding the OCL expression that you tried to formulate: if you want to
select the author's books that have more than 100 pages, then you need:
books->select(pages >= 100)
because
books->collect(pages >= 100)
will give you a collection of booleans indicating for each book whether it
has more than 100 pages.
You can also specify an iterator variable to assign to each book via:
books->select(b | b.pages >= 100)
or even
books->select(b : Book | b.pages >= 100)
OCL does not resemble SQL in any way nor have any like capabilities. For
the definitive reference on OCL, see the language specification at
http://www.omg.org/technology/documents/modeling_spec_catalo g.htm#UML
(click on the "UML 2 OCL Available Specification" link). There may be other
resources on the Internet to help you familiarize yourself with the OCL
language.
Regarding your other question: the OCL parser works equally well with
dynamic EObjects as it does with EObjects from generated package
implementations. Just load the library.ecore model, register the EPackage
that it contains in the global package registry
(EPackage.Registry.INSTANCE), and use its factory
(epackage.getEFactoryInstance()) to instantiate the various EClasses. The
resulting dynamic EObjects can be used as the context for parsing OCL
expressions in the IOclHelper API.
HTH,
Christian
Jrg wrote:
> I meanwhile figured it out, but not downloaded something of
> the EMFT CVS projects but used org.eclipse.emf.ocl
> already delivered with emf.
> (I just could not get it run with CVS EMFT).
>
> In the library example, I select an EAuthor object
> in the sample editor. Now following query fails:
>
> books->collect(pages | pages>=100)
>
> with message
> AnyType: source for operation (greaterThanEqual) must have compatible
> method: compareTo
>
>
> I just have no overview over expressions which would work.
> Can anyone post an example how to do a normal SQL
> select * from .. where .. in this OCL grammar?
> Tried to interpret OCLGrammar.g, but this was to complex finally.
>
> Another example would be helpful how to declare local variables:
> Set {Book b | b in books}
>
> does not work:
>
> unexpected token: Book
>
> Another question is: How do I
> create instances for the library example with only having library.ecore
> available (so without java-implementation classes, only using
> some kind of reflective API) and how can I pass such instances (stored as
> XMI-files) to the ocl-parser?
|
|
|
Powered by
FUDForum. Page generated in 0.02996 seconds