Project

General

Profile

Créer un convertisseur (plugin modifiant une colonne d'un dataset)

La méthode pour créer un convertisseur est décrite sur la documentation technique officiel: https://github.com/SITools2/SITools2-core/wiki/Technical%20documentation#dev_convertisseur_sortie
En résumé, trois fonctions:
PathPreviewConverter() -> dans lequel on déclare les entrées/sorties,
getConversionOf(Record record) -> méthode qui sera appellé pour chaque ligne de votre dataset afin de modifier la colonne de sortie,
getValidator() -> sur lequel ont défini les contraintes voulus sur les entrées/sorties du formulaire de création de votre converter dans l'admin sitools.

+Le java du converter doit être placé dans le dossier "fr.ias.sitools.converters" et le nom du converter doit être renseigné dans le fichier "fr.cnes.sitools.converter.ConverterHelper".

Dans le cas de Corot:

Convertisseur "PathPreviewConverter" prenant les colonnes file, run_code et corotid en entrée et la colonne light_curve en sortie.

Ces entrées sont déclarés dans la fonction PathPreviewConverter():

        ConverterParameter colFilename = new ConverterParameter("colFilename", "row of dataset with the File name",ConverterParameterType.CONVERTER_PARAMETER_IN);
 ...
        this.addParam(colFilename);
 ...

Traitement fait dans la fonction getConversionOf(Record record), en l'occurence modifier le PathPreview en fonction du CorotId, du RunCode et du FileName.

       Record out = record;
       AttributeValue attrOut = this.getOutParam("colPathPreviewConvert", out);         
        AttributeValue attrFilenameIn = this.getInParam("colFilename", out);
...
        if (!isNull(attrFilenameIn) )
        {
            try{
                String input = attrFilenameIn.getValue().toString();
...
                String result = ...
                attrOut.setValue(result);
                }
       }
return out;

Et les seuls contraintes voulus sont que toutes les colonnes soient remplis dans le formulaire de création du converter sur l'admin sitools:

    public Validator<AbstractConverter> getValidator() {

    return new Validator<AbstractConverter>() {

      @Override
      public Set<ConstraintViolation> validate(AbstractConverter item) {
        Set<ConstraintViolation> constraints = new HashSet<ConstraintViolation>();
        Map<String, ConverterParameter> params = item.getParametersMap();
        ConverterParameter param = params.get("colFilename");

        if(param.getAttachedColumn().isEmpty()){
          ConstraintViolation constraint = new ConstraintViolation();
          constraint.setMessage("You must choose the column with the File name");
          constraint.setLevel(ConstraintViolationLevel.CRITICAL);
          constraint.setValueName(param.getName());
          constraints.add(constraint);
        }
...
        return constraints;
       }