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

io.pelle.mango.db.util.EntityVOMapper Maven / Gradle / Ivy

The newest version!
package io.pelle.mango.db.util;

import io.pelle.mango.client.base.vo.IBaseEntity;
import io.pelle.mango.client.base.vo.IBaseVO;
import io.pelle.mango.client.base.vo.IEntityVOMapper;
import io.pelle.mango.client.base.vo.IVOEntity;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

public final class EntityVOMapper implements IEntityVOMapper {

	private static EntityVOMapper instance;

	public static EntityVOMapper getInstance() {
		if (instance == null) {
			instance = new EntityVOMapper();
		}
		return instance;
	}

	@Autowired
	private List entityVOMappers = new ArrayList();

	private EntityVOMapper() {
	}

	public Class getMappedClass(Class clazz) {
		for (IEntityVOMapper entityVOMapper : entityVOMappers) {
			if (entityVOMapper.getMappedClass(clazz) != null) {
				return entityVOMapper.getMappedClass(clazz);
			}
		}

		return null;
	}

	public Class getVOClass(String className) {
		try {
			Class clazz = Class.forName(className);
			
			if (IBaseEntity.class.equals(clazz)) {
				return getVOClass(clazz);
			}
			
			return (Class) clazz;
		} catch (ClassNotFoundException e) {
			throw new RuntimeException(String.format("class '%s' not found", className));
		}
	}

	public Class getEntityClass(String className) {
		try {
			Class clazz = Class.forName(className);
			
			if (IBaseVO.class.equals(clazz)) {
				return getEntityClass(clazz);
			}
			
			return (Class) clazz;
		} catch (ClassNotFoundException e) {
			throw new RuntimeException(String.format("class '%s' not found", className));
		}
	}

	public Class getMappedClass(String className) {
		try {
			return getMappedClass(Class.forName(className));
		} catch (ClassNotFoundException e) {
			throw new RuntimeException(String.format("class '%s' not found", className));
		}
	}

	@SuppressWarnings("unchecked")
	public Class getMappedVOClass(Class entityClass) {
		return (Class) getMappedClass(entityClass);
	}

	@SuppressWarnings("unchecked")
	public Class getMappedEntityClass(Class voEntityClass) {

		if (IBaseEntity.class.isAssignableFrom(voEntityClass)) {
			return (Class) voEntityClass;
		} else {
			return (Class) getMappedClass(voEntityClass);
		}

	}

	public List> getVOClasses() {

		List> result = new ArrayList>();

		for (IEntityVOMapper entityVOMapper : entityVOMappers) {
			result.addAll(entityVOMapper.getVOClasses());
		}

		return result;
	}

	public void setEntityVOMappers(List entityVOMappers) {

		for (IEntityVOMapper entityVOMapper : entityVOMappers) {
			if (this != entityVOMapper) {
				this.entityVOMappers.add(entityVOMapper);
			}
		}
	}

	@Override
	public List> getEntityClasses() {
		List> result = new ArrayList>();

		for (IEntityVOMapper entityVOMapper : entityVOMappers) {
			result.addAll(entityVOMapper.getEntityClasses());
		}

		return result;
	}

	@Override
	@SuppressWarnings("unchecked")
	public Class getEntityClass(Class clazz) {
		if (IBaseEntity.class.isAssignableFrom(clazz)) {
			return (Class) clazz;
		} else {
			return (Class) getMappedClass(clazz);
		}
	}

	@Override
	@SuppressWarnings("unchecked")
	public Class getVOClass(Class clazz) {
		if (IBaseVO.class.isAssignableFrom(clazz)) {
			return (Class) clazz;
		} else {
			return (Class) getMappedClass(clazz);
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy