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

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

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

import io.pelle.mango.client.base.vo.IAttributeDescriptor;
import io.pelle.mango.client.base.vo.IBaseVO;

import java.util.HashSet;
import java.util.Set;

import org.apache.commons.beanutils.MethodUtils;

public class BeanUtils {

	@SuppressWarnings("unchecked")
	public static Set> getReferencedVOs(Class clazz) {

		Set> voAttributeDescriptors = new HashSet>();

		for (IAttributeDescriptor attributeDescriptor : getAttributeDescriptors(clazz)) {

			if (IBaseVO.class.isAssignableFrom(attributeDescriptor.getAttributeType())) {
				voAttributeDescriptors.add((Class) attributeDescriptor.getAttributeType());
			}

			if (attributeDescriptor.getListAttributeType() != null && IBaseVO.class.isAssignableFrom(attributeDescriptor.getListAttributeType())) {
				voAttributeDescriptors.add((Class) attributeDescriptor.getListAttributeType());
			}
		}

		return voAttributeDescriptors;
	}

	public static IAttributeDescriptor getAttributeDescriptor(IAttributeDescriptor[] attributeDescriptors, String attributeName) {

		for (IAttributeDescriptor attributeDescriptor : attributeDescriptors) {

			if (attributeDescriptor.getAttributeName().equals(attributeName)) {
				return attributeDescriptor;
			}
		}

		return null;
	}

	public static IAttributeDescriptor[] getAttributeDescriptors(Class clazz) {
		try {
			Object o = MethodUtils.invokeStaticMethod(clazz, "getAttributeDescriptors", null);
			return (IAttributeDescriptor[]) o;
		} catch (Exception e) {
			throw new RuntimeException(String.format("error invoking method 'getAttributeDescriptors' on class '%s'", clazz.getName()), e);
		}

	}

	public static IAttributeDescriptor getAttributeDescriptor(Class clazz, String attributeName) {
		return getAttributeDescriptor(getAttributeDescriptors(clazz), attributeName);
	}

	@SuppressWarnings("unchecked")
	public static Class getVOClass(String voClassName) {
		Class voClass;
		try {
			voClass = (Class) Class.forName(voClassName);
		} catch (ClassNotFoundException e) {
			throw new RuntimeException(e);
		}

		return voClass;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy