001package io.konik.csv.processor; 002 003import io.konik.zugferd.unece.codes.Reference; 004import org.slf4j.Logger; 005import org.slf4j.LoggerFactory; 006import org.supercsv.cellprocessor.ift.CellProcessor; 007import org.supercsv.util.CsvContext; 008 009/** 010 * Custom {@link CellProcessor} for {@link Reference}. 011 */ 012public final class ReferenceProcessor implements CellProcessor { 013 014 private static final Logger log = LoggerFactory.getLogger(ReferenceProcessor.class); 015 016 @Override 017 public <T> T execute(Object value, CsvContext context) { 018 019 if (value instanceof String) { 020 String code = (String) value; 021 try { 022 return (T) Reference.getByCode(code); 023 } catch (IllegalArgumentException e) { 024 log.warn("Reference for value {} does not exist", value); 025 } 026 } 027 028 if (value instanceof Reference) { 029 Reference reference = (Reference) value; 030 return (T) reference.getCode(); 031 } 032 033 return null; 034 } 035}