// Path: excel/src/main/java/com/bing/excel/core/handler/ConverterHandler.java
// public interface ConverterHandler {
// 
// 	
// 	/**
// 	 * Get default FieldConverter which is difined by <code>BaseGlobalConverterMapper</code> or user. 
// 	 * @param keyFieldType
// 	 * @return defaultConvetter or null
// 	 */
// 	FieldValueConverter getLocalConverter(Class<?> keyFieldType);
// 
// 	/**
// 	 * Registe converter for this {@code Class} clazz.
// 	 * @param clazz
// 	 * @param converter
// 	 */
// 	void registerConverter(Class<?> clazz, FieldValueConverter converter);
// 	
// 	
// }
// 
// Path: excel/src/main/java/com/bing/excel/converter/AbstractFieldConvertor.java
// public class AbstractFieldConvertor implements FieldValueConverter {
// 
// 	@Override
// 	public boolean canConvert(Class<?> clz) {
// 
// 		return false;
// 	}
// 
// 	@Override
// 	public OutValue toObject(Object source, ConverterHandler converterHandler) {
// 		if(source==null){
// 			return null;
// 		}
// 		return new OutValue(OutValue.OutType.STRING, source.toString());
// 	}
// 
// 	@Override
// 	public Object fromString(String cell, ConverterHandler converterHandler,
// 			Type targetType) {
// 		if (cell == null) {
// 			return null;
// 		}
// 		return cell;
// 	}
// 
// }
// 
// Path: excel/src/main/java/com/bing/excel/vo/OutValue.java
// public class OutValue {
// 	public enum OutType {
// 		INTEGER, LONG, DOUBLE, STRING, DATE, UNDEFINED
// 	}
// 	
// 	private OutType outType;
// 	private Object value;
// 	
// 	
// 	
// 	public OutValue(OutType outType, Object value) {
// 		super();
// 		this.outType = outType;
// 		this.value = value;
// 	}
// 	public static OutValue intValue(Object obj){
// 		return new OutValue(OutType.INTEGER,obj);
// 	}
// 	public static OutValue doubleValue(Object obj){
// 		return new OutValue(OutType.DOUBLE,obj);
// 	}
// 	public static OutValue longValue(Object obj){
// 		return new OutValue(OutType.LONG,obj);
// 	}
// 	public static OutValue stringValue(Object obj){
// 		return new OutValue(OutType.STRING,obj);
// 	}
// 	public static OutValue dateValue(Object obj){
// 		return new OutValue(OutType.DATE,obj);
// 	}
// 	public OutType getOutType() {
// 		return outType;
// 	}
// 	public void setOutType(OutType outType) {
// 		this.outType = outType;
// 	}
// 	public Object getValue() {
// 		return value;
// 	}
// 	public void setValue(Object value) {
// 		this.value = value;
// 	}
// 	
// }


import java.lang.reflect.Type;
import com.bing.excel.core.handler.ConverterHandler;
import com.bing.excel.converter.AbstractFieldConvertor;
import com.bing.excel.vo.OutValue;
import com.google.common.base.Strings;
package com.bing.excel.converter.base;



public final class ShortFieldConverter extends AbstractFieldConvertor {

	@Override
	public boolean canConvert(Class<?> clz) {
		 return clz.equals(short.class) || clz.equals(Short.class);
	}

	@Override
	public Object fromString(String cell, ConverterHandler converterHandler, Type targetType) {
		if(Strings.isNullOrEmpty(cell)){
			return null;
		}
		int value = Integer.valueOf(cell).intValue();
    	if(value < Short.MIN_VALUE || value > Short.MAX_VALUE) {
    		throw new NumberFormatException("For input string: \"" + cell + '"');
    	}
        return new Short((short)value);
	}

	@Override
// Path: excel/src/main/java/com/bing/excel/core/handler/ConverterHandler.java
// public interface ConverterHandler {
// 
// 	
// 	/**
// 	 * Get default FieldConverter which is difined by <code>BaseGlobalConverterMapper</code> or user. 
// 	 * @param keyFieldType
// 	 * @return defaultConvetter or null
// 	 */
// 	FieldValueConverter getLocalConverter(Class<?> keyFieldType);
// 
// 	/**
// 	 * Registe converter for this {@code Class} clazz.
// 	 * @param clazz
// 	 * @param converter
// 	 */
// 	void registerConverter(Class<?> clazz, FieldValueConverter converter);
// 	
// 	
// }
// 
// Path: excel/src/main/java/com/bing/excel/converter/AbstractFieldConvertor.java
// public class AbstractFieldConvertor implements FieldValueConverter {
// 
// 	@Override
// 	public boolean canConvert(Class<?> clz) {
// 
// 		return false;
// 	}
// 
// 	@Override
// 	public OutValue toObject(Object source, ConverterHandler converterHandler) {
// 		if(source==null){
// 			return null;
// 		}
// 		return new OutValue(OutValue.OutType.STRING, source.toString());
// 	}
// 
// 	@Override
// 	public Object fromString(String cell, ConverterHandler converterHandler,
// 			Type targetType) {
// 		if (cell == null) {
// 			return null;
// 		}
// 		return cell;
// 	}
// 
// }
// 
// Path: excel/src/main/java/com/bing/excel/vo/OutValue.java
// public class OutValue {
// 	public enum OutType {
// 		INTEGER, LONG, DOUBLE, STRING, DATE, UNDEFINED
// 	}
// 	
// 	private OutType outType;
// 	private Object value;
// 	
// 	
// 	
// 	public OutValue(OutType outType, Object value) {
// 		super();
// 		this.outType = outType;
// 		this.value = value;
// 	}
// 	public static OutValue intValue(Object obj){
// 		return new OutValue(OutType.INTEGER,obj);
// 	}
// 	public static OutValue doubleValue(Object obj){
// 		return new OutValue(OutType.DOUBLE,obj);
// 	}
// 	public static OutValue longValue(Object obj){
// 		return new OutValue(OutType.LONG,obj);
// 	}
// 	public static OutValue stringValue(Object obj){
// 		return new OutValue(OutType.STRING,obj);
// 	}
// 	public static OutValue dateValue(Object obj){
// 		return new OutValue(OutType.DATE,obj);
// 	}
// 	public OutType getOutType() {
// 		return outType;
// 	}
// 	public void setOutType(OutType outType) {
// 		this.outType = outType;
// 	}
// 	public Object getValue() {
// 		return value;
// 	}
// 	public void setValue(Object value) {
// 		this.value = value;
// 	}
// 	
// }


// Path: excel/src/main/java/com/bing/excel/converter/base/ShortFieldConverter.java
import java.lang.reflect.Type;
import com.bing.excel.core.handler.ConverterHandler;
import com.bing.excel.converter.AbstractFieldConvertor;
import com.bing.excel.vo.OutValue;
import com.google.common.base.Strings;

package com.bing.excel.converter.base;



public final class ShortFieldConverter extends AbstractFieldConvertor {

	@Override
	public boolean canConvert(Class<?> clz) {
		 return clz.equals(short.class) || clz.equals(Short.class);
	}

	@Override
	public Object fromString(String cell, ConverterHandler converterHandler, Type targetType) {
		if(Strings.isNullOrEmpty(cell)){
			return null;
		}
		int value = Integer.valueOf(cell).intValue();
    	if(value < Short.MIN_VALUE || value > Short.MAX_VALUE) {
    		throw new NumberFormatException("For input string: \"" + cell + '"');
    	}
        return new Short((short)value);
	}

	@Override
	public OutValue toObject(Object source,ConverterHandler converterHandler) {