sort

Permet de créer une nouvelle liste en triant les membres d'une liste existante selon un ordre de tri spécifique.

Une expression sort permet de définir les éléments suivants :

L'élément sortorder permet de définir un ou plusieurs éléments sortitem, chacun spécifiant l'élément selon lequel le tri doit être effectué et si le tri doit être effectué dans l'ordre croissant ou décroissant.

Les éléments sortitem sont listés par ordre d'importance ; chaque sortitem est évalué uniquement si deux éléments triés sont identiques en ce qui concerne l'élément sortitem le plus important.

Dans chaque sortitem, vous pouvez utiliser current pour faire référence à l'élément de liste trié. En général, chaque élément sortitem fait référence à un attribut ou calcul de l'élément de liste current.

Si deux (ou plus) éléments de la liste sont identiques en ce qui concerne tous les éléments sortitem, ils sont alors renvoyés dans le même ordre relatif que la liste source.

Le comportement de l'expression sort est similaire à celui de la clause SQL ORDER BY.

<?xml version="1.0" encoding="UTF-8"?>
<RuleSet name="Example_sort"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation=
"http://www.curamsoftware.com/CreoleRulesSchema.xsd">
  <Class name="Household">

    <Attribute name="members">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- Classe les membres en fonction de leur âge (du plus vieux au plus jeune) ;
         dans le cas des membres ayant le même âge, ceux-ci sont
         classés selon l'ordre alphabétique de leur prénom. -->
    <Attribute name="sortedMembers">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <sort>
          <list>
            <reference attribute="members"/>
          </list>
          <sortorder>
            <sortitem direction="descending">
              <!-- L'âge de la personne dans la liste -->
              <reference attribute="age">
                <current/>
              </reference>
            </sortitem>
            <!-- Le prénom de la personne dans la liste -->
            <sortitem direction="ascending">
              <reference attribute="firstName">
                <current/>
              </reference>
            </sortitem>
          </sortorder>
        </sort>
      </derivation>
    </Attribute>

  </Class>

  <Class name="Person">

    <Initialization>
      <Attribute name="firstName">
        <type>
          <javaclass name="String"/>
        </type>
      </Attribute>
      <Attribute name="age">
        <type>
          <javaclass name="Integer"/>
        </type>
      </Attribute>
    </Initialization>

  </Class>

</RuleSet>