LoadCatalogEnrichedGlassesFieldSetMapper.java

package com.sintia.ffl.admin.optique.catalogue.batch.reader.loadcatalog;

import com.sintia.ffl.admin.optique.catalogue.models.EnrichedGlassesCSV;
import org.springframework.batch.item.file.mapping.FieldSetMapper;
import org.springframework.batch.item.file.transform.FieldSet;
import org.springframework.validation.BindException;

public class LoadCatalogEnrichedGlassesFieldSetMapper implements FieldSetMapper<EnrichedGlassesCSV> {

	@Override
	public EnrichedGlassesCSV mapFieldSet(FieldSet fieldSet) throws BindException {
		EnrichedGlassesCSV result = new EnrichedGlassesCSV();
		result.setMaker(fieldSet.readString("maker"));
		result.setProvider(fieldSet.readString("provider"));
		result.setGlassOptoCode(fieldSet.readString("glassOptoCode"));
		result.setClassCode(fieldSet.readString("glassClass"));
		result.setClassCodeRepo(fieldSet.readString("glassClassRepo"));
		result.setGlassName(fieldSet.readString("glassName"));
		result.setGlassNameRepo(fieldSet.readString("glassNameRepo"));
		result.setGeometry(fieldSet.readString("geometry"));
		result.setGeometryRepo(fieldSet.readString("geometryRepo"));
		result.setMaterial(fieldSet.readString("material"));
		result.setMaterialRepo(fieldSet.readString("materialRepo"));
		result.setSurfaceType("AS".equals(fieldSet.readString("surfaceType")));
		result.setSurfaceTypeRepo("AS".equals(fieldSet.readString("surfaceTypeRepo")));
		result.setHardened("DU".equals(fieldSet.readString("hardened")));
		result.setHardenedRepo("DU".equals(fieldSet.readString("hardenedRepo")));
		result.setAntiReflection("SAR".equals(fieldSet.readString("antiReflection")));
		result.setAntiReflectionRepo("SAR".equals(fieldSet.readString("antiReflectionRepo")));
		result.setPhotochromic("PR".equals(fieldSet.readString("photochromic")));
		result.setPhotochromicRepo("PR".equals(fieldSet.readString("photochromicRepo")));
		result.setRefractiveIndex(
				!"".equals(fieldSet.readString("refractiveIndex"))
						? Integer.valueOf(fieldSet.readString("refractiveIndex"))
						: null);
		result.setRefractiveIndexRepo(!"".equals(fieldSet.readString("refractiveIndexRepo"))
				? Integer.valueOf(fieldSet.readString("refractiveIndexRepo"))
				: null);
		result.setTinted("CO".equals(fieldSet.readString("tinted")));
		result.setTintedRepo("CO".equals(fieldSet.readString("tinted")));
		result.setAction(fieldSet.readString("action"));
		// We test first if the field expiryDate has a value, because otherwise we will
		// have some IllegalArgumentException when the field is empty or when the
		// value is not correct. And we will not be able to differentiate them.
		if (!"".equals(fieldSet.readString("expiryDate"))) {
			result.setExpiryDate(new java.sql.Date(fieldSet.readDate("expiryDate", "dd/MM/yyyy")
					.getTime()).toLocalDate());
		}
		if (!"".equals(fieldSet.readString("startDate"))) {
			result.setStartDate(new java.sql.Date(fieldSet.readDate("startDate", "dd/MM/yyyy")
					.getTime()).toLocalDate());
		}
		result.setActionCodeDelta(fieldSet.readString("actionCodeDelta"));
		result.setCorrectedData(fieldSet.readString("correctedData"));
		result.setComment(fieldSet.readString("comment"));
		return result;
	}

}