// Path: excel/src/main/java/com/bing/excel/converter/FieldValueConverter.java
// public interface FieldValueConverter extends ConverterMatcher {
// 	  OutValue toObject(Object source,ConverterHandler converterHandler);
// 	  Object fromString(String cell,ConverterHandler converterHandler,Type targetType);
// }
// 
// Path: excel/src/main/java/com/bing/excel/exception/ConversionException.java
// public class ConversionException extends RuntimeException {
// 
// 	public ConversionException() {
// 		super();
// 	}
// 
// 	public ConversionException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// 	public ConversionException(String message) {
// 		super(message);
// 	}
// 
// 	public ConversionException(Throwable cause) {
// 		super(cause);
// 	}
// 
// }
// 
// Path: excel/src/main/java/com/bing/excel/mapper/BaseGlobalConverterMapper.java
// public class BaseGlobalConverterMapper {
// 
//   static ImmutableMap.Builder<Class<?>, FieldValueConverter> builder;
// 
//   static {
//     builder = ImmutableMap.builder();
//     builder.put(String.class, new StringFieldConverter());
//     builder.put(Date.class, new DateFieldConverter());
//     builder.put(Enum.class, new EnumConVerter());
//    // builder.put(Array.class, new ArrayConverter());
//     //builder.put(Collections.class,new ArrayConverter());
// 
//     builder.put(Integer.class, new IntegerFieldConverter());
//     builder.put(Long.class, new LongFieldConverter());
//     builder.put(Boolean.class, new BooleanFieldConverter());
//     builder.put(Byte.class, new ByteFieldConverter());
//     builder.put(Character.class, new CharacterFieldConverter());
//     builder.put(Double.class, new DoubleFieldConverter());
//     builder.put(Float.class, new FloatFieldConverter());
//     builder.put(Short.class, new ShortFieldConverter());
//   //  builder.put(Collection.class, new CollectionConverter());
//   }
// 
//   public final static ImmutableMap<Class<?>, FieldValueConverter> globalFieldConverterMapper = builder
//       .build();
// 
// }


import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import com.bing.excel.converter.FieldValueConverter;
import com.bing.excel.exception.ConversionException;
import com.bing.excel.mapper.BaseGlobalConverterMapper;
import com.google.common.primitives.Primitives;
package com.bing.excel.core.handler;




public class LocalConverterHandler implements ConverterHandler {
	private final Map<Class<?>, FieldValueConverter> defaultLocalConverter = Collections
			.synchronizedMap(new HashMap<Class<?>, FieldValueConverter>());


@Override
	public void registerConverter(Class<?> clazz,
			FieldValueConverter converter) {
		if (converter.canConvert(clazz)) {

			if (clazz.isPrimitive()) {
				defaultLocalConverter.put(Primitives.wrap(clazz), converter);
			} else {
				defaultLocalConverter.put(clazz, converter);
			}
		} else {
// Path: excel/src/main/java/com/bing/excel/converter/FieldValueConverter.java
// public interface FieldValueConverter extends ConverterMatcher {
// 	  OutValue toObject(Object source,ConverterHandler converterHandler);
// 	  Object fromString(String cell,ConverterHandler converterHandler,Type targetType);
// }
// 
// Path: excel/src/main/java/com/bing/excel/exception/ConversionException.java
// public class ConversionException extends RuntimeException {
// 
// 	public ConversionException() {
// 		super();
// 	}
// 
// 	public ConversionException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// 	public ConversionException(String message) {
// 		super(message);
// 	}
// 
// 	public ConversionException(Throwable cause) {
// 		super(cause);
// 	}
// 
// }
// 
// Path: excel/src/main/java/com/bing/excel/mapper/BaseGlobalConverterMapper.java
// public class BaseGlobalConverterMapper {
// 
//   static ImmutableMap.Builder<Class<?>, FieldValueConverter> builder;
// 
//   static {
//     builder = ImmutableMap.builder();
//     builder.put(String.class, new StringFieldConverter());
//     builder.put(Date.class, new DateFieldConverter());
//     builder.put(Enum.class, new EnumConVerter());
//    // builder.put(Array.class, new ArrayConverter());
//     //builder.put(Collections.class,new ArrayConverter());
// 
//     builder.put(Integer.class, new IntegerFieldConverter());
//     builder.put(Long.class, new LongFieldConverter());
//     builder.put(Boolean.class, new BooleanFieldConverter());
//     builder.put(Byte.class, new ByteFieldConverter());
//     builder.put(Character.class, new CharacterFieldConverter());
//     builder.put(Double.class, new DoubleFieldConverter());
//     builder.put(Float.class, new FloatFieldConverter());
//     builder.put(Short.class, new ShortFieldConverter());
//   //  builder.put(Collection.class, new CollectionConverter());
//   }
// 
//   public final static ImmutableMap<Class<?>, FieldValueConverter> globalFieldConverterMapper = builder
//       .build();
// 
// }


// Path: excel/src/main/java/com/bing/excel/core/handler/LocalConverterHandler.java
import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import com.bing.excel.converter.FieldValueConverter;
import com.bing.excel.exception.ConversionException;
import com.bing.excel.mapper.BaseGlobalConverterMapper;
import com.google.common.primitives.Primitives;

package com.bing.excel.core.handler;




public class LocalConverterHandler implements ConverterHandler {
	private final Map<Class<?>, FieldValueConverter> defaultLocalConverter = Collections
			.synchronizedMap(new HashMap<Class<?>, FieldValueConverter>());


@Override
	public void registerConverter(Class<?> clazz,
			FieldValueConverter converter) {
		if (converter.canConvert(clazz)) {

			if (clazz.isPrimitive()) {
				defaultLocalConverter.put(Primitives.wrap(clazz), converter);
			} else {
				defaultLocalConverter.put(clazz, converter);
			}
		} else {
			throw new ConversionException("register converter for["