Package org.apache.turbine.util.db.map

Examples of org.apache.turbine.util.db.map.DatabaseMap


                          boolean adjustQuantity)
        throws Exception
    {
        BigDecimal nextId = null;
        BigDecimal quantity = null;
        DatabaseMap dbMap = tableMap.getDatabaseMap();
        TableMap tMap = dbMap.getTable(tableName);

        // Block on the table.  Multiple tables are allowed to ask for
        // ids simultaneously.
//        synchronized(tMap)  see comment in the getNextIds method
//        {
            if (adjustQuantity)
                checkTiming(tableName);

            DBConnection dbCon = null;
            try
            {
                String databaseName = dbMap.getName();

                // Get a connection to the db by starting a
                // transaction.
                if (transactionsSupported)
                {
                    dbCon = BasePeer.beginTransaction(databaseName);
                }
                else
                {
                    dbCon = TurbineDB.getConnection(databaseName);
                }
                Connection connection = dbCon.getConnection();

                // Write the current value of quantity of keys to grab
                // to the database, primarily to obtain a write lock
                // on the table/row, but this value will also be used
                // as the starting value when an IDBroker is
                // instantiated.
                quantity = getQuantity(tableName);
                Criteria criteria = new Criteria(2)
                    .add( QUANTITY, quantity );
                Criteria selectCriteria = new Criteria(2)
                    .add( TABLE_NAME, tableName );
                criteria.setDbName(dbMap.getName());
                selectCriteria.setDbName(dbMap.getName());
                BasePeer.doUpdate( selectCriteria, criteria, dbCon );

                // Read the next starting ID from the ID_TABLE.
                BigDecimal[] results = selectRow(connection, tableName);
                nextId = results[0]; // NEXT_ID column
View Full Code Here


     * @exception Exception, a generic exception.
     */
    public boolean containsObjectColumn(String databaseMapName)
        throws Exception
    {
        DatabaseMap map = TurbineDB.getDatabaseMap(databaseMapName);
        StringStackBuffer tables = new StringStackBuffer();
        for (Enumeration e = super.elements(); e.hasMoreElements(); )
        {
            Criterion co = (Criterion)e.nextElement();
            String tableName = co.getTable();
            if (!tables.contains(tableName))
            {
                if (map.getTable(tableName).containsObjectColumn())
                  return true;
                tables.add(tableName);
            }
        }
        return false;
View Full Code Here

    public static void doDelete(Criteria criteria,
                                DBConnection dbCon)
        throws Exception
    {
        DB db = TurbineDB.getDB( criteria.getDbName() );
        DatabaseMap dbMap = TurbineDB.getDatabaseMap( criteria.getDbName() );
        Connection connection = dbCon.getConnection();

        // Set up a list of required tables and add extra entries to
        // criteria if directed to delete all related records.
        // StringStackBuffer.add() only adds element if it is unique.
        StringStackBuffer tables = new StringStackBuffer();
        Enumeration e = criteria.keys();
        while(e.hasMoreElements())
        {
            String key = (String)e.nextElement();
            Criteria.Criterion c = criteria.getCriterion(key);
            String[] tableNames = c.getAllTables();
            for (int i=0; i<tableNames.length; i++)
            {
                String tableName2 = criteria.getTableForAlias(tableNames[i]);
                if ( tableName2 != null )
                {
                    tables.add(
                        new StringBuffer(tableNames[i].length() +
                                         tableName2.length() + 1)
                        .append(tableName2).append(' ').append(tableNames[i])
                        .toString() );
                }
                else
                {
                    tables.add(tableNames[i]);
                }
            }
           
            if ( criteria.isCascade() )
            {
                // This steps thru all the columns in the database.
                TableMap[] tableMaps = dbMap.getTables();
                for (int i=0; i<tableMaps.length; i++)
                {
                    ColumnMap[] columnMaps = tableMaps[i].getColumns();
                    for (int j=0; j<columnMaps.length; j++)
                    {
                        // Only delete rows where the foreign key is
                        // also a primary key.  Other rows need
                        // updateing, but that is not implemented.
                        if ( columnMaps[j].isForeignKey()
                            && columnMaps[j].isPrimaryKey()
                            && key.equals(columnMaps[j].getRelatedName()) )
                        {
                            tables.add(tableMaps[i].getName());
                            criteria.add(columnMaps[j].getFullyQualifiedName(),
                                         criteria.getValue(key));
                        }
                    }
                }
            }
        }

        for (int i=0; i<tables.size(); i++)
        {
            KeyDef kd = new KeyDef();
            StringStackBuffer whereClause = new StringStackBuffer();

            ColumnMap[] columnMaps =
                dbMap.getTable( tables.get(i) ).getColumns();
            for (int j=0; j<columnMaps.length; j++)
            {
                ColumnMap colMap = columnMaps[j];
                if ( colMap.isPrimaryKey() )
                {
View Full Code Here

        }
        else
        {
            throw new Exception("Database insert attempted without anything specified to insert");
        }
        DatabaseMap dbMap = TurbineDB.getDatabaseMap( criteria.getDbName() );
        TableMap tableMap = dbMap.getTable(tableName);
        Object keyInfo = tableMap.getPrimaryKeyMethodInfo();
        IdGenerator keyGen = tableMap.getIdGenerator();

        ColumnMap pk = getPrimaryKey(criteria);
        // only get a new key value if you need to
View Full Code Here

    private static void insertOrUpdateRecord(Record rec,
                                             String tableName,
                                             Criteria criteria)
        throws Exception
    {
        DatabaseMap dbMap = TurbineDB.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())
View Full Code Here

    public static String createQueryString( Criteria criteria )
        throws Exception
    {
        Query query = new Query();
        DB db = TurbineDB.getDB( criteria.getDbName() );
        DatabaseMap dbMap = TurbineDB.getDatabaseMap( criteria.getDbName() );

        StringStackBuffer selectModifiers = query.getSelectModifiers();
        StringStackBuffer selectClause = query.getSelectClause();
        StringStackBuffer fromClause = query.getFromClause();
        StringStackBuffer whereClause = query.getWhereClause();
        StringStackBuffer orderByClause = query.getOrderByClause();

        StringStackBuffer orderBy = criteria.getOrderByColumns();
        boolean ignoreCase = criteria.isIgnoreCase();
        StringStackBuffer select = criteria.getSelectColumns();
        Hashtable aliases = criteria.getAsColumns();
        StringStackBuffer 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 = select.get(i);
            String tableName = null;
            selectClause.add(columnName);
            int parenPos = columnName.indexOf('(');
            if (parenPos == -1)
            {
                tableName = columnName.substring(0,
                                                 columnName.indexOf('.') );
            }
            else
            {
                tableName = columnName.substring(parenPos + 1,
                                                 columnName.indexOf('.') );
            }
            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);
        }

        Enumeration e = criteria.keys();
        while (e.hasMoreElements())
        {
            String key = (String)e.nextElement();
            Criteria.Criterion criterion =
                (Criteria.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() &&
                    (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++ )
            {
                String join1 = (String)join.get(i);
                String join2 = (String)criteria.getJoinR().get(i);
           
                String tableName = join1.substring(0, join1.indexOf('.'));
                String 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);
                }

                int dot =  join2.indexOf('.');
                tableName = join2.substring(0, dot);
                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() &&
                    (dbMap.getTable(table).getColumn(
                        join2.substring(dot+1, join2.length()) )
                    .getType() instanceof String));
               
                whereClause.add(
                    SqlExpression.buildInnerJoin(join1, join2,
                                                 ignorCase, db) );
            }
        }

        if ( orderBy != null && orderBy.size() > 0)
        {
            // Check for each String/Character column and apply
            // toUpperCase().
            for (int i=0; i<orderBy.size(); i++)
            {
                String orderByColumn = orderBy.get(i);
                String table = orderByColumn.substring(0,orderByColumn.indexOf('.') );
                // See if there's a space (between the column list and sort
                // order in ORDER BY table.column DESC).
                int spacePos = orderByColumn.indexOf(' ');
                String columnName;
                if (spacePos == -1)
                    columnName = orderByColumn.substring(orderByColumn.indexOf('.') + 1);
                else
                    columnName = orderByColumn.substring(orderByColumn.indexOf('.') + 1, spacePos);
                ColumnMap column = dbMap.getTable(table).getColumn( columnName );
                if ( column.getType() instanceof String )
                {
                    if (spacePos == -1)
                        orderByClause.add( db.ignoreCaseInOrderBy(orderByColumn) );
                    else
View Full Code Here

        String table = criteria.getTableName(key);
        ColumnMap pk = null;

        if ( !table.equals("") )
        {
            DatabaseMap dbMap = TurbineDB.getDatabaseMap(criteria.getDbName());
            if (dbMap == null)
                throw new Exception ("dbMap is null");
            if (dbMap.getTable(table) == null)
                throw new Exception ("dbMap.getTable() is null");

            ColumnMap[] columns = dbMap.getTable(table).getColumns();

            for (int i=0; i<columns.length; i++)
            {
                if ( columns[i].isPrimaryKey() )
                {
View Full Code Here

                                Criteria updateValues,
                                DBConnection dbCon)
        throws Exception
    {
        DB db = TurbineDB.getDB( selectCriteria.getDbName() );
        DatabaseMap dbMap =
            TurbineDB.getDatabaseMap( selectCriteria.getDbName() );
        Connection connection = dbCon.getConnection();

        // Set up a list of required tables.  StringStackBuffer.add()
        // only adds element if it is unique.
        StringStackBuffer tables = new StringStackBuffer();
        Enumeration e = selectCriteria.keys();
        while(e.hasMoreElements())
        {
            tables.add(selectCriteria.getTableName( (String)e.nextElement() ));
        }

        for (int i=0; i<tables.size(); i++)
        {
            KeyDef kd = new KeyDef();
            StringStackBuffer whereClause = new StringStackBuffer();
            DatabaseMap tempDbMap = dbMap;

            ColumnMap[] columnMaps =
                tempDbMap.getTable( tables.get(i) ).getColumns();
            for (int j=0; j<columnMaps.length; j++)
            {
                ColumnMap colMap = columnMaps[j];
                if ( colMap.isPrimaryKey() )
                {
View Full Code Here

                                               StringBuffer queryString,
                                               List params)
        throws Exception
    {
        DB db = TurbineDB.getDB( criteria.getDbName() );
        DatabaseMap dbMap = TurbineDB.getDatabaseMap( criteria.getDbName() );
       
        Query query = new Query();
       
        StringStackBuffer selectModifiers = query.getSelectModifiers();
        StringStackBuffer selectClause = query.getSelectClause();
        StringStackBuffer fromClause = query.getFromClause();
        StringStackBuffer whereClause = query.getWhereClause();
        StringStackBuffer orderByClause = query.getOrderByClause();

        StringStackBuffer orderBy = criteria.getOrderByColumns();
        boolean ignoreCase = criteria.isIgnoreCase();
        StringStackBuffer select = criteria.getSelectColumns();
        Hashtable aliases = criteria.getAsColumns();
        StringStackBuffer modifiers = criteria.getSelectModifiers();

        for (int i=0; i<modifiers.size(); i++)
        {
            selectModifiers.add( modifiers.get(i) );
        }

        for (int i=0; i<modifiers.size(); i++)
        {
            selectModifiers.add( modifiers.get(i) );
        }

        for (int i=0; i<select.size(); i++)
        {
            String columnName = select.get(i);
            String tableName = null;
            selectClause.add(columnName);
            int parenPos = columnName.indexOf('(');
            if (parenPos == -1)
            {
                tableName = columnName.substring(0,
                                                 columnName.indexOf('.') );
            }
            else
            {
                tableName = columnName.substring(parenPos + 1,
                                                 columnName.indexOf('.') );
            }
            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);
        }

        Enumeration e = criteria.keys();
        while (e.hasMoreElements())
        {
            String key = (String)e.nextElement();
            Criteria.Criterion criterion =
                (Criteria.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() &&
                    (dbMap.getTable(table).getColumn(
                    someCriteria[i].getColumn()).getType() instanceof String));
               
                someCriteria[i].setIgnoreCase(ignorCase);
            }
               
            criterion.setDB(db);
            StringBuffer sb = new StringBuffer();
            criterion.appendPsTo (sb,params);
            whereClause.add( sb.toString() );

        }
       
        List join = criteria.getJoinL();
        if ( join != null)
        {
            for ( int i=0; i<join.size(); i++ )
            {
                String join1 = (String)join.get(i);
                String join2 = (String)criteria.getJoinR().get(i);
           
                String tableName = join1.substring(0, join1.indexOf('.'));
                String 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);
                }

                int dot =  join2.indexOf('.');
                tableName = join2.substring(0, dot);
                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() &&
                    (dbMap.getTable(table).getColumn(
                        join2.substring(dot+1, join2.length()) )
                    .getType() instanceof String));
               
                whereClause.add(
                    SqlExpression.buildInnerJoin(join1, join2,
                                                 ignorCase, db) );
            }
        }

        if ( orderBy != null && orderBy.size() > 0)
        {
            // Check for each String/Character column and apply
            // toUpperCase().
            for (int i=0; i<orderBy.size(); i++)
            {
                String orderByColumn = orderBy.get(i);
                String table = orderByColumn.substring(0,orderByColumn.indexOf('.') );
                // See if there's a space (between the column list and sort
                // order in ORDER BY table.column DESC).
                int spacePos = orderByColumn.indexOf(' ');
                String columnName;
                if (spacePos == -1)
                    columnName = orderByColumn.substring(orderByColumn.indexOf('.') + 1);
                else
                    columnName = orderByColumn.substring(orderByColumn.indexOf('.') + 1, spacePos);
                ColumnMap column = dbMap.getTable(table).getColumn( columnName );
                if ( column.getType() instanceof String )
                {
                    if (spacePos == -1)
                        orderByClause.add( db.ignoreCaseInOrderBy(orderByColumn) );
                    else
View Full Code Here

     * @exception Exception, a generic exception.
     */
    public boolean containsObjectColumn(String databaseMapName)
        throws Exception
    {
        DatabaseMap map = TurbineDB.getDatabaseMap(databaseMapName);
        StringStackBuffer tables = new StringStackBuffer();
        for (Enumeration e = super.elements(); e.hasMoreElements(); )
        {
            Criterion co = (Criterion)e.nextElement();
            String tableName = co.getTable();
            if (!tables.contains(tableName))
            {
                if (map.getTable(tableName).containsObjectColumn())
                  return true;
                tables.add(tableName);
            }
        }
        return false;
View Full Code Here

TOP

Related Classes of org.apache.turbine.util.db.map.DatabaseMap

Copyright © 2018 www.massapicom. 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.