Example usage for javax.persistence.metamodel Metamodel embeddable

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

Introduction

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

Prototype

<X> EmbeddableType<X> embeddable(Class<X> cls);

Source Link

Document

Return the metamodel embeddable type representing the embeddable class.

Usage

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

private static void getAttributeOfEmbedddable(Map<String, Field> columnNameToFieldMap, Metamodel metaModel,
        Attribute attribute) {//from ww w.  jav  a 2s.co m
    EmbeddableType embeddable = metaModel.embeddable(((AbstractAttribute) attribute).getBindableJavaType());

    Iterator<Attribute> embeddableIter = embeddable.getAttributes().iterator();
    while (embeddableIter.hasNext()) {
        Attribute embedAttrib = embeddableIter.next();

        // Reason is to avoid in case embeddable attribute within
        // embeddable.
        if (!((MetamodelImpl) metaModel).isEmbeddable(embedAttrib.getJavaType())) {
            columnNameToFieldMap.put(((AbstractAttribute) embedAttrib).getJPAColumnName(),
                    (Field) embedAttrib.getJavaMember());
        } else {
            getAttributeOfEmbedddable(columnNameToFieldMap, metaModel, embedAttrib);
        }
    }
}

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

/**
 * Gets the enclosing document name.//from  ww  w . j  ava 2 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;
}