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