Examples of JDBCEntityBridge


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

        // set the select object (either selectEntity or selectField)
        initSelectObject(manager);

        // set the preload fields
        JDBCReadAheadMetaData readAhead = metadata.getReadAhead();
        JDBCEntityBridge selectEntity = getSelectEntity();
        if (selectEntity != null && readAhead.isOnFind()) {
            setEagerLoadGroup(readAhead.getEagerLoadGroup());
        }

        // set the sql and parameters
View Full Code Here

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

            return;
        }

        Catalog catalog = manager.getCatalog();

        JDBCEntityBridge entity = (JDBCEntityBridge) catalog.getEntityByEJBName(entityName);
        if (entity == null) {
            throw new RuntimeException("Unknown entity: " + entityName);
        }

        String fieldName = metadata.getFieldName();
        if (fieldName == null) {
            setSelectEntity(entity);
        } else {
            JDBCCMPFieldBridge field = entity.getCMPFieldByName(fieldName);
            if (field == null) {
                throw new RuntimeException("Unknown cmp field: " + fieldName);
            }
            setSelectField(field);
        }
View Full Code Here

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

    public JDBCFindByQuery(JDBCStoreManager manager, JDBCQueryMetaData q) {

        super(manager, q);

        JDBCEntityBridge entity = (JDBCEntityBridge) manager.getEntityBridge();

        String finderName = q.getMethod().getName();

        // finder name will be like findByFieldName
        // we need to convert it to fieldName.
        String cmpFieldName = Character.toLowerCase(finderName.charAt(6)) + finderName.substring(7);

        // get the field
        cmpField = entity.getCMPFieldByName(cmpFieldName);
        if (cmpField == null) {
            throw new IllegalArgumentException(
                    "No finder for this method: " + finderName);
        }

        // set the preload fields
        JDBCReadAheadMetaData readAhead = q.getReadAhead();
        if (readAhead.isOnFind()) {
            setEagerLoadGroup(readAhead.getEagerLoadGroup());
        }

        // generate the sql
        StringBuffer sql = new StringBuffer(300);
        sql.append(SQLUtil.SELECT);

        SQLUtil.getColumnNamesClause(entity.getPrimaryKeyFields(), sql);
        if (getEagerLoadGroup() != null) {
            SQLUtil.appendColumnNamesClause(entity, getEagerLoadGroup(), sql);
        }
        sql.append(SQLUtil.FROM)
                .append(entity.getQualifiedTableName())
                .append(SQLUtil.WHERE);
        SQLUtil.getWhereClause(cmpField, sql);

        setSQL(sql.toString());
        setParameterList(QueryParameter.createParameters(0, cmpField));
View Full Code Here

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

        setLimitParam(compiler.getLimitParam());
        setLimitValue(compiler.getLimitValue());

        // set select object
        if (compiler.isSelectEntity()) {
            JDBCEntityBridge selectEntity = (JDBCEntityBridge) compiler.getSelectEntity();

            // set the select entity
            setSelectEntity(selectEntity);

            // set the preload fields
            JDBCReadAheadMetaData readahead = metadata.getReadAhead();
            if (readahead.isOnFind()) {
                setEagerLoadGroup(readahead.getEagerLoadGroup());
                setOnFindCMRList(compiler.getLeftJoinCMRList());

                // exclude non-searchable columns if distinct is used
                if (compiler.isSelectDistinct()) {
                    boolean[] mask = getEagerLoadMask();
                    JDBCCMPFieldBridge[] tableFields = (JDBCCMPFieldBridge[]) selectEntity.getTableFields();
                    for (int i = 0; i < tableFields.length; ++i) {
                        if (mask[i] && !tableFields[i].getJDBCType().isSearchable()) {
                            mask[i] = false;
                        }
                    }
View Full Code Here

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

        Class localHomeClass = manager.getComponent().getLocalHomeClass();

        //
        // findByPrimaryKey
        //
        JDBCEntityBridge entity = (JDBCEntityBridge) manager.getEntityBridge();
        if (homeClass != null) {
            try {
                // try to get the finder method on the home interface
                Method method = homeClass.getMethod(FIND_BY_PK, new Class[]{entity.getPrimaryKeyClass()});

                JDBCQueryMetaData findByPKMD = manager.getMetaData().getQueryMetaDataForMethod(method);
                JDBCReadAheadMetaData readAhead = (findByPKMD == null ?
                        entity.getMetaData().getReadAhead() : findByPKMD.getReadAhead());

                // got it add it to known finders
                JDBCQueryMetaData q = new JDBCAutomaticQueryMetaData(
                        method,
                        readAhead,
                        entity.getMetaData().getQlCompiler(),
                        false
                );
                knownQueries.put(method, factory.createFindByPrimaryKeyQuery(q));

                if (log.isDebugEnabled())
                    log.debug("Added findByPrimaryKey query command for home interface");
            } catch (NoSuchMethodException e) {
                throw new RuntimeException("Home interface does not have a findByPrimaryKey method");
            }
        }

        if (localHomeClass != null) {

            Method method;
            try {
                // try to get the finder method on the local home interface
                method = localHomeClass.getMethod(FIND_BY_PK, new Class[]{entity.getPrimaryKeyClass()});
            } catch (NoSuchMethodException e) {
                throw new RuntimeException("Local home interface does " +
                        "not have the method findByPrimaryKey(" +
                        entity.getPrimaryKeyClass().getName() + ")");
            }

            // got it add it to known finders
            JDBCQueryMetaData findByPKMD = manager.getMetaData().getQueryMetaDataForMethod(method);
            JDBCReadAheadMetaData readAhead = (findByPKMD == null ?
                    entity.getMetaData().getReadAhead() : findByPKMD.getReadAhead());
            JDBCQueryMetaData q = new JDBCAutomaticQueryMetaData(method, readAhead, entity.getMetaData().getQlCompiler(), false);
            knownQueries.put(method, factory.createFindByPrimaryKeyQuery(q));

            if (log.isDebugEnabled())
                log.debug("Added findByPrimaryKey query command for local home interface");
        }
View Full Code Here

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

            JDBCStoreManager manager,
            Method[] homeMethods,
            Logger log) {

        JDBCCommandFactory factory = manager.getCommandFactory();
        JDBCEntityBridge entity = (JDBCEntityBridge) manager.getEntityBridge();
        for (int i = 0; i < homeMethods.length; i++) {
            Method method = homeMethods[i];

            if (!knownQueries.containsKey(method)) {
                String name = method.getName();
                if (name.equals(FIND_ALL)) {
                    JDBCQueryMetaData q = new JDBCAutomaticQueryMetaData(
                            method,
                            entity.getMetaData().getReadAhead(),
                            entity.getMetaData().getQlCompiler(), false
                    );
                    knownQueries.put(method, factory.createFindAllQuery(q));
                } else if (name.startsWith(FIND_BY) && !name.equals(FIND_BY_PK)) {
                    try {
                        JDBCQueryMetaData q = new JDBCAutomaticQueryMetaData(
                                method,
                                entity.getMetaData().getReadAhead(),
                                entity.getMetaData().getQlCompiler(), false);
                        knownQueries.put(method, factory.createFindByQuery(q));
                    } catch (IllegalArgumentException e) {
                        log.debug("Could not create the finder " + name +
                                ", because no matching CMP field was found.");
                    }
View Full Code Here

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

    private String getSQL(JDBCCMRFieldBridge cmrField, boolean[] preloadMask, int keyCount) {
        JDBCCMPFieldBridge[] myKeyFields = getMyKeyFields(cmrField);
        JDBCCMPFieldBridge[] relatedKeyFields = getRelatedKeyFields(cmrField);
        String relationTable = getQualifiedRelationTable(cmrField);
        JDBCEntityBridge relatedEntity = cmrField.getRelatedJDBCEntity();
        String relatedTable = relatedEntity.getQualifiedTableName();

        // do we need to join the relation table and the related table
        boolean join = ((preloadMask != null) || cmrField.allFkFieldsMappedToPkFields())
                && (relatedKeyFields != relatedEntity.getPrimaryKeyFields());

        // aliases for the tables, only required if we are joining the tables
        String relationTableAlias;
        String relatedTableAlias;
        if (join) {
            relationTableAlias = getRelationTable(cmrField);
            relatedTableAlias = (
                    relatedTable.equals(relationTable) ? getRelationTable(cmrField) + '_' + cmrField.getFieldName() : relatedEntity.getTableName()
            );
        } else {
            relationTableAlias = "";
            relatedTableAlias = "";
        }
View Full Code Here

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

    }

    private static boolean[] getPreloadMask(JDBCCMRFieldBridge cmrField) {
        boolean[] preloadMask = null;
        if (cmrField.getReadAhead().isOnFind()) {
            JDBCEntityBridge relatedEntity = cmrField.getRelatedJDBCEntity();
            String eagerLoadGroup = cmrField.getReadAhead().getEagerLoadGroup();
            preloadMask = relatedEntity.getLoadGroupMask(eagerLoadGroup);
        }
        return preloadMask;
    }
View Full Code Here

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

            throws FinderException {
        int count = offset;
        Connection con = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        final JDBCEntityBridge entityBridge = (JDBCEntityBridge) selectManager.getEntityBridge();
        boolean throwRuntimeExceptions = entityBridge.getMetaData().getThrowRuntimeExceptions();

        // if metadata is true, the getconnection is done inside
        // its own try catch block to throw a runtime exception (EJBException)
        if (throwRuntimeExceptions) {
            try {
                con = entityBridge.getDataSource().getConnection();
            } catch (SQLException sqle) {
                javax.ejb.EJBException ejbe = new javax.ejb.EJBException("Could not get a connection; " + sqle);
                ejbe.initCause(sqle);
                throw ejbe;
            }
        }


        try {
            // create the statement
            if (log.isDebugEnabled()) {
                log.debug("Executing SQL: " + sql);
                if (limit != 0 || offset != 0) {
                    log.debug("Query offset=" + offset + ", limit=" + limit);
                }
            }

            // if metadata is false, the getconnection is done inside this try catch block
            if (!throwRuntimeExceptions) {
                con = entityBridge.getDataSource().getConnection();
            }
            ps = con.prepareStatement(sql);

            // Set the fetch size of the statement
            if (entityBridge.getFetchSize() > 0) {
                ps.setFetchSize(entityBridge.getFetchSize());
            }

            // set the parameters
            for (int i = 0; i < parameters.size(); i++) {
                QueryParameter parameter = (QueryParameter) parameters.get(i);
View Full Code Here

Examples of org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge

      {
         buf.append(SQLUtil.NOT).append('(');
      }

      String fromAlias;
      JDBCEntityBridge fromEntity;
      ASTPath fromPath = (ASTPath) fromNode;
      addJoinPath(fromPath);
      fromAlias = aliasManager.getAlias(fromPath.getPath());
      fromEntity = (JDBCEntityBridge) fromPath.getEntity();

      if(toNode instanceof ASTParameter)
      {
         ASTParameter toParam = (ASTParameter) toNode;

         // can only compare like kind entities
         verifyParameterEntityType(toParam.number, fromEntity);

         inputParameters.addAll(QueryParameter.createParameters(toParam.number - 1, fromEntity));

         SQLUtil.getWhereClause(fromEntity.getPrimaryKeyFields(), fromAlias, buf);
      }
      else
      {
         String toAlias;
         JDBCEntityBridge toEntity;
         ASTPath toPath = (ASTPath) toNode;
         addJoinPath(toPath);
         toAlias = aliasManager.getAlias(toPath.getPath());
         toEntity = (JDBCEntityBridge) toPath.getEntity();

         // can only compare like kind entities
         if(!fromEntity.equals(toEntity))
         {
            throw new IllegalStateException("Only like types can be " +
               "compared: from entity=" +
               fromEntity.getEntityName() +
               " to entity=" + toEntity.getEntityName());
         }

         SQLUtil.getSelfCompareWhereClause(fromEntity.getPrimaryKeyFields(), fromAlias, toAlias, 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.