Ticket #915 (accepted Defect)

Opened 4 years ago

Last modified 4 years ago

Timestamp bubbling when assocs are manipulated manually

Reported by: jri Owned by: jri
Priority: Major Milestone: Release 4.8
Component: DeepaMehta Standard Distribution Version: 4.7
Keywords: Cc: dgf, Malte, JuergeN
Complexity: 5 Area:
Module: deepamehta-time

Description

#510 addresses bubbling up of the modification timestamp when child topics are manipulated manually. Bubbling must takes place also when associations (in particular Aggregations) are manipulated, e.g. manually through the Webclient.

Consider this case: Address is a child type of Event, via Aggr Def. The rationale for Aggr Def is that an event should be indirectly associated with the Person/Institution? the address belongs to (that is sharing the same Address topic). Currently the detail panel does not support assigning an existing address topic to an event (see "Editor for aggregated composites", #337). So, the workaround is to manipulate the Aggregations manually on the topicmap panel.

Example: assign the Address of institution "Literaturhaus" to Event "Lesung":

  1. Create institution "Literaturhaus" and enter its address.
  2. Create event "Lesung", DON'T enter an address. An empty dummy Address topic will be created anyway.
  3. Press OK. The event is now saved.
  4. Reveal the empty dummy Address topic via the detail panel.
  5. Delete it.
  6. Now select "Literaturhaus" and reveal its Address topic.
  7. Create an association between the Event and the Address topic, type it to "Aggregation" with the event being the "Parent" and the address the "Child" (phew, how complicated!)

When you now select the Event topic still no Address is displayed in the detail panel. This is because the Event's modification timestamp is not updated when the association was manipulated, and thus the browser still displays the event from the browser cache.

Change History

comment:1 Changed 4 years ago by jri

  • Status changed from new to accepted

comment:2 Changed 4 years ago by Jörg Richter <jri@…>

In 08be8b543f94e2e3642984cdf2ae22aa4b8ce2be/deepamehta:

Time service: setModified() (#915).

The Time service has a new method:

void setModified(DeepaMehtaObject object)

Updates the modification timestamp of a topic/association.

When a plugin manipulates Composition/Aggregation? associations manually it can call setModified() to mark the parent object as modified in order to let the browser re-fetch it.

See #915.

comment:3 Changed 4 years ago by jri

For sharing Address topics see also ticket:902#comment:14

comment:4 Changed 4 years ago by Jörg Richter <jri@…>

In 34492bef4af6d7fa973299664818982a99ab5bed/deepamehta:

Core: support for association auto-typing (#915).

DeepaMehtaUtils has a new method that supports plugin developers with auto-typing of manually created associations, including setting the role types. Auto-typing is driven by inspecting the types of the associated topics.

RoleModel[] associationAutoTyping(AssociationModel assoc,
                                  String topicTypeUri1, String topicTypeUri2,
                                  String assocTypeUri,
                                  String roleTypeUri1, String roleTypeUri2,
                                  DeepaMehtaService dms)

This method can be used for both, defined associations, and free associations.

A plugin typically calls this method from its preCreateAssociation() listener.

See the Events plugin (#902) for an example.

See #915.

Note: See TracTickets for help on using tickets.