Uploaded image for project: 'Magnolia'
  1. Magnolia
  2. MAGNOLIA-4692

CLONE -MultiSelect does not keep the order of its value items (NodeDatas)

    XMLWordPrintable

Details

    Description

      If you use the multiSelect control in a dialog to select three nodes A, B and C, Magnolia will correctly save something like

      • myMultiValueNode
        • 0: A
        • 1: B
        • 2: C

      But when you open the dialog the next time, chances are that the order will not be correct anymore. You save again and the order will now also be messed up in the repository. I don't know exactly why this is happening, but it boils down to Content.getNodeDataCollection() not returning the nodes in the "proper" order.

      However this is easily fixed: Simply sort the NodeDatas by name when retrieved from the Content object:

      ArrayList<NodeData> nodeDatas = new ArrayList<NodeData>(this.getStorageNode().getContent(this.getName()).getNodeDataCollection());

      Collections.sort(nodeDatas, new Comparator() {
      @Override
      public int compare(Object arg0, Object arg1)

      { return ((NodeData) arg0).getName().compareTo(((NodeData) arg1).getName()); }

      });
      Iterator it = nodeDatas.iterator();
      ...

      The attached patch does exactly this.

      Checklists

        Acceptance criteria

        Attachments

          Issue Links

            Activity

              People

                jsimak Jaroslav Simak
                will Will Scheidegger
                Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:

                  Checklists

                    Bug DoR
                    Task DoD

                    Time Tracking

                      Estimated:
                      Original Estimate - 1h
                      1h
                      Remaining:
                      Remaining Estimate - 1h
                      1h
                      Logged:
                      Time Spent - Not Specified
                      Not Specified