BatchCatalogueOptique.java

package com.sintia.ffl.admin.optique.catalogue.util;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.core.convert.converter.Converter;
import org.springframework.lang.NonNull;

import java.util.HashMap;
import java.util.Map;

/**
 * Énumération des batchs de chargement du catalogue commun
 */
@AllArgsConstructor
@Getter
public enum BatchCatalogueOptique {

	JOB_IMPORT_FABRICANT_DISTRIBUTEUR("importFabricantDistributeur"),
	JOB_ENRICH_ALL_CATALOG("enrichAllCatalogs"),
	JOB_LOAD_ALL_CATALOG("loadAllCatalogs"),
	JOB_PEREMPTION_VERRES("peremptionVerreJob"),
	JOB_PEREMPTION_VERRES_ABSENTS("peremptionVerresAbsentsJob"),
	JOB_PURGE_VERRE("purgeVerresJob");

	private static final Map<String, BatchCatalogueOptique> VALUES = new HashMap<>();

	static {
		VALUES.put(JOB_IMPORT_FABRICANT_DISTRIBUTEUR.jobName, JOB_IMPORT_FABRICANT_DISTRIBUTEUR);
		VALUES.put(JOB_ENRICH_ALL_CATALOG.jobName, JOB_ENRICH_ALL_CATALOG);
		VALUES.put(JOB_LOAD_ALL_CATALOG.jobName, JOB_LOAD_ALL_CATALOG);
		VALUES.put(JOB_PEREMPTION_VERRES.jobName, JOB_PEREMPTION_VERRES);
		VALUES.put(JOB_PEREMPTION_VERRES_ABSENTS.jobName, JOB_PEREMPTION_VERRES_ABSENTS);
		VALUES.put(JOB_PURGE_VERRE.jobName, JOB_PURGE_VERRE);
	}

	private final String jobName;

	/** Convertisseur pour utilisation de l'énumération en tant que type de paramètre d'API **/
	public static class StringToEnumConverter implements Converter<String, BatchCatalogueOptique> {

		@Override
		public BatchCatalogueOptique convert(@NonNull String source) {
			if (!VALUES.containsKey(source)){
				throw new IllegalArgumentException("Valeur incorrecte pour l'énumération BatchCatalogueOptique");
			}
			return VALUES.get(source);
		}

	}
	
}