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; }