Examples of JDBCCMRFieldBridge


Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

    }

    private static int loadOnFindCMRFields(Object pk, List<LeftJoinCMRNode> onFindCMRNodes, ResultSet rs, int index, Logger log) {
        Object[] ref = new Object[1];
        for (LeftJoinCMRNode node : onFindCMRNodes) {
            JDBCCMRFieldBridge cmrField = node.cmrField;
            ReadAheadCache myCache = cmrField.getJDBCStoreManager().getReadAheadCache();
            JDBCEntityBridge relatedEntity = cmrField.getRelatedJDBCEntity();
            ReadAheadCache relatedCache = cmrField.getRelatedManager().getReadAheadCache();

            // load related id
            ref[0] = null;
            index = relatedEntity.loadPrimaryKeyResults(rs, index, ref);
            Object relatedId = ref[0];
            boolean cacheRelatedData = relatedId != null;

            if (pk != null) {
                if (cmrField.getMetaData().getRelatedRole().isMultiplicityOne()) {
                    // cacheRelatedData the value
                    myCache.addPreloadData(pk,
                            cmrField,
                            relatedId == null ? Collections.EMPTY_LIST : Collections.singletonList(relatedId));
                } else {
View Full Code Here

Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

        }

        boolean cleanReadAhead = manager.getMetaData().isCleanReadAheadOnLoad();

        boolean loaded = false;
        JDBCCMRFieldBridge onlyOneSingleValuedCMR = null;

        // iterate over the keys in the preloaded map
        Iterator iter = preloadDataMap.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry entry = (Map.Entry) iter.next();
            Object field = entry.getKey();

            // get the value that was preloaded for this field
            Object value = entry.getValue();

            // if we didn't get a value something is seriously hosed
            if (value == null) {
                throw new IllegalStateException("Preloaded value not found");
            }

            if (cleanReadAhead) {
                // remove this value from the preload cache as it is about to be loaded
                iter.remove();
            }

            // check for null value standin
            if (value == NULL_VALUE) {
                value = null;
            }

            if (field instanceof JDBCCMPFieldBridge) {
                JDBCCMPFieldBridge cmpField = (JDBCCMPFieldBridge) field;

                if (!cmpField.isLoaded(ctx)) {
                    if (log.isTraceEnabled()) {
                        log.trace("Preloading data:" +
                                " entity=" + manager.getEntityBridge().getEntityName() +
                                " pk=" + ctx.getPrimaryKey() +
                                " cmpField=" + cmpField.getFieldName());
                    }

                    // set the value
                    cmpField.setInstanceValue(ctx, value);

                    // mark this field clean as it's value was just loaded
                    cmpField.setClean(ctx);

                    loaded = true;
                } else {
                    if (log.isTraceEnabled()) {
                        log.trace("CMPField already loaded:" +
                                " entity=" + manager.getEntityBridge().getEntityName() +
                                " pk=" + ctx.getPrimaryKey() +
                                " cmpField=" + cmpField.getFieldName());
                    }
                }
            } else if (field instanceof JDBCCMRFieldBridge) {
                JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) field;

                if (!cmrField.isLoaded(ctx)) {
                    if (log.isTraceEnabled()) {
                        log.trace("Preloading data:" +
                                " entity=" + manager.getEntityBridge().getEntityName() +
                                " pk=" + ctx.getPrimaryKey() +
                                " cmrField=" + cmrField.getFieldName());
                    }

                    // set the value
                    cmrField.load(ctx, (List) value);

                    // add the loaded list to the related entity's readahead cache
                    JDBCStoreManager relatedManager = (JDBCStoreManager) cmrField.getRelatedCMRField().getManager();
                    ReadAheadCache relatedReadAheadCache =
                            relatedManager.getReadAheadCache();
                    relatedReadAheadCache.addFinderResults(
                            (List) value, cmrField.getReadAhead());

                    if (!loaded) {
                        // this is a hack to fix on-load read-ahead for 1:m relationships
                        if (cmrField.isSingleValued() && onlyOneSingleValuedCMR == null) {
                            onlyOneSingleValuedCMR = cmrField;
                        } else {
                            loaded = true;
                        }
                    }
                } else {
                    if (log.isTraceEnabled()) {
                        log.trace("CMRField already loaded:" +
                                " entity=" + manager.getEntityBridge().getEntityName() +
                                " pk=" + ctx.getPrimaryKey() +
                                " cmrField=" + cmrField.getFieldName());
                    }
                }
            }
        }
View Full Code Here

Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

        }
        final CmpEntityBeanComponentInstance instance = (CmpEntityBeanComponentInstance) context.getPrivateData(ComponentInstance.class);
        final CmpEntityBeanContext ctx = instance.getEjbContext();

        // We are going to work with the context a lot
        JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) context.getParameters()[0];

        if (CMRMessage.GET_RELATED_ID == relationshipMessage) {
            // call getRelateId
            if (log.isTraceEnabled()) {
                log.trace("Getting related id: field=" + cmrField.getFieldName() + " id=" + ctx.getPrimaryKey());
            }
            return cmrField.getRelatedId(ctx);

        } else if (CMRMessage.ADD_RELATION == relationshipMessage) {
            // call addRelation
            Object relatedId = context.getParameters()[1];
            if (log.isTraceEnabled()) {
                log.trace("Add relation: field=" + cmrField.getFieldName() +
                        " id=" + ctx.getPrimaryKey() +
                        " relatedId=" + relatedId);
            }

            cmrField.addRelation(ctx, relatedId);

            return null;

        } else if (CMRMessage.REMOVE_RELATION == relationshipMessage) {
            // call removeRelation
            Object relatedId = context.getParameters()[1];
            if (log.isTraceEnabled()) {
                log.trace("Remove relation: field=" + cmrField.getFieldName() +
                        " id=" + ctx.getPrimaryKey() +
                        " relatedId=" + relatedId);
            }

            cmrField.removeRelation(ctx, relatedId);

            return null;
        } else if (CMRMessage.SCHEDULE_FOR_CASCADE_DELETE == relationshipMessage) {
            JDBCEntityBridge entity = (JDBCEntityBridge) cmrField.getEntity();
            entity.scheduleForCascadeDelete(ctx);
            return null;
        } else if (CMRMessage.SCHEDULE_FOR_BATCH_CASCADE_DELETE == relationshipMessage) {
            JDBCEntityBridge entity = (JDBCEntityBridge) cmrField.getEntity();
            entity.scheduleForBatchCascadeDelete(ctx);
            return null;
        } else {
            // this should not be possible we are using a type safe enum
            throw new EJBException("Unknown cmp2.0-relationship-message=" + relationshipMessage);
View Full Code Here

Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

    private void existsClause(ASTPath path, StringBuffer buf, boolean not) {
        if (!path.isCMRField()) {
            throw new IllegalArgumentException("path must be a cmr field");
        }

        JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) path.getCMRField();
        String pathStr = path.getPath(path.size() - 2);
        String parentAlias = aliasManager.getAlias(pathStr);

        // if exists is not supported we use a left join and is null
        if (!subquerySupported) {
            // add the path to the list of paths to left join
            addLeftJoinPath(pathStr, path);
            forceDistinct = true;

            addJoinPath(path);

            if (cmrField.getRelationMetaData().isForeignKeyMappingStyle()) {
                JDBCEntityBridge childEntity = (JDBCEntityBridge) cmrField.getRelatedEntity();
                String childAlias = aliasManager.getAlias(path.getPath());
                SQLUtil.getIsNullClause(!not, childEntity.getPrimaryKeyFields(), childAlias, buf);
            } else {
                String relationTableAlias = aliasManager.getRelationTableAlias(path.getPath());
                SQLUtil.getIsNullClause(!not, cmrField.getTableKeyFields(), relationTableAlias, buf);
            }
            return;
        }

        if (not) {
            buf.append(SQLUtil.NOT);
        }
        buf.append(SQLUtil.EXISTS).append('(');

        if (cmrField.getRelationMetaData().isForeignKeyMappingStyle()) {
            JDBCEntityBridge childEntity = (JDBCEntityBridge) cmrField.getRelatedEntity();
            String childAlias = aliasManager.getAlias(path.getPath());

            buf.append(SQLUtil.SELECT);

            SQLUtil.getColumnNamesClause(childEntity.getPrimaryKeyFields(), childAlias, buf)
                    .append(SQLUtil.FROM)
                    .append(childEntity.getQualifiedTableName()).append(' ').append(childAlias)
                    .append(SQLUtil.WHERE);
            SQLUtil.getJoinClause(cmrField, parentAlias, childAlias, buf);
        } else {
            String relationTableAlias = aliasManager.getRelationTableAlias(path.getPath());
            buf.append(SQLUtil.SELECT);
            SQLUtil.getColumnNamesClause(cmrField.getTableKeyFields(), relationTableAlias, buf)
                    .append(SQLUtil.FROM)
                    .append(cmrField.getQualifiedTableName())
                    .append(' ')
                    .append(relationTableAlias)
                    .append(SQLUtil.WHERE);
            SQLUtil.getRelationTableJoinClause(cmrField, parentAlias, relationTableAlias, buf);
        }
View Full Code Here

Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

    private void declareTables(ASTPath path, int i, StringBuffer buf) {
        if (!path.isCMRField(i) || declaredPaths.contains(path.getPath(i))) {
            return;
        }

        JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) path.getCMRField(i);
        JDBCEntityBridge entity = (JDBCEntityBridge) path.getEntity(i);

        buf.append(SQLUtil.COMMA)
                .append(entity.getQualifiedTableName())
                .append(' ')
                .append(aliasManager.getAlias(path.getPath(i)));
        leftJoins(path.getPath(i), buf);

        if (cmrField.getRelationMetaData().isTableMappingStyle()) {
            String relationTableAlias = aliasManager.getRelationTableAlias(path.getPath(i));
            buf.append(SQLUtil.COMMA)
                    .append(cmrField.getQualifiedTableName())
                    .append(' ')
                    .append(relationTableAlias);
        }

        declaredPaths.add(path.getPath(i));
View Full Code Here

Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

        }

        for (Iterator iter = paths.iterator(); iter.hasNext(); ) {
            ASTPath path = (ASTPath) iter.next();

            JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) path.getCMRField();
            String parentAlias = aliasManager.getAlias(parentPath);

            if (cmrField.getRelationMetaData().isForeignKeyMappingStyle()) {
                JDBCEntityBridge childEntity = (JDBCEntityBridge) cmrField.getRelatedEntity();
                String childAlias = aliasManager.getAlias(path.getPath());

                buf.append(SQLUtil.LEFT_JOIN)
                        .append(childEntity.getQualifiedTableName())
                        .append(' ')
                        .append(childAlias)
                        .append(SQLUtil.ON);
                SQLUtil.getJoinClause(cmrField, parentAlias, childAlias, buf);
            } else {
                String relationTableAlias = aliasManager.getRelationTableAlias(path.getPath());
                buf.append(SQLUtil.LEFT_JOIN)
                        .append(cmrField.getQualifiedTableName())
                        .append(' ')
                        .append(relationTableAlias)
                        .append(SQLUtil.ON);
                SQLUtil.getRelationTableJoinClause(cmrField, parentAlias, relationTableAlias, buf);
            }
View Full Code Here

Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

                                 StringBuffer buf) {
        if (!path.isCMRField(i) || joinedAliases.contains(childAlias)) {
            return;
        }

        JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) path.getCMRField(i);
        String parentAlias = aliasManager.getAlias(path.getPath(i - 1));

        if (joinedAliases.size() > 0) {
            buf.append(SQLUtil.AND);
        }

        if (cmrField.getRelationMetaData().isForeignKeyMappingStyle()) {
            SQLUtil.getJoinClause(cmrField, parentAlias, childAlias, buf);
        } else {
            String relationTableAlias = aliasManager.getRelationTableAlias(path.getPath(i));

            // parent to relation table
            SQLUtil.getRelationTableJoinClause(cmrField, parentAlias, relationTableAlias, buf)
                    .append(SQLUtil.AND);
            // child to relation table
            SQLUtil.getRelationTableJoinClause(cmrField.getRelatedCMRField(), childAlias, relationTableAlias, buf);
        }

        joinedAliases.add(childAlias);
    }
View Full Code Here

Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

            buf.append(onFindCMRJoin);
            onFindCMRJoin = null;
        }

        // add the relation-table
        JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) path.getCMRField();
        if (cmrField.getRelationMetaData().isTableMappingStyle()) {
            String relationTableAlias = aliasManager.getRelationTableAlias(path.getPath());
            buf.append(SQLUtil.COMMA)
                    .append(cmrField.getQualifiedTableName())
                    .append(' ')
                    .append(relationTableAlias);
        }

        return buf;
View Full Code Here

Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

                JDBCCMPFieldBridge selectField = (JDBCCMPFieldBridge) path.getCMPField();
                selectManager = (JDBCStoreManager) selectField.getManager();
                if (selectField.getJDBCType().hasMapper())
                    this.functionJDBCType = selectField.getJDBCType();
            } else if (path.isCMRField()) {
                JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) path.getCMRField();
                selectManager = (JDBCStoreManager) cmrField.getEntity().getManager();
                addJoinPath(path);
            } else {
                final JDBCEntityBridge entity = (JDBCEntityBridge) path.getEntity();
                selectManager = (JDBCStoreManager) entity.getManager();
                addJoinPath(path);
View Full Code Here

Examples of org.jboss.as.cmp.jdbc.bridge.JDBCCMRFieldBridge

        final Node child0 = node.jjtGetChild(0);
        if (child0 instanceof ASTPath) {
            ASTPath path = (ASTPath) child0;

            if (path.isCMRField()) {
                JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) path.getCMRField();
                if (cmrField.getRelationMetaData().isTableMappingStyle()) {
                    existsClause(path, buf, !node.not);
                    return buf;
                }
            }
View Full Code Here
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.