removeduplicates

Crea una lista nueva eliminando los elementos duplicados de una lista existente.

Si algún elemento de la lista original aparece más de una vez, sólo se conserva la primera instancia. De lo contrario, se mantiene el orden de los elementos.

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

    <!-- La lista de relaciones donde
         esta persona es la "fromPerson". -->
    <Attribute name="relationships">
      <type>
        <javaclass name="List">
          <ruleclass name="Relationship"/>
        </javaclass>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <!-- Las personas que están relacionadas con esta persona.

         Cualquier familiar aparece sólo una vez en esta lista,
         aunque una persona pueda estar
         relacionada con otra de más de una manera, por ejemplo
         mi abuelo también puede ser mi tutor legal.-->
    <Attribute name="uniqueRelatives">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <removeduplicates>
          <reference attribute="allRelatives"/>
        </removeduplicates>
      </derivation>
    </Attribute>

    <Attribute name="allRelatives">
      <type>
        <javaclass name="List">
          <ruleclass name="Person"/>
        </javaclass>
      </type>
      <derivation>
        <!-- obtener los familiares de esta persona formando una
             lista de la "toPerson" en el otro extremo de cada
             relación. -->
        <dynamiclist>
          <list>
            <reference attribute="relationships"/>
          </list>
          <listitemexpression>
            <reference attribute="toPerson">
              <current/>
            </reference>
          </listitemexpression>
        </dynamiclist>
      </derivation>
    </Attribute>

  </Class>

  <!-- Una relación de una persona con otra. -->
  <Class name="Relationship">

    <Attribute name="fromPerson">
      <type>
        <ruleclass name="Person"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

    <Attribute name="relationshipType">
      <type>
        <javaclass name="String"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>


    <Attribute name="toPerson">
      <type>
        <ruleclass name="Person"/>
      </type>
      <derivation>
        <specified/>
      </derivation>
    </Attribute>

  </Class>

</RuleSet>