singleitem

Permet d'extraire un élément unique d'une liste.

L'expression singleitem peut être utile lorsqu'une liste n'est supposée contenir qu'un seul élément, par exemple, lors du filtrage d'une liste selon des critères, qui ne doivent sélectionner qu'un seul élément de la liste.

L'expression singleitem permet de définir les éléments suivants :

Pour extraire un élément à partir d'un emplacement spécifique d'une liste, voir get dans Opérations de liste utiles.

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

    <Attribute name="dateOfBirth">
      <type>
        <javaclass name="curam.util.type.Date"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

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

    <!-- Le premier né de cette personne -->
    <Attribute name="firstBornChild">
      <type>
        <ruleclass name="Person"/>
      </type>
      <derivation>
        <!-- extrait le premier-né, le cas échéant
             - si aucun enfant, renvoie la valeur null -->
        <singleitem onEmpty="returnNull" onMultiple="returnFirst">
          <!-- trie les enfants par date de naissance -->
          <sort>
            <list alias="child">
              <reference attribute="children"/>
            </list>
            <sortorder>
              <sortitem direction="ascending">
                <reference attribute="dateOfBirth">
                  <current alias="child"/>
                </reference>
              </sortitem>
            </sortorder>
          </sort>

        </singleitem>
      </derivation>

    </Attribute>

    <!-- Extrait l'enregistrement d'informations unique du foyer
         de la mémoire externe - celle-ci doit toujours
         n'en contenir qu'un seul - toute autre valeur entraîne une erreur.  -->
    <Attribute name="householdInformation">
      <type>
        <ruleclass name="HouseholdInformation"/>
      </type>
      <derivation>
        <singleitem onEmpty="error" onMultiple="error">
          <readall ruleclass="HouseholdInformation"/>
        </singleitem>
      </derivation>
    </Attribute>

  </Class>

  <Class name="HouseholdInformation">

    <Attribute name="householdContainsDisabledPerson">
      <type>
        <javaclass name="Boolean"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

  </Class>

</RuleSet>