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

org.sfm.poi.impl.RowGetterFactory Maven / Gradle / Ivy

package org.sfm.poi.impl;


import org.apache.poi.ss.usermodel.Row;
import org.sfm.csv.CsvColumnKey;
import org.sfm.map.ColumnDefinition;
import org.sfm.map.GetterFactory;
import org.sfm.map.impl.getter.joda.JodaTimeGetterFactory;

//IFJAVA8_START
import org.sfm.map.impl.getter.time.JavaTimeGetterFactory;
import java.time.*;
//IFJAVA8_END
import org.sfm.reflect.Getter;
import org.sfm.reflect.TypeHelper;

import java.lang.reflect.Type;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@SuppressWarnings("unchecked")
public class RowGetterFactory implements GetterFactory {


    private static final Map, GetterFactory> getterFactories = new HashMap, GetterFactory>();
    private static final JodaTimeGetterFactory jodaTimeGetterFactory;

    static {
        getterFactories.put(String.class, new GetterFactory() {
            @Override
            public 

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiStringGetter(key.getIndex()); } }); getterFactories.put(Date.class, new GetterFactory() { @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiDateGetter(key.getIndex()); } }); getterFactories.put(Byte.class, new GetterFactory() { @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiByteGetter(key.getIndex()); } }); getterFactories.put(Character.class, new GetterFactory() { @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiCharacterGetter(key.getIndex()); } }); getterFactories.put(Short.class, new GetterFactory() { @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiShortGetter(key.getIndex()); } }); getterFactories.put(Integer.class, new GetterFactory() { @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiIntegerGetter(key.getIndex()); } }); getterFactories.put(Long.class, new GetterFactory() { @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiLongGetter(key.getIndex()); } }); getterFactories.put(Float.class, new GetterFactory() { @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiFloatGetter(key.getIndex()); } }); getterFactories.put(Double.class, new GetterFactory() { @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiDoubleGetter(key.getIndex()); } }); getterFactories.put(Boolean.class, new GetterFactory() { @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { return (Getter) new PoiBooleanGetter(key.getIndex()); } }); getterFactories.put(byte.class, getterFactories.get(Byte.class)); getterFactories.put(char.class, getterFactories.get(Character.class)); getterFactories.put(short.class, getterFactories.get(Short.class)); getterFactories.put(int.class, getterFactories.get(Integer.class)); getterFactories.put(long.class, getterFactories.get(Long.class)); getterFactories.put(float.class, getterFactories.get(Float.class)); getterFactories.put(double.class, getterFactories.get(Double.class)); getterFactories.put(boolean.class, getterFactories.get(Boolean.class)); //IFJAVA8_START JavaTimeGetterFactory javaTimeGetterFactory = new JavaTimeGetterFactory(getterFactories.get(Date.class)); getterFactories.put(LocalDate.class, javaTimeGetterFactory); getterFactories.put(LocalDateTime.class, javaTimeGetterFactory); getterFactories.put(LocalTime.class, javaTimeGetterFactory); getterFactories.put(OffsetDateTime.class, javaTimeGetterFactory); getterFactories.put(OffsetTime.class, javaTimeGetterFactory); getterFactories.put(ZonedDateTime.class, javaTimeGetterFactory); getterFactories.put(Instant.class, javaTimeGetterFactory); getterFactories.put(Year.class, javaTimeGetterFactory); getterFactories.put(YearMonth.class, javaTimeGetterFactory); //IFJAVA8_END jodaTimeGetterFactory = new JodaTimeGetterFactory(getterFactories.get(Date.class)); } @SuppressWarnings("unchecked") @Override public

Getter newGetter(Type target, CsvColumnKey key, ColumnDefinition columnDefinition) { Class targetClass = TypeHelper.toClass(target); final GetterFactory rowGetterFactory = getterFactories.get(targetClass); if (rowGetterFactory != null) { return rowGetterFactory.newGetter(target, key, columnDefinition); } else if (TypeHelper.isEnum(target)) { return new PoiEnumGetter(key.getIndex(), TypeHelper.toClass(target)); } else { Getter getter = jodaTimeGetterFactory.newGetter(target, key, columnDefinition); if (getter != null) return getter; } return null; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy