package com.alibaba.excel.metadata; import java.util.List; import java.util.Locale; import java.util.Map; import com.alibaba.excel.converters.Converter; import lombok.Data; import lombok.NoArgsConstructor; /** * Write/read holder * * @author Jiaju Zhuang */ @Data @NoArgsConstructor public abstract class AbstractHolder implements ConfigurationHolder { /** * Record whether it's new or from cache */ private Boolean newInitialization; /** * You can only choose one of the {@link AbstractHolder#head} and {@link AbstractHolder#clazz} */ private List> head; /** * You can only choose one of the {@link AbstractHolder#head} and {@link AbstractHolder#clazz} */ private Class clazz; /** * Some global variables */ private GlobalConfiguration globalConfiguration; /** *

* Read key: *

* Write key: */ private Map> converterMap; public AbstractHolder(BasicParameter basicParameter, AbstractHolder prentAbstractHolder) { this.newInitialization = Boolean.TRUE; if (basicParameter.getHead() == null && basicParameter.getClazz() == null && prentAbstractHolder != null) { this.head = prentAbstractHolder.getHead(); } else { this.head = basicParameter.getHead(); } if (basicParameter.getHead() == null && basicParameter.getClazz() == null && prentAbstractHolder != null) { this.clazz = prentAbstractHolder.getClazz(); } else { this.clazz = basicParameter.getClazz(); } this.globalConfiguration = new GlobalConfiguration(); if (basicParameter.getAutoTrim() == null) { if (prentAbstractHolder == null) { globalConfiguration.setAutoTrim(Boolean.TRUE); } else { globalConfiguration.setAutoTrim(prentAbstractHolder.getGlobalConfiguration().getAutoTrim()); } } else { globalConfiguration.setAutoTrim(basicParameter.getAutoTrim()); } if (basicParameter.getLocale() == null) { if (prentAbstractHolder == null) { globalConfiguration.setLocale(Locale.getDefault()); } else { globalConfiguration.setLocale(prentAbstractHolder.getGlobalConfiguration().getLocale()); } } else { globalConfiguration.setLocale(basicParameter.getLocale()); } } @Override public Map> converterMap() { return getConverterMap(); } @Override public GlobalConfiguration globalConfiguration() { return getGlobalConfiguration(); } @Override public boolean isNew() { return getNewInitialization(); } }