⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basepeer.java

📁 torque服务器源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                if (pk.getType() instanceof Number)                {                    id = new NumberKey(keyGen.getIdAsBigDecimal(con, keyInfo));                }                else                {                    id = new StringKey(keyGen.getIdAsString(con, keyInfo));                }            }            catch (Exception e)            {                throwTorqueException(e);            }        }        return id;    }    /**     * Grouping of code used in both doInsert() and doUpdate()     * methods.  Sets up a Record for saving.     *     * @param rec A Record.     * @param tableName Name of table.     * @param criteria A Criteria.     * @throws TorqueException Any exceptions caught during processing will be     *         rethrown wrapped into a TorqueException.     */    private static void insertOrUpdateRecord(        Record rec,        String tableName,        Criteria criteria)        throws TorqueException    {        DatabaseMap dbMap = Torque.getDatabaseMap(criteria.getDbName());        ColumnMap[] columnMaps = dbMap.getTable(tableName).getColumns();        boolean shouldSave = false;        for (int j = 0; j < columnMaps.length; j++)        {            ColumnMap colMap = columnMaps[j];            String key = new StringBuffer(colMap.getTableName())                    .append('.')                    .append(colMap.getColumnName())                    .toString();            if (criteria.containsKey(key))            {                // A village Record.setValue( String, Object ) would                // be nice here.                Object obj = criteria.getValue(key);                if (obj instanceof SimpleKey)                {                    obj = ((SimpleKey) obj).getValue();                }                try                {                    if (obj == null)                    {                        rec.setValueNull(colMap.getColumnName());                    }                    else if (obj instanceof String)                    {                        rec.setValue(colMap.getColumnName(), (String) obj);                    }                    else if (obj instanceof Integer)                    {                        rec.setValue(colMap.getColumnName(),                                criteria.getInt(key));                    }                    else if (obj instanceof BigDecimal)                    {                        rec.setValue(colMap.getColumnName(), (BigDecimal) obj);                    }                    else if (obj instanceof Boolean)                    {                        rec.setValue(colMap.getColumnName(),                            criteria.getBoolean(key) ? 1 : 0);                    }                    else if (obj instanceof java.util.Date)                    {                        rec.setValue(colMap.getColumnName(),                            (java.util.Date) obj);                    }                    else if (obj instanceof Float)                    {                        rec.setValue(colMap.getColumnName(),                            criteria.getFloat(key));                    }                    else if (obj instanceof Double)                    {                        rec.setValue(colMap.getColumnName(),                            criteria.getDouble(key));                    }                    else if (obj instanceof Byte)                    {                        rec.setValue(colMap.getColumnName(),                            ((Byte) obj).byteValue());                    }                    else if (obj instanceof Long)                    {                        rec.setValue(colMap.getColumnName(),                            criteria.getLong(key));                    }                    else if (obj instanceof Short)                    {                        rec.setValue(colMap.getColumnName(),                            ((Short) obj).shortValue());                    }                    else if (obj instanceof Hashtable)                    {                        rec.setValue(colMap.getColumnName(),                            hashtableToByteArray((Hashtable) obj));                    }                    else if (obj instanceof byte[])                    {                        rec.setValue(colMap.getColumnName(), (byte[]) obj);                    }                }                catch (Exception e)                {                    throwTorqueException(e);                }                shouldSave = true;            }        }        if (shouldSave)        {            try            {                rec.save();            }            catch (Exception e)            {                throwTorqueException(e);            }        }        else        {            throw new TorqueException("No changes to save");        }    }    /**     * Method to create an SQL query for display only based on values in a     * Criteria.     *     * @param criteria A Criteria.     * @return the SQL query for display     * @exception TorqueException Trouble creating the query string.     */    static String createQueryDisplayString(Criteria criteria)        throws TorqueException    {        return createQuery(criteria).toString();    }    /**     * Build Oracle-style query with limit or offset.     * If the original SQL is in variable: query then the requlting     * SQL looks like this:     * <pre>     * SELECT B.* FROM (     *          SELECT A.*, rownum as TORQUE$ROWNUM FROM (     *                  query     *          ) A     *     ) B WHERE B.TORQUE$ROWNUM > offset AND B.TORQUE$ROWNUM     *     <= offset + limit     * </pre>     *      * @param query the query     * @param limit      * @param offset     * @return oracle-style query     */     private static String createOracleLimitOffsetQuery(Query query,             int limit, int offset)    {        StringBuffer buf = new StringBuffer();        buf.append("SELECT B.* FROM ( ");        buf.append("SELECT A.*, rownum AS TORQUE$ROWNUM FROM ( ");        buf.append(query.toString());        buf.append(" ) A ");        buf.append(" ) B WHERE ");        if (offset > 0)        {            buf.append(" B.TORQUE$ROWNUM > ");            buf.append(offset);            if (limit > 0)            {                buf.append(" AND B.TORQUE$ROWNUM <= ");                buf.append(offset + limit);            }        }        else        {            buf.append(" B.TORQUE$ROWNUM <= ");            buf.append(limit);        }        return buf.toString();    }    /**     * Method to create an SQL query for actual execution based on values in a     * Criteria.     *     * @param criteria A Criteria.     * @return the SQL query for actual execution     * @exception TorqueException Trouble creating the query string.     */    public static String createQueryString(Criteria criteria)        throws TorqueException    {        Query query = createQuery(criteria);        DB db = Torque.getDB(criteria.getDbName());        // Limit the number of rows returned.        int limit = criteria.getLimit();        int offset = criteria.getOffset();        String sql;        if ((limit > 0 || offset > 0)            && db.getLimitStyle() == DB.LIMIT_STYLE_ORACLE)        {            sql = createOracleLimitOffsetQuery(query, limit, offset);            criteria.setLimit(-1);            criteria.setOffset(0);        }        else        {            if (offset > 0 && db.supportsNativeOffset())            {                // Now set the criteria's limit and offset to return the                // full resultset since the results are limited on the                // server.                criteria.setLimit(-1);                criteria.setOffset(0);            }            else if (limit > 0 && db.supportsNativeLimit())            {                // Now set the criteria's limit to return the full                // resultset since the results are limited on the server.                criteria.setLimit(-1);            }            sql = query.toString();        }        if (log.isDebugEnabled())        {            log.debug(sql);        }        return sql;    }    /**     * Method to create an SQL query based on values in a Criteria.  Note that     * final manipulation of the limit and offset are performed when the query     * is actually executed.     *     * @param criteria A Criteria.     * @return the sql query     * @exception TorqueException Trouble creating the query string.     */    static Query createQuery(Criteria criteria)        throws TorqueException    {        Query query = new Query();        DB db = Torque.getDB(criteria.getDbName());        DatabaseMap dbMap = Torque.getDatabaseMap(criteria.getDbName());        UniqueList selectModifiers = query.getSelectModifiers();        UniqueList selectClause = query.getSelectClause();        UniqueList fromClause = query.getFromClause();        UniqueList whereClause = query.getWhereClause();        UniqueList orderByClause = query.getOrderByClause();        UniqueList groupByClause = query.getGroupByClause();        UniqueList orderBy = criteria.getOrderByColumns();        UniqueList groupBy = criteria.getGroupByColumns();        UniqueList select = criteria.getSelectColumns();        Hashtable aliases = criteria.getAsColumns();        UniqueList modifiers = criteria.getSelectModifiers();        for (int i = 0; i < modifiers.size(); i++)        {            selectModifiers.add(modifiers.get(i));        }        for (int i = 0; i < select.size(); i++)        {            String columnName = (String) select.get(i);            if (columnName.indexOf('.') == -1  && columnName.indexOf('*') == -1)            {                throwMalformedColumnNameException("select", columnName);            }            String tableName = null;            selectClause.add(columnName);            int parenPos = columnName.indexOf('(');            if (parenPos == -1)            {                tableName = columnName.substring(0, columnName.indexOf('.'));            }            else if (columnName.indexOf('.') > -1)            {                tableName =                    columnName.substring(parenPos + 1, columnName.indexOf('.'));                // functions may contain qualifiers so only take the last                // word as the table name.                int lastSpace = tableName.lastIndexOf(' ');                if (lastSpace != -1)                {                    tableName = tableName.substring(lastSpace + 1);                }            }            String tableName2 = criteria.getTableForAlias(tableName);            if (tableName2 != null)            {                fromClause.add(new StringBuffer(                        tableName.length() + tableName2.length() + 1)                        .append(tableName2)                        .append(' ')                        .append(tableName)                        .toString());            }            else            {                fromClause.add(tableName);            }        }        Iterator it = aliases.keySet().iterator();        while (it.hasNext())        {            String key = (String) it.next();            selectClause.add((String) aliases.get(key) + " AS " + key);        }        Iterator critKeys = criteria.keySet().iterator();        while (critKeys.hasNext())        {            String key = (String) critKeys.next();            Criteria.Criterion criterion = criteria.getCriterion(key);            Criteria.Criterion[] someCriteria =                criterion.getAttachedCriterion();            String table = null;            for (int i = 0; i < someCriteria.length; i++)            {                String tableName = someCriteria[i].getTable();                table = criteria.getTableForAlias(tableName);                if (table != null)                {                    fromClause.add(new StringBuffer(                            tableName.length() + table.length() + 1)                            .append(table)                            .append(' ')                            .append(tableName)                            .toString());                }                else                {                    fromClause.add(tableName);                    table = tableName;                }                boolean ignorCase = ((criteria.isIgnoreCase()                        || someCriteria[i].isIgnoreCase())                        && (dbMap                            .getTable(table)                            .getColumn(someCriteria[i].getColumn())                            .getType()                            instanceof String));                someCriteria[i].setIgnoreCase(ignorCase);            }            criterion.setDB(db);            whereClause.add(criterion.toString());        }        List join = criteria.getJoinL();        if (join != null)        {            for (int i = 0; i < join.size(); i++)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -