Evolution #1984
Add Map field type
| Status: | Nouveau | Start date: | 10/20/2010 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | - | % Done: | 0% | |
| Category: | API | Estimated time: | 6.00 hours | |
| Target version: | 4 | Spent time: | - |
Description
Actuellement on peut avoir des collections List ou Set. Il serait bien d'avoir aussi des collections Map comme champs. Cela est différent d'un wikitty, car un wikitty a un nombre de champs et des noms de champs prédéfinis.
La clé est toujours une String. La valeur peut-etre de n'importe quel type accepté par Wikitty.
Définition¶
String tagValue map=true
Wikitty field map=true
C'est un tag value sur le champs qui indique si ce champs est une map ou un simple champs.
Pensez a modifier l'implantation de FieldType.isCollection pour retourner vrai pour une map. Et recherche les implications que cela à dans d'autre méthode.
Lorsqu'un champs est une map, le upperbound est automatiquement mis à '*'.
Utilisation¶
De nouvelle méthode seront ajouter sur le Wikitty pour géré les champs de type map
getFieldAsMap(extName, fieldName):Map ( en lecture seul)
putToField(extName, fieldName, key, value):Object (l'ancienne valeur ou null; si value vaut null, cela revient a supprimer cette clé)
getFieldAsXXX(extName, fieldName, key)
on reutilise la methode clear pour les maps
Les méthodes équivalentes seront générées sur l'entité métier
Stockage¶
De la même façon qu'on stocke les listes avec nomdechamps[n/m] on stockera le champs avec pour chaque entrée dans la map une ligne dans la base nomdechamps[key]
Indexation¶
extName.fieldName:key=value (une fois pour chaque entrée de la map)
extName.fieldName.keys:liste des keys
extName.fieldName.values:liste des values
La premiere indexation permettra de faire une recherche précise. La deuxième de faire une recherche sur une cle, et la derniere sur une valeur.
Subtasks
History
#1
Updated by Benjamin Poussin about 1 year ago
- Target version changed from 3.5 to 4