package eu.dnetlib.iis.wf.report; import java.util.List; import com.google.common.collect.ImmutableList; import com.google.gson.JsonElement; import eu.dnetlib.iis.common.schemas.ReportEntry; /** * Converter of {@link ReportEntry} values to json using list * of {@link ReportValueJsonConverter} * * @author madryk */ public class ReportValueJsonConverterManager { private List<ReportValueJsonConverter> converters = ImmutableList.of( new CounterReportValueJsonConverter(), new DurationReportValueJsonConverter()); //------------------------ LOGIC -------------------------- /** * Converts {@link ReportEntry#getValue()} to json using first * applicable underlying {@link ReportValueJsonConverter}. * * @see #setConverters(List) */ public JsonElement convertValue(ReportEntry reportEntry) { for (ReportValueJsonConverter converter : converters) { if (converter.isApplicable(reportEntry.getType())) { return converter.convertValue(reportEntry); } } throw new IllegalArgumentException("No suitable converter of report entry with type " + reportEntry.getType()); } //------------------------ SETTERS -------------------------- public void setConverters(List<ReportValueJsonConverter> converters) { this.converters = converters; } }