Package org.apache.cayenne.query

Examples of org.apache.cayenne.query.QueryMetadata


     * resolved. For the rest of the list, only ObjectIds are read.
     *
     * @since 3.0
     */
    protected void fillIn(Query query, List elementsList, boolean resolvesFirstPage) {
        QueryMetadata info = query.getMetaData(dataContext.getEntityResolver());
        boolean fetchesDataRows = internalQuery.isFetchingDataRows();

        // start fresh
        elementsList.clear();
        rowWidth = 0;

        try {
            int lastResolved = 0;
            long t1 = System.currentTimeMillis();
            ResultIterator it = dataContext.performIteratedQuery(query);
            try {

                rowWidth = it.getDataRowWidth();

                // resolve first page if we can
                if (resolvesFirstPage) {
                    // read first page completely, the rest as ObjectIds
                    for (int i = 0; i < pageSize && it.hasNextRow(); i++) {
                        elementsList.add(it.nextDataRow());
                        lastResolved++;
                    }

                    // defer DataRows -> Objects conversion till we are completely done.
                }

                // continue reading ids
                DbEntity entity = rootEntity.getDbEntity();
                while (it.hasNextRow()) {
                    elementsList.add(it.nextObjectId(entity));
                }

                QueryLogger.logSelectCount(elementsList.size(), System
                        .currentTimeMillis()
                        - t1);
            }
            finally {
                it.close();
            }

            // fill in the first page AFTER the iterator was closed, otherwise we may
            // cause an (unobvious) deadlock due to connection pool exhaustion
            if (!fetchesDataRows && lastResolved > 0) {
                List objects = dataContext.objectsFromDataRows(rootEntity, elementsList
                        .subList(0, lastResolved), info.isRefreshingObjects(), info
                        .isResolvingInherited());

                for (int i = 0; i < lastResolved; i++) {
                    elementsList.set(i, objects.get(i));
                }
View Full Code Here


            engine.addExpectedResult(select, rows1);
            List resultRows = context.performQuery(select);
            assertEquals(1, engine.getRunCount());
            assertEquals(rows1, resultRows);

            QueryMetadata cacheKey = select.getMetaData(context.getEntityResolver());
            assertNull(context.getParentDataDomain().getQueryCache().get(cacheKey));

            assertEquals(rows1, context.getQueryCache().get(cacheKey));

            // second run, must refresh the cache
View Full Code Here

            engine.addExpectedResult(select, rows1);
            List resultRows = context.performQuery(select);
            assertEquals(1, engine.getRunCount());
            assertEquals(rows1, resultRows);

            QueryMetadata cacheKey = select.getMetaData(context.getEntityResolver());

            assertEquals(rows1, context.getParentDataDomain().getQueryCache().get(
                    cacheKey));

            assertNull(context.getQueryCache().get(cacheKey));
View Full Code Here

            engine.addExpectedResult(select, rows1);
            List resultRows = context.performQuery(select);
            assertEquals(1, engine.getRunCount());
            assertEquals(2, resultRows.size());
            assertTrue(resultRows.get(0) instanceof DataObject);
            QueryMetadata cacheKey = select.getMetaData(context.getEntityResolver());
            assertNull(context.getParentDataDomain().getQueryCache().get(cacheKey));

            assertEquals(resultRows, context.getQueryCache().get(cacheKey));

            // second run, must refresh the cache
View Full Code Here

    public void testBuildSegmentColumnsLeaf() {

        SelectQuery query = new SelectQuery(CustomerRepresentative.class);

        EntityResolver resolver = getDomain().getEntityResolver();
        QueryMetadata md = query.getMetaData(resolver);
        ClassDescriptor descriptor = md.getClassDescriptor();
        ExtendedTypeMap converters = getDomain()
                .getDataNodes()
                .iterator()
                .next()
                .getAdapter()
View Full Code Here

    public void testBuildSegmentRowReaderLeaf() throws Exception {

        SelectQuery query = new SelectQuery(CustomerRepresentative.class);

        EntityResolver resolver = getDomain().getEntityResolver();
        QueryMetadata md = query.getMetaData(resolver);
        ClassDescriptor descriptor = md.getClassDescriptor();
        ExtendedTypeMap converters = getDomain()
                .getDataNodes()
                .iterator()
                .next()
                .getAdapter()
                .getExtendedTypes();

        SelectDescriptor<Object> select = new EntityTreeSegmentBuilder(
                md,
                converters,
                descriptor).buildSegment();

        List<? extends SelectColumn> columns = select.getColumns();

        Map<String, Object> crRowMap = new HashMap<String, Object>();
        crRowMap.put("PERSON_ID", 3);
        crRowMap.put("PERSON_TYPE", "C");
        crRowMap.put("NAME", "E2");
        crRowMap.put("CLIENT_CONTACT_TYPE", "XX");
        crRowMap.put("CLIENT_COMPANY_ID", 3);

        List<Object> crRow = new ArrayList<Object>();

        MockResultSet rs = new MockResultSet("test");
        for (SelectColumn column : columns) {
            rs.addColumn(column.getColumnName(md.getDbEntity(), null));
            crRow.add(crRowMap.get(column.getDataRowKey()));
        }

        rs.addRow(crRow);
View Full Code Here

    public void testBuildSegmentColumnsSuper() {

        SelectQuery query = new SelectQuery(AbstractPerson.class);

        EntityResolver resolver = getDomain().getEntityResolver();
        QueryMetadata md = query.getMetaData(resolver);
        ClassDescriptor descriptor = md.getClassDescriptor();
        ExtendedTypeMap converters = getDomain()
                .getDataNodes()
                .iterator()
                .next()
                .getAdapter()
View Full Code Here

    public void testBuildSegmentRowReaderSuper() throws Exception {
        SelectQuery query = new SelectQuery(AbstractPerson.class);

        EntityResolver resolver = getDomain().getEntityResolver();
        QueryMetadata md = query.getMetaData(resolver);
        ClassDescriptor descriptor = md.getClassDescriptor();
        ExtendedTypeMap converters = getDomain()
                .getDataNodes()
                .iterator()
                .next()
                .getAdapter()
                .getExtendedTypes();

        SelectDescriptor<Object> select = new EntityTreeSegmentBuilder(
                md,
                converters,
                descriptor).buildSegment();

        List<? extends SelectColumn> columns = select.getColumns();

        Map<String, Object> employeeRowMap = new HashMap<String, Object>();
        employeeRowMap.put("PERSON_ID", 1);
        employeeRowMap.put("PERSON_TYPE", "EE");
        employeeRowMap.put("NAME", "E1");
        employeeRowMap.put("SALARY", new Float(1.0));
        employeeRowMap.put("DEPARTMENT_ID", 1);

        Map<String, Object> managerRowMap = new HashMap<String, Object>();
        managerRowMap.put("PERSON_ID", 2);
        managerRowMap.put("PERSON_TYPE", "EM");
        managerRowMap.put("NAME", "E2");
        managerRowMap.put("SALARY", new Float(2.0));
        managerRowMap.put("DEPARTMENT_ID", 2);

        Map<String, Object> crRowMap = new HashMap<String, Object>();
        crRowMap.put("PERSON_ID", 3);
        crRowMap.put("PERSON_TYPE", "C");
        crRowMap.put("NAME", "E2");
        crRowMap.put("CLIENT_CONTACT_TYPE", "XX");
        crRowMap.put("CLIENT_COMPANY_ID", 3);

        List<Object> employeeRow = new ArrayList<Object>();
        List<Object> managerRow = new ArrayList<Object>();
        List<Object> crRow = new ArrayList<Object>();

        MockResultSet rs = new MockResultSet("test");
        for (SelectColumn column : columns) {
            rs.addColumn(column.getColumnName(md.getDbEntity(), null));

            employeeRow.add(employeeRowMap.get(column.getDataRowKey()));
            managerRow.add(managerRowMap.get(column.getDataRowKey()));
            crRow.add(crRowMap.get(column.getDataRowKey()));
        }
View Full Code Here

                .getClassDescriptor("Artist");
        List dataRows = new ArrayList();
        dataRows.add(new DataRow(4));
        dataRows.add(new DataRow(4));

        QueryMetadata metadata = new MockQueryMetadata() {

            @Override
            public ClassDescriptor getClassDescriptor() {
                return descriptor;
            }
View Full Code Here

                        + Painting.TO_GALLERY_PROPERTY
                        + "."
                        + Gallery.EXHIBIT_ARRAY_PROPERTY).setPhantom(false);
        tree.addPath(Artist.ARTIST_EXHIBIT_ARRAY_PROPERTY).setPhantom(false);

        QueryMetadata metadata = new MockQueryMetadata() {

            @Override
            public ClassDescriptor getClassDescriptor() {
                return descriptor;
            }
View Full Code Here

TOP

Related Classes of org.apache.cayenne.query.QueryMetadata

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.