Package com.ctp.cdi.query.util

Source Code of com.ctp.cdi.query.util.EntityUtils

package com.ctp.cdi.query.util;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Id;

import org.jboss.seam.solder.properties.Property;
import org.jboss.seam.solder.properties.query.AnnotatedPropertyCriteria;
import org.jboss.seam.solder.properties.query.PropertyQueries;
import org.jboss.seam.solder.properties.query.PropertyQuery;

import com.ctp.cdi.query.meta.NonEntityException;

public final class EntityUtils {

    private EntityUtils() {
    }
   
    public static boolean isNew(Object entity) {
        assertIsEntity(entity);
        Property<Serializable> property = primaryKey(entity.getClass());
        property.setAccessible();
        Serializable value = property.getValue(entity);
        return value == null;
    }
   
    public static Class<? extends Serializable> primaryKeyClass(Class<?> entityClass) {
        Property<Serializable> property = primaryKey(entityClass);
        return property.getJavaClass();
    }
   
    public static String entityName(Class<?> entityClass) {
        Entity entity = entityClass.getAnnotation(Entity.class);
        return !"".equals(entity.name()) ? entity.name() : entityClass.getSimpleName();
    }
   
    public static boolean isEntityClass(Class<?> entityClass) {
        return entityClass.isAnnotationPresent(Entity.class);
    }
   
    private static Property<Serializable> primaryKey(Class<?> entityClass) {
        PropertyQuery<Serializable> query = PropertyQueries.<Serializable>createQuery(entityClass)
                                                           .addCriteria(new AnnotatedPropertyCriteria(Id.class));
        return query.getFirstResult();
    }
   
    private static void assertIsEntity(Object entity) {
        if (entity == null) {
            throw new IllegalArgumentException("Provided object is null");
        }
        if (!isEntityClass(entity.getClass())) {
            throw new NonEntityException("Provided object is not an @Entity");
        }
    }
}
TOP

Related Classes of com.ctp.cdi.query.util.EntityUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.