Skip to main content



      Home
Home » Modeling » EMF » Update map using EditingDomain
Update map using EditingDomain [message #1769661] Wed, 02 August 2017 09:38 Go to next message
Eclipse UserFriend
I have a model providing an EClass with a reference to a map, like described in the FAQ [1]. Now I would like to update that map using an EditingDomain.

Question 1: how do I create a new Instance of EStringToEStringMapEntry? The model factory does not provide anything here. I guess I could use an AddCommand to add the new entry to my map

Question 2: in case my map contains already an entry with the same key, will the AddCommand be the right choice?

thanks

[1] https://wiki.eclipse.org/EMF/FAQ#How_do_I_create_a_Map_in_EMF.3F
Re: Update map using EditingDomain [message #1769677 is a reply to message #1769661] Wed, 02 August 2017 11:05 Go to previous messageGo to next message
Eclipse UserFriend
This is how org.eclipse.emf.ecore.provider.EAnnotationItemProvider.collectNewChildDescriptors(Collection<Object>, Object) ensures that new map entry children are created for the EAnnotation.details feature:
  /**
   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
   * that can be created under this object.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated NOT
   */
  @Override
  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
  {
    // super.collectNewChildDescriptors(newChildDescriptors, object);

    newChildDescriptors.add
    (createChildParameter
      (EcorePackage.Literals.EANNOTATION__DETAILS,
       EcoreFactory.eINSTANCE.create(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY)));
  }
In the end, it's added with an AddCommand. The AddCommand will not ensure/validate that the keys are unique.
Re: Update map using EditingDomain [message #1769759 is a reply to message #1769677] Thu, 03 August 2017 03:45 Go to previous messageGo to next message
Eclipse UserFriend
Thanks Ed, creation of the map entry works.
As you wrote that the add command will not ensure uniqueness of map keys I guess the correct way would be to create a compound command containing a 'remove existing' and an 'add new entry', right?
Re: Update map using EditingDomain [message #1769770 is a reply to message #1769759] Thu, 03 August 2017 05:39 Go to previous message
Eclipse UserFriend
This really depends on the context. In an Ecore model you can create many EAnnotation.details entries. They all start out with a null key and a null value. If you add more than one, and the Live Validation is enabled (you can set Decoration to Live to generate an editor like that), then there will be error markers to show that the keys aren't unique. The user can fix those errors. The user can also change the value of a key so that it's no longer unique. Nothing prevents those changes, but validation will show them as problems. So I don't know the context in which you're creating the commands. If you know up front that the user wants to add an entry with a given key and value, you could create an AddCommand to add a new entry or create a SetCommand to modify the value feature of an existing entry.
Previous Topic:[CDO] Standalone Java Client - Help!
Next Topic:EAnnotation usage in ecore
Goto Forum:
  


Current Time: Mon Jul 28 12:03:02 EDT 2025

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

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

Back to the top