package com.megatim.fdxcommons.tools.database.queries.metadata; import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException; import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException; import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError; import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow; import com.megatim.fdxcommons.tools.database.contrat.TypeFichierInsertMetaData; import com.megatim.fdxcommons.tools.database.exceptions.TypeFichierDataBadRequest; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * * @author Gabuntu */ public class ApiTypeFichierInsertData implements TypeFichierInsertMetaData { private final FdxParsedData fdxParsedData; private final String tableName; public ApiTypeFichierInsertData(String tableName, FdxParsedData fdxParsedData) { this.tableName = tableName; this.fdxParsedData = fdxParsedData; } @Override public String tableName() { return tableName; } @Override public List columnNames() throws TypeFichierDataBadRequest, BadDataValueException, LocalDateTimeValueParseError, ColumnNotFoundException { //On retourne les colonnes de l'entité return fdxParsedData.data().get(0) .entrySet() .stream() .map(e -> e.getKey()) .sorted((e1, e2) -> e1.compareTo(e2)) //On se rassure de classer le résultat .collect(Collectors.toList()); } @Override public List rows() throws TypeFichierDataBadRequest, BadDataValueException, LocalDateTimeValueParseError, ColumnNotFoundException { List rows = new ArrayList<>(); for (Map entity : fdxParsedData.data()) { rows.add(new DefaultTypeFichierDataRow(entity)); } return rows; } }