Example usage for javax.persistence.metamodel Metamodel entity

List of usage examples for javax.persistence.metamodel Metamodel entity

Introduction

In this page you can find the example usage for javax.persistence.metamodel Metamodel entity.

Prototype

<X> EntityType<X> entity(Class<X> cls);

Source Link

Document

Return the metamodel entity type representing the entity.

Usage

From source file:com.impetus.kundera.metadata.MetadataUtils.java

/**
 * Checks whether an entity with given metadata contains a collection field
 * //from w w w.j  ava  2s.  com
 * @param m
 * @return
 */
public static boolean containsBasicElementCollectionField(final EntityMetadata m,
        final KunderaMetadata kunderaMetadata) {
    Metamodel metaModel = kunderaMetadata.getApplicationMetadata().getMetamodel(m.getPersistenceUnit());
    EntityType entityType = metaModel.entity(m.getEntityClazz());
    Iterator<Attribute> iter = entityType.getAttributes().iterator();
    while (iter.hasNext()) {
        Attribute attr = iter.next();

        if (attr.isCollection() && !attr.isAssociation()
                && isBasicElementCollectionField((Field) attr.getJavaMember())) {
            return true;
        }
    }
    return false;
}

From source file:com.impetus.kundera.metadata.MetadataUtils.java

private static void getEmbeddableType(EntityMetadata m, Map<String, Field> columnNameToFieldMap,
        Map<String, Field> superColumnNameToFieldMap, final KunderaMetadata kunderaMetadata) {
    Metamodel metaModel = kunderaMetadata.getApplicationMetadata().getMetamodel(m.getPersistenceUnit());

    EntityType entityType = metaModel.entity(m.getEntityClazz());

    Set attributes = entityType.getAttributes();
    Iterator<Attribute> iter = attributes.iterator();
    while (iter.hasNext()) {
        Attribute attribute = iter.next();
        if (((MetamodelImpl) metaModel).isEmbeddable(((AbstractAttribute) attribute).getBindableJavaType())) {
            superColumnNameToFieldMap.put(((AbstractAttribute) attribute).getJPAColumnName(),
                    (Field) attribute.getJavaMember());
            if (columnNameToFieldMap != null) {
                getAttributeOfEmbedddable(columnNameToFieldMap, metaModel, attribute);
            }//  ww  w  . ja  v a  2s.  c  o m

        } else {
            if (columnNameToFieldMap != null) {
                columnNameToFieldMap.put(((AbstractAttribute) attribute).getJPAColumnName(),
                        (Field) attribute.getJavaMember());
            }
        }
    }
}

From source file:com.impetus.kundera.metadata.MetadataUtils.java

/**
 * Gets the enclosing document name./*from ww  w .  j av a2 s.c o m*/
 * 
 * @param m
 *            the m
 * @param criteria
 *            Input criteria
 * @param viaColumnName
 *            true if <code>criteria</code> is column Name, false if
 *            <code>criteria</code> is column field name
 * @return the enclosing document name
 */
public static String getEnclosingEmbeddedFieldName(EntityMetadata m, String criteria, boolean viaColumnName,
        final KunderaMetadata kunderaMetadata) {
    String enclosingEmbeddedFieldName = null;

    StringTokenizer strToken = new StringTokenizer(criteria, ".");
    String embeddableAttributeName = null;
    String embeddedFieldName = null;
    String nestedEmbeddedFieldName = null;

    if (strToken.countTokens() > 0) {
        embeddableAttributeName = strToken.nextToken();
    }
    if (strToken.countTokens() > 0) {
        embeddedFieldName = strToken.nextToken();
    }
    if (strToken.countTokens() > 0) {
        nestedEmbeddedFieldName = strToken.nextToken();
    }

    Metamodel metaModel = kunderaMetadata.getApplicationMetadata().getMetamodel(m.getPersistenceUnit());
    EntityType entity = metaModel.entity(m.getEntityClazz());

    try {
        Attribute attribute = entity.getAttribute(embeddableAttributeName);

        if (((MetamodelImpl) metaModel).isEmbeddable(((AbstractAttribute) attribute).getBindableJavaType())) {
            EmbeddableType embeddable = metaModel
                    .embeddable(((AbstractAttribute) attribute).getBindableJavaType());
            Iterator<Attribute> attributeIter = embeddable.getAttributes().iterator();
            while (attributeIter.hasNext()) {
                AbstractAttribute attrib = (AbstractAttribute) attributeIter.next();

                if (viaColumnName && attrib.getName().equals(embeddedFieldName)) {
                    if (nestedEmbeddedFieldName != null && ((MetamodelImpl) metaModel)
                            .isEmbeddable(((AbstractAttribute) attrib).getBindableJavaType())) {
                        EmbeddableType nestedEmbeddable = metaModel
                                .embeddable(((AbstractAttribute) attrib).getBindableJavaType());
                        Iterator<Attribute> iter = embeddable.getAttributes().iterator();
                        while (iter.hasNext()) {
                            AbstractAttribute nestedAttribute = (AbstractAttribute) iter.next();

                            if (viaColumnName && nestedAttribute.getName().equals(embeddedFieldName)) {
                                return nestedAttribute.getName();
                            }

                            if (!viaColumnName
                                    && nestedAttribute.getJPAColumnName().equals(embeddedFieldName)) {
                                return nestedAttribute.getName();
                            }
                        }
                    } else if (nestedEmbeddedFieldName != null && !((MetamodelImpl) metaModel)
                            .isEmbeddable(((AbstractAttribute) attrib).getBindableJavaType())) {
                        return null;
                    } else {
                        return attribute.getName();
                    }
                }

                if (!viaColumnName && attrib.getJPAColumnName().equals(embeddedFieldName)) {
                    return attribute.getName();
                }
            }
        }

    } catch (IllegalArgumentException iax) {
        return null;
    }
    return enclosingEmbeddedFieldName;
}

From source file:bq.jpa.demo.metadata.service.MetadataService.java

public void doMD() {
    Metamodel md = em.getMetamodel();
    EntityType<Employee> employee = md.entity(Employee.class);
    for (Attribute<? super Employee, ?> attr : employee.getAttributes()) {
        System.out.println(attr.getName() + " | " + attr.getJavaType().getName() + " | "
                + attr.getPersistentAttributeType());
    }// w w w .ja  v a2s  .  c  o  m
}

From source file:de.tudarmstadt.ukp.clarin.webanno.support.EntityModel.java

private void analyze(T aObject) {
    if (aObject != null) {
        entityClass = HibernateProxyHelper.getClassWithoutInitializingProxy(aObject);

        String idProperty = null;
        Metamodel metamodel = getEntityManager().getMetamodel();
        EntityType entity = metamodel.entity(entityClass);
        Set<SingularAttribute> singularAttributes = entity.getSingularAttributes();
        for (SingularAttribute singularAttribute : singularAttributes) {
            if (singularAttribute.isId()) {
                idProperty = singularAttribute.getName();
                break;
            }/* www  . jav  a2s  .  c o  m*/
        }
        if (idProperty == null) {
            throw new RuntimeException("id field not found");
        }

        DirectFieldAccessor accessor = new DirectFieldAccessor(aObject);
        id = (Number) accessor.getPropertyValue(idProperty);
    } else {
        entityClass = null;
        id = null;
    }
}

From source file:things.jpa.JpaConnector.java

private String getIdProperty(Class entityClass) {
    String idProperty = null;//from   ww  w  . ja  v  a2  s  .  c  o m
    Metamodel metamodel = entityManager.getMetamodel();
    EntityType entity = metamodel.entity(entityClass);
    Set<SingularAttribute> singularAttributes = entity.getSingularAttributes();
    for (SingularAttribute singularAttribute : singularAttributes) {
        if (singularAttribute.isId()) {
            idProperty = singularAttribute.getName();
            break;
        }
    }
    if (idProperty == null)
        throw new RuntimeException("id field not found");
    return idProperty;
}

From source file:edu.kit.dama.mdm.core.jpa.MetaDataManagerJpa.java

@Override
public final <T> List<T> find(final T first, final T last) throws UnauthorizedAccessAttemptException {
    List<T> resultList = new ArrayList();
    boolean firstCondition = true;
    // Maybe one of the arguments could be null.
    // Test for the instance which is not null.
    T argumentNotNull = null;/*from w  w  w  .  j av a2 s  . c  om*/
    if (first != null) {
        argumentNotNull = first;
    } else if (last != null) {
        argumentNotNull = last;
    }
    if (argumentNotNull == null) {
        // both instances are null nothing to do.
        return resultList;
    }
    StringBuilder queryString = new StringBuilder("SELECT e FROM ")
            .append(EntityManagerHelper.getEntityTableName(argumentNotNull.getClass())).append(" e");
    try {
        Metamodel metamodel = entityManager.getMetamodel();

        for (Object attribute : metamodel.entity(argumentNotNull.getClass()).getAttributes()) {
            Attribute myAttribute = ((Attribute) attribute);
            LOGGER.trace("Attribute: {}\nName: {}\n ", attribute, myAttribute.getName());
            // Only basic types where tested. 
            if (myAttribute.getPersistentAttributeType() == Attribute.PersistentAttributeType.BASIC) {
                String propertyName = myAttribute.getName();
                String firstValue = null;
                String lastValue = null;
                if (first != null) {
                    firstValue = BeanUtils.getProperty(first, propertyName);
                }
                if (last != null) {
                    lastValue = BeanUtils.getProperty(last, propertyName);
                }
                if ((firstValue != null) || (lastValue != null)) {
                    LOGGER.trace("At least one property is set!");
                    if (!firstCondition) {
                        queryString.append(" AND ");
                    } else {
                        queryString.append(" WHERE");
                        firstCondition = false;
                    }
                    queryString.append(" e.").append(propertyName);
                    if ((firstValue != null) && (lastValue != null)) {
                        queryString.append(" BETWEEN '").append(firstValue).append("' AND '").append(lastValue)
                                .append("'");
                    } else if (firstValue != null) {
                        queryString.append(" >= '").append(firstValue).append("'");
                    } else {
                        // lastValue != null
                        queryString.append(" <= '").append(lastValue).append("'");
                    }
                }
            } else {
                LOGGER.trace(
                        "****************************************"
                                + "*****************************\nAttribute skipped: {}",
                        myAttribute.getDeclaringType().getClass());
            }
        }
        LOGGER.debug(queryString.toString());
        Query q = entityManager.createQuery(queryString.toString());
        applyProperties(q);
        resultList = (List<T>) q.getResultList();
    } catch (Exception e) {
        LOGGER.warn("Failed to obtain result in find-method for query: " + queryString.toString(), e);
    } finally {
        finalizeEntityManagerAccess("find(first,last)", null, argumentNotNull);
    }
    return resultList;
}

From source file:com.impetus.client.mongodb.query.MongoDBQuery.java

/**
 * Prepare order by clause./* w w  w.j  av  a 2s  .com*/
 * 
 * @param metadata
 *            the metadata
 * @return order by clause.
 */
private BasicDBObject getOrderByClause(final EntityMetadata metadata) {

    BasicDBObject orderByClause = null;
    Metamodel metaModel = kunderaMetadata.getApplicationMetadata().getMetamodel(metadata.getPersistenceUnit());
    EntityType entityType = metaModel.entity(metadata.getEntityClazz());

    AbstractManagedType managedType = (AbstractManagedType) metaModel.entity(metadata.getEntityClazz());

    List<SortOrdering> orders = kunderaQuery.getOrdering();
    if (orders != null) {
        orderByClause = new BasicDBObject();
        if (!managedType.hasLobAttribute()) {
            for (SortOrdering order : orders) {
                orderByClause.append(getColumnName(metadata, entityType, order.getColumnName()),
                        order.getOrder().equals(SortOrder.ASC) ? 1 : -1);
            }
        } else {
            for (SortOrdering order : orders) {
                orderByClause.append("metadata." + getColumnName(metadata, entityType, order.getColumnName()),
                        order.getOrder().equals(SortOrder.ASC) ? 1 : -1);
            }
        }
    }

    return orderByClause;
}

From source file:com.impetus.client.mongodb.query.MongoDBQuery.java

/**
 * Handle special functions./*w  w  w.ja  v  a2  s. c  o  m*/
 * 
 * @return the int
 */
private int handleSpecialFunctions() {

    boolean needsSpecialAttention = false;
    outer: for (UpdateClause c : kunderaQuery.getUpdateClauseQueue()) {
        for (int i = 0; i < FUNCTION_KEYWORDS.length; i++) {
            if (c.getValue() instanceof String) {
                String func = c.getValue().toString();
                func = func.replaceAll(" ", "");
                if (func.toUpperCase().matches(FUNCTION_KEYWORDS[i])) {
                    needsSpecialAttention = true;
                    c.setValue(func);
                    break outer;
                }
            }
        }
    }

    if (!needsSpecialAttention)
        return -1;

    EntityMetadata m = getEntityMetadata();
    Metamodel metaModel = kunderaMetadata.getApplicationMetadata().getMetamodel(m.getPersistenceUnit());
    Queue filterClauseQueue = kunderaQuery.getFilterClauseQueue();
    BasicDBObject query = createMongoQuery(m, filterClauseQueue);

    BasicDBObject update = new BasicDBObject();
    for (UpdateClause c : kunderaQuery.getUpdateClauseQueue()) {
        String columName = getColumnName(m, metaModel.entity(m.getEntityClazz()), c.getProperty());
        boolean isSpecialFunction = false;
        for (int i = 0; i < FUNCTION_KEYWORDS.length; i++) {

            if (c.getValue() instanceof String
                    && c.getValue().toString().toUpperCase().matches(FUNCTION_KEYWORDS[i])) {
                isSpecialFunction = true;

                if (c.getValue().toString().toUpperCase().startsWith("INCREMENT(")) {
                    String val = c.getValue().toString().toUpperCase();
                    val = val.substring(10, val.indexOf(")"));
                    update.put("$inc", new BasicDBObject(columName, Integer.valueOf(val)));
                } else if (c.getValue().toString().toUpperCase().startsWith("DECREMENT(")) {
                    String val = c.getValue().toString().toUpperCase();
                    val = val.substring(10, val.indexOf(")"));
                    update.put("$inc", new BasicDBObject(columName, -Integer.valueOf(val)));
                }
            }
        }
        if (!isSpecialFunction) {
            update.put(columName, c.getValue());
        }
    }

    Client client = persistenceDelegeator.getClient(m);
    return ((MongoDBClient) client).handleUpdateFunctions(query, update, m.getTableName());
}

From source file:com.impetus.client.rdbms.query.RDBMSEntityReader.java

/**
 * Gets the sql query from jpa./*  www.  j a  v  a2  s . co m*/
 * 
 * @param entityMetadata
 *            the entity metadata
 * @param relations
 *            the relations
 * @param primaryKeys
 *            the primary keys
 * @return the sql query from jpa
 */
public String getSqlQueryFromJPA(EntityMetadata entityMetadata, List<String> relations,
        Set<String> primaryKeys) {
    ApplicationMetadata appMetadata = kunderaMetadata.getApplicationMetadata();
    Metamodel metaModel = appMetadata.getMetamodel(entityMetadata.getPersistenceUnit());

    if (jpaQuery != null) {
        String query = appMetadata.getQuery(jpaQuery);
        boolean isNative = kunderaQuery != null ? kunderaQuery.isNative() : false;

        if (isNative) {
            return query != null ? query : jpaQuery;
        }
    }

    // Suffixing the UNDERSCORE instead of prefix as Oracle 11g complains
    // about invalid characters error while executing the request.
    String aliasName = entityMetadata.getTableName() + "_";

    StringBuilder queryBuilder = new StringBuilder("Select ");

    EntityType entityType = metaModel.entity(entityMetadata.getEntityClazz());
    Set<Attribute> attributes = entityType.getAttributes();
    for (Attribute field : attributes) {
        if (!field.isAssociation() && !field.isCollection()
                && !((Field) field.getJavaMember()).isAnnotationPresent(ManyToMany.class)
                && !((Field) field.getJavaMember()).isAnnotationPresent(Transient.class)
                && !((MetamodelImpl) metaModel)
                        .isEmbeddable(((AbstractAttribute) field).getBindableJavaType())) {
            queryBuilder.append(aliasName);
            queryBuilder.append(".");
            queryBuilder.append(((AbstractAttribute) field).getJPAColumnName());
            queryBuilder.append(", ");
        }
    }

    // Handle embedded columns, add them to list.
    Map<String, EmbeddableType> embeddedColumns = ((MetamodelImpl) metaModel)
            .getEmbeddables(entityMetadata.getEntityClazz());
    for (EmbeddableType embeddedCol : embeddedColumns.values()) {
        Set<Attribute> embeddedAttributes = embeddedCol.getAttributes();
        for (Attribute column : embeddedAttributes) {
            queryBuilder.append(aliasName);
            queryBuilder.append(".");
            queryBuilder.append(((AbstractAttribute) column).getJPAColumnName());
            queryBuilder.append(", ");
        }
    }

    if (relations != null) {
        for (String relation : relations) {
            Relation rel = entityMetadata.getRelation(entityMetadata.getFieldName(relation));
            String r = MetadataUtils.getMappedName(entityMetadata, rel, kunderaMetadata);
            if (!((AbstractAttribute) entityMetadata.getIdAttribute()).getJPAColumnName()
                    .equalsIgnoreCase(r != null ? r : relation) && rel != null
                    && !rel.getProperty().isAnnotationPresent(ManyToMany.class)
                    && !rel.getProperty().isAnnotationPresent(OneToMany.class)
                    && (rel.getProperty().isAnnotationPresent(OneToOne.class)
                            && StringUtils.isBlank(rel.getMappedBy())
                            || rel.getProperty().isAnnotationPresent(ManyToOne.class))) {
                queryBuilder.append(aliasName);
                queryBuilder.append(".");
                queryBuilder.append(r != null ? r : relation);
                queryBuilder.append(", ");
            }
        }
    }

    // Remove last ","
    queryBuilder.deleteCharAt(queryBuilder.lastIndexOf(","));

    queryBuilder.append(" From ");
    if (entityMetadata.getSchema() != null && !entityMetadata.getSchema().isEmpty()) {
        queryBuilder.append(entityMetadata.getSchema() + ".");
    }
    queryBuilder.append(entityMetadata.getTableName());
    queryBuilder.append(" ");
    queryBuilder.append(aliasName);
    // add conditions
    if (filter != null) {
        queryBuilder.append(" Where ");
    }

    // Append conditions
    onCondition(entityMetadata, (MetamodelImpl) metaModel, primaryKeys, aliasName, queryBuilder, entityType);

    return queryBuilder.toString();
}