Package org.apache.ojb.broker.query

Examples of org.apache.ojb.broker.query.ReportQueryByCriteria


    public void testMultipleJoins()
    {
        ArrayList list = new java.util.ArrayList();

        Criteria crit = new Criteria();
        ReportQueryByCriteria q = QueryFactory.newReportQuery(Role.class, crit, true);

        q.setAttributes(new String[]{"roleName", "project.title", "person.firstname", });

        Iterator iter = broker.getReportQueryIteratorByQuery(q);
        while(iter.hasNext())
        {
            list.add(iter.next());
View Full Code Here


     */
    public void tesXNestedJoins2()
    {
        ArrayList list = new ArrayList();
        Criteria crit = new Criteria();
        ReportQueryByCriteria q = QueryFactory.newReportQuery(Task.class, crit);

        q.setAttributes(new String[]{"role.roleName", "role.project.title", "role.person.firstname", });

        Iterator iter = broker.getReportQueryIteratorByQuery(q);
        while(iter.hasNext())
        {
            list.add(iter.next());
View Full Code Here

        ArrayList list = new ArrayList();
        Criteria crit = new Criteria();
        crit.addEqualTo("groupId", new Integer(5));

        ReportQueryByCriteria q = QueryFactory.newReportQuery(ProductGroupWithAbstractArticles.class, crit, true);
        q.setAttributes(new String[]{"groupId", "groupName", "allArticlesInGroup.articleId", "allArticlesInGroup.articleName"});

        Iterator iter = broker.getReportQueryIteratorByQuery(q);
        while(iter.hasNext())
        {
            list.add(iter.next());
View Full Code Here

        Criteria crit = new Criteria();
        crit.addGreaterOrEqualThan("allArticlesInGroup.articleId", new Integer(1));
        crit.addLessOrEqualThan("allArticlesInGroup.articleId", new Integer(5));

        ReportQueryByCriteria q = QueryFactory.newReportQuery(ProductGroup.class, crit, true);
        q.setAttributes(new String[]{"groupId", "groupName", "allArticlesInGroup.articleId"});

        Iterator iter = broker.getReportQueryIteratorByQuery(q);
        while(iter.hasNext())
        {
            Object row;
View Full Code Here

        Criteria crit = new Criteria();
        crit.addLike("groupName", "%o%");
        crit.addLike("allArticlesInGroup.articleName", "%\u00f6%"); //unicode for �

        ReportQueryByCriteria q = QueryFactory.newReportQuery(ProductGroup.class, crit, true);
        q.setAttributes(new String[]{"groupId", "groupName"});

        Iterator iter = broker.getReportQueryIteratorByQuery(q);
        while(iter.hasNext())
        {
            list.add(iter.next());
View Full Code Here

    {
        // TODO: Resolve attributes of expressions
        if(ojbSkipKnownIssueProblem("Resolve attributes of expressions")) return;

        Criteria crit = new Criteria();
        ReportQueryByCriteria q = QueryFactory.newReportQuery(Article.class, crit);
        q.setAttributes(new String[]{"articleId", "price+10"});
        ClassDescriptor cd = broker.getClassDescriptor(q.getBaseClass());
        SqlGenerator sqlg = broker.serviceSqlGenerator();
        String sql = sqlg.getPreparedSelectStatement(q, cd).getStatement();
       
        assertTrue("Bad query generated. the 'price' field has not table prefix. SQL Output: " + sql, sql
                .equalsIgnoreCase("SELECT A0.Artikel_Nr,A0.Einzelpreis+10 FROM Artikel A0"));
View Full Code Here

        Criteria crit2 = new Criteria();
        crit2.setAlias("STOCKS");
        crit2.addGreaterOrEqualThan("allArticlesInGroup.stock", new Integer(110));

        crit1.addAndCriteria(crit2);
        ReportQueryByCriteria q = QueryFactory.newReportQuery(ProductGroup.class, crit1);
        q.setAttributes(new String[]{"groupId", "groupName", "STOCKS.allArticlesInGroup.articleName",
                                     "NAMES.allArticlesInGroup.articleName", "NAMES.allArticlesInGroup.stock"});

        // Due to AliasPrefixes ArticleName is taken from A2 and A1, Stock from A1,
        // SELECT A0.Kategorie_Nr,A0.KategorieName,A2.Artikelname,A1.Artikelname,A1.Lagerbestand FROM
View Full Code Here

     * @return
     */
    private Query getQueryByCriteriaCount(QueryByCriteria aQuery)
    {
        Class searchClass = aQuery.getSearchClass();
        ReportQueryByCriteria countQuery;
        Criteria countCrit = null;
        String[] columns = new String[1];

        // BRJ: copied Criteria without groupby, orderby, and prefetched relationships
        if (aQuery.getCriteria() != null)
        {
            countCrit = aQuery.getCriteria().copy(false,false,false);
        }

        if(aQuery.isDistinct())
        {
            //
            // BRJ: Count distinct is dbms dependent
            // hsql/sapdb: select count (distinct(person_id || project_id)) from person_project
            // mysql: select count (distinct person_id,project_id) from person_project
            //
            // concatenation of pk-columns is a simple way to obtain a single column
            // but concatenation is also dbms dependent:
            //
            // SELECT count(distinct concat(row1, row2, row3)) mysql
            // SELECT count(distinct (row1 || row2 || row3)) ansi
            // SELECT count(distinct (row1 + row2 + row3)) ms sql-server
            //
            FieldDescriptor[] pkFields = m_broker.getClassDescriptor(searchClass).getPkFields();
            String[] keyColumns = new String[pkFields.length];

            if(pkFields.length > 1)
            {
                // TODO: Use ColumnName. This is a temporary solution because
                // we cannot yet resolve multiple columns in the same attribute.
                for(int i = 0; i < pkFields.length; i++)
                {
                    keyColumns[i] = pkFields[i].getColumnName();
                }
            }
            else
            {
                for(int i = 0; i < pkFields.length; i++)
                {
                    keyColumns[i] = pkFields[i].getAttributeName();
                }
            }
            columns[0] = "count(distinct " + getPlatform().concatenate(keyColumns) + ")";
        }
        else
        {
            columns[0] = "count(*)";
        }

        // BRJ: we have to preserve indirection table !
        if(aQuery instanceof MtoNQuery)
        {
            MtoNQuery mnQuery = (MtoNQuery) aQuery;
            ReportQueryByMtoNCriteria mnReportQuery = new ReportQueryByMtoNCriteria(searchClass,
                    columns, countCrit);
            mnReportQuery.setIndirectionTable(mnQuery.getIndirectionTable());

            countQuery = mnReportQuery;
        }
        else
        {
            countQuery = new ReportQueryByCriteria(searchClass, columns, countCrit);
        }

        // BRJ: we have to preserve outer-join-settings (by Andr� Markwalder)
        Iterator outerJoinPath = aQuery.getOuterJoinPaths().iterator();
        while (outerJoinPath.hasNext())
        {
            String path = (String) outerJoinPath.next();
            if (aQuery.isPathOuterJoin(path))
            {
                countQuery.setPathOuterJoin(path);
            }
        }

        return countQuery;
    }
View Full Code Here

     * @param aQuery
     * @return
     */
    private Query getReportQueryByCriteriaCount(ReportQueryByCriteria aQuery)
    {
        ReportQueryByCriteria countQuery = (ReportQueryByCriteria) getQueryByCriteriaCount(aQuery);

        // BRJ: keep the original columns to build the Join
        countQuery.setJoinAttributes(aQuery.getAttributes());

        // BRJ: we have to preserve groupby information
        Iterator iter = aQuery.getGroupBy().iterator();
        while(iter.hasNext())
        {
            countQuery.addGroupBy((FieldHelper) iter.next());
        }

        return countQuery;
    }
View Full Code Here

            pg.setDescription("build by QueryTest#testSubQuery2");
            broker.store(pg);
        }
        broker.commitTransaction();

        ReportQueryByCriteria subQuery;
        Criteria subCrit = new Criteria();
        Criteria crit = new Criteria();

        subQuery = QueryFactory.newReportQuery(Article.class, subCrit);
        subQuery.setAttributes(new String[] { "productGroupId" });
        subQuery.setDistinct(true);

        crit.addEqualTo("groupName", "test group " + stamp);
        crit.addNotIn("groupId", subQuery);
        Query q = QueryFactory.newQuery(ProductGroup.class, crit);
View Full Code Here

TOP

Related Classes of org.apache.ojb.broker.query.ReportQueryByCriteria

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.