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

com.github.paganini2008.devtools.converter.BaseConverter Maven / Gradle / Ivy

There is a newer version: 2.0.5
Show newest version
package com.github.paganini2008.devtools.converter;

import java.util.HashMap;
import java.util.Map;

/**
 * BaseConverter
 * 
 * @author Fred Feng
 * @version 1.0
 */
public abstract class BaseConverter implements Converter, ConverterManager {

	private final Map, Converter> converterRegistry = new HashMap, Converter>();
	protected ConverterConfig config = new ConverterConfig();

	public void setConfig(ConverterConfig config) {
		this.config = config;
	}

	public ConverterConfig getConfig() {
		return config;
	}

	public void put(Class requiredType, Converter converter) {
		converterRegistry.put(requiredType, converter);
	}

	public void remove(Class requiredType) {
		converterRegistry.remove(requiredType);
	}

	public Converter lookup(Class requiredType) {
		return converterRegistry.get(requiredType);
	}

	public boolean contains(Class requiredType) {
		return converterRegistry.containsKey(requiredType);
	}

	@SuppressWarnings("unchecked")
	public T getValue(Object value, T defaultValue) {
		if (value == null) {
			return defaultValue;
		}
		final Class match = getAssignableClass(value.getClass());
		if (match != null) {
			Converter converter = (Converter) lookup(match);
			return converter.getValue(value, defaultValue);
		}
		return defaultValue;
	}

	protected Class getAssignableClass(Class actual) {
		for (Class type : converterRegistry.keySet()) {
			if (type.equals(actual) || type.isAssignableFrom(actual)) {
				return type;
			}
		}
		return null;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy