Modify a resource property: Multiple child

You can modify a property of type of type link to several resources (known as childmulti or multiple child) by passing an array of identifiers in the JSON object. For a modification by property, we will pass several values for the property, one per identifier. However, you can manipulate its content more easily, by adding, deleting, etc. To do this, pass a JSON object, with two properties:

  • $values (or $value): a single value or an array of values (almost always identifiers)

  • $mode: the modification mode

If $mode is missing, the default mode is REPLACE.

Mode REPLACE

In this mode, In this mode, the current value of the property is replaced by the one passed in parameter (in $values). This is the default mode.

These three examples do the same thing:

"property": { "$values": [3, 4, 5], "$mode": "replace" }
"property": { "$values": [3, 4, 5], }
"property": [3, 4, 5]

The property will be modified like this:

  • before: [1, 2, 3]

  • after: [3, 4, 5]

Mode APPEND

In this mode, the values from $values array are added at the end of current value.

Example:

  • before: [1, 2, 3]

  • after: [1, 2, 3, 3, 4, 5]

Mode REMOVE

In this mode, the values from $values are removed from the current value.

Example:

  • before: [1, 2, 3]

  • after: [1, 2]

Mode RETAIN

In this mode, only those values that are in both $values and the current value are retained.

Example:

  • before: [1, 2, 3]

  • after: [3]

Mode APPENDNEW

In this mode, the values from $values array are added at the end of current value, if they are not already there.

Example:

  • before: [1, 2, 3]

  • after: [1, 2, 3, 4, 5]

Mode REMOVEFIRST

In this mode, we delete the first occurrence of each value we have in $values.

Example:

  • before: [1, 2, 3, 1, 4, 5]

  • after: [2, 3, 1, 5]

Mode REMOVELAST

In this mode, we delete the last occurrence of each value we have in $values.

Example:

  • before: [1, 2, 3, 1, 4, 5]

  • after: [1, 2, 3, 5]

Mode CLEAR

In this mode, we delete all the current values ($values is ignored, and can be omitted, or empty, or null).

Mode MAP

In this mode, we replace the identifiers using a mapping system old identifier=new identifier. So the $values must contains mappings, as JSONObject, where properties are ids to be replaced, and values corresponding new id to replace with.

Example:

  • before: [1, 2, 3, 4, 5]

  • after: [7, 6, 3, 4, 5]

The different mappings are merged before being applied, from left to right, with priority to the first occurence.

Example:

  • before: [1, 2, 3, 4, 5]

  • after: [6, 7, 8, 11, 5]

Mode MULTIPLE

This mode allows you to apply several commands sequentially. You just have to indicate several commands in an array.

  • before: [1, 2, 3, 4, 5]

  • after: [4, 5, 6, 7]