All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.simpleflatmapper.csv.impl.cellreader.DateCellValueReader Maven / Gradle / Ivy

package org.simpleflatmapper.csv.impl.cellreader;

import org.simpleflatmapper.csv.CellValueReader;
import org.simpleflatmapper.csv.ParsingContext;
import org.simpleflatmapper.csv.impl.ParsingException;
import org.simpleflatmapper.map.ParsingContextProvider;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import static org.simpleflatmapper.util.Asserts.requireNonNull;

public class DateCellValueReader implements CellValueReader, ParsingContextProvider {
	
	private final int index;
    private final SimpleDateFormat sdf;
	public DateCellValueReader(int index, String pattern, TimeZone timeZone) {
        this.index = index;
        this.sdf =  new SimpleDateFormat(pattern);
        this.sdf.setTimeZone(requireNonNull("timeZone", timeZone));
	}
	
	@Override
	public Date read(char[] chars, int offset, int length, ParsingContext parsingContext) {
		if (length == 0) return null;

		String str = new String(chars, offset, length);
		try {
			DateFormat df = (DateFormat) parsingContext.getContext(index);
			return df.parse(str);
		} catch (ParseException e) {
			throw new ParsingException(e.getMessage());
		}
	}

    @Override
    public Object newContext() {
        return sdf.clone();
    }

    @Override
    public String toString() {
        return "DateCellValueReader{" +
                "index=" + index +
                ", timeZone=" + sdf.getTimeZone().getDisplayName() +
                ", pattern='" + sdf.toPattern() + '\'' +
                '}';
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy