API des Commandes de la Toolbox

Objectif

Définir l'API des Commandes (RCP) de la Toolbox :

  • Liste des Corpus
  • Liste des textes d'un corpus (BFM)
  • Liste des éditions d'un texte
  • Liste des identifiants de page d'une édition d'un texte
  • Nombre de pages d'une édition d'un texte
  • Édition (Quête)
  • Notice (catalogue BFM)
  • Concordances (portail démo)
  • (Requête TIGER)
  • Index
  • Lexique
  • Cooccurrences
  • Table lexicale
  • Progression
  • Spécificités
  • AFC
  • CAH
  • Vue interne
  • Références

Cette API doit permettre d'implémenter :

  • un protocole RESTful au portail (pour l'envoi de résultats en XML)
  • un protocole d'accès direct par URL dans le portail (peut-être la même chose que RESTful ?). Exemples :
    • http://portal.textometrie.org/demo/rest?command=Concordance&path=/DISCOURS&query=%22je%22
    • http://portal.textometrie.org/demo/rest?command=Edition&path=/GRAAL&text=qgraal_cm&edition=ms-colonne,courante&idpage=192b&match=w_qgraal_cm_1234,w_qgraal_cm_1235
  • simplifier le scriptage Groovy : par exemple, appel de
    Concordance(DISCOURS, "je")
  • appels en ligne de commande

Politique des paramètres incomplets et incorrect:

  • Ouvrir le formulaire de concordance sans requête si “query” n'est pas renseigné
  • Il manque un paramètre obligatoire
  • etc.

Autres points :

  • clarifier le lien entre l'historique de navigation web et l'historique de session de travail TXM WEB (appel successif de commandes)
  • clarifier le lien entre la journalisation de l'usage du portail pour l'administrateur (créer un tableau d'appels de commandes avec des paramètres) et une journalisation des appels de servlets

Méthode

État de la plateforme

Avancement dans l'élaboration de la solution

Solution

État de l'art

Éléments de solution

Prototype 0.7.9

Les objets résultats de TXM doivent être repensés pour pouvoir répondre à une API de commande de type cmd_id + param1 + param2 …

Dump du framapad mensuel (d5ohraCKOc)

2 scénarios :
    TXMFunction + TXMParam -> TXMResult
    TXMResult
Pas de TXMFunction
Regle No1 : Faire des compute() dans EditorPart only
Regle No2 : Les params de TXMResult sont stockés dans les TXMPreferences (en utilisant un node_id construit sur la classe du TXMResult)
Ouverture d'un éditeur avec un input générique :
  * new TXMResultEditorInput(TXMResult result) + editor_id -> ouvre editor avec le result
  * new TXMResultEditorInput(TXMResult parent , TXMParam params) + editor_id ouvre l'éditor, pré-rempli les champs et calcul si il y a assez de params
Pensez à l'API des commandes (début d'implémentation dans le portail)
TXMParam : interface à des paramètres
new TXMResultEditorInput(TXMResult result) // jamais null -> this(result.getParent(), result, result.getParent())
new TXMResultEditorInput(TxmResult parent, TXMParam params) + editor_id -> ouvre editor, créé un noeud de pref -> editor.compute() // permet au plugin qui appelle de ne pas connaitre le plugin du résultat
Exemple avec conc -> cooc
// Dans Commande Conc2Cooc appelée par le menu contextuel de la vue Corpus
Commands.open(corpus, ["cmd":"Cooccurrences", "query":"je", left:5, right:10]
// Dans Commands :
void open(TXMResult parent, params) {
    String editor_id = getEditorID(params.cmd);
    def editor_input = new input(parent, params);
    openEditor(id, input);
}
// Dans editor part
// Apres avoir créé  l'UI de l'éditeur dans createPart() , on trouve : 
    
void init(def input) {
        this.input = input
}
 
void createPart() {
    this.result = input.getResult()
    this.parent = input.getParent()
    this.params = input.getParams()

    input.get

    ConcordanceInput input 

    (Corpus)(input.getParent()). // TXMResult

    // parent.

   if (result != null) { // udpate params and show result
        updateEditorFormArea(); // lit TXMPreferences pour remplir les champs du formulaire
        updateEditorResultArea(); // affiche le résultat
    } else { // compute result and show result
        compute(result, params);
    }
}
/org.txm.partition.core/src/org/txm/partition/core/preferences/PartitionDimensionsPreferences.java :
chart_dimensions_display_parts_count_in_title -> display_parts_count_in_title // réglage d'affichage
void compute() {
    
}
"left_context":[size:5, prop:"word"]
key :
    left_conccordance_text_size -> left_context_size -> ?

Version finale

Recette

Protocole de test

Alpha

Beta

État courant

Qui Quand Quoi

public/specs_api_commandes.txt · Dernière modification: 2017/07/05 15:41 par matthieu.decorde@ens-lyon.fr