Nice stuff


I am currently preparing a new release for my GenGMF project. Because the new meta model contains important but incompatible changes I have migrated the GenGMF tooling to a new name space and created a migration script for converting the specific editor models. The new meta model is much smaller than the old one which results in smaller models — I’ve eliminated the need for the mapping elements in the templates. To make the migration as easy as possible I’ve created some helper functions to move corresponding attributes and references. Only the “real” changes in the meta model are migrated using a Xtend script.

To demonstrate the facilities of the CrossNamespaceCopier I’ve created a small meta model…

Demo meta model

As you see the Class2 from the “http://source.namespace” has been eliminated in the “http://target.namespace” and both attributes have been moved - attribute2 to Class1 and attribute3 to Class3. In order to migrate a model instance one has to call the CrossNamespaceCopier which copies the objects while migrating the name spaces according to rules previously set. OtherClass objects from the “http://other.namespace” will be copied as they are. All references and attributes which could not be automatically migrated need to copied in a small script manually.

extension CrossNamespaceCopier;

namespace::target::Class1 migrate(namespace::source::Class1 sc1)
:   let tc1 =
    // initialization for the copier, but the
    // let statement needs to be in the beginning
    (   crossNsInitStaticInstance()
    ->  crossNsSetupNamespaceMapping(
            "http://source.namespace",
            "http://target.namespace")
    // the content for the tc1 variable
    ->  (   (namespace::target::Class1)
            crossNsCopy(sc1)))
    // skipping Class2 in source
:   tc1.setClass3Reference(
            (namespace::target::Class3)
            sc1.class2Reference.class3Reference
            .crossNsCopy())
    // pull up attribute2
->  tc1.setAttribute2(
            sc1.class2Reference.attribute2)
    // pull down attribute3
->  tc1.class3Reference.setAttribute3(
            sc1.class2Reference.attribute3)
    // uninitializing
->  crossNsReleaseStaticInstance()
->  tc1
;

You will find the CrossNamespaceCopier as well as the demo files contained in a zip file.

Let’s take another one from WikiMindMap! As an example - I used it to create a map about the term “Domain-specific Language”…

WikiMindMap - Domain-specific Language

WikiMindMap uses the content from a language-specific (en, de, fr, …) Wikipedia to generate a FreeMind map which is displayed online. Genius!

At least the flowers on the balcony have been copied and pasted with translation.
The question is not ‘Is a picture worth a thousand words?’, but
‘Does a given picture convey the same thousand words to all viewers?’

by Marian Petre in Why looking isn’t always seeing

There will will be two talks about MDSD at the TFH Berlin on the 18th April. Both talks - one about using MDSD as productivity gain with the dynamic framework Grails and the other about a Lego Mindstorms NXT (which I have already seen during the Eclipse DemoCamp in Hamburg) - are very interesting.

See you there!

I have just seen, that by now xText supports external references out of the box. This is a long awaited and really useful feature. Thanks a lot.

I am currently diving into the secrets of GMF - and it's cool

Do you see the difference between the following two pictures?

Pict 1 Pict 2

It was the result of the CatChaser pinning two balloons and part of one of the eight talks held at the Eclipse DemoCamp in Hamburg. A lot of interesting projects and concepts where presented. They made a video of the talks which will be available soon.

One of the intended presenters wasn’t available. They asked me to talk - as substitute - about MetamodelDoc. As I had prepared my slides for the DemoCamp in Berlin already - I agreed. The slides are - of course - available.

Update

After the event in Hamburg the event in Berlin was a success too. There are a lot of interesting projects. One of them - ObjectTeams - I will give a try. It could be described as sophisticated and object oriented AspectJ with dynamic binding (well - ehm …, the language constructs are not the same) and it integrates very nicely into the JDT environment (by replacing the JDT-core plugin :-/). An interesting feature is - you could de-/activate an aspect (it is called Team here) during the lifetime of an object and on a per object basis.

Cloning is so easy if you know what to do.
# xrandr -q
returns with a list of screens, the connected outputs and available modes. For me LVDS is the internal LCD display and VGA-0 the external output. Using this information
# xrandr --output VGA-0 --same-as LVDS
# xrandr --output VGA-0 --auto

is all I have to do to enable my secondary monitor output within linux. All the xorg.conf editing stuff is useless - xrandr just worked.

I wanted to enable xinerama but my XServer crashed when enabled…

You may have seen the two videos from an earlier post. I’ve found another very nice video about Folksonomy and Taxonomy.

Next Page »