Package org.apache.cayenne.query

Examples of org.apache.cayenne.query.InsertBatchQuery


        for (DbEntity dbEntity : dbEntities) {

            Collection<DbEntityClassDescriptor> descriptors = descriptorsByDbEntity
                    .get(dbEntity);

            InsertBatchQuery batch =
                new DataDomainInsertQuery(parent.getDomain(), dbEntity, 27);
            for (DbEntityClassDescriptor descriptor : descriptors) {

                diffBuilder.reset(descriptor);

                List<Persistent> objects = objectsByDescriptor.get(descriptor
                        .getClassDescriptor());
                if (objects.isEmpty()) {
                    continue;
                }

                checkReadOnly(descriptor.getEntity());
                createPermIds(descriptor, objects);
                sorter.sortObjectsForEntity(descriptor.getEntity(), objects, false);

                for (Persistent o : objects) {
                    Map<Object, Object> snapshot = diffBuilder.buildDBDiff(parent
                            .objectDiff(o.getObjectId()));

                    // we need to insert even if there is no changes to default values
                    // so creating an empty changes map
                    if (snapshot == null) {
                        snapshot = new HashMap<Object, Object>();
                    }

                    batch.add(snapshot, o.getObjectId());
                }
            }

            queries.add(batch);
        }
View Full Code Here


        EntityResolver resolver = getDomain().getEntityResolver();

        // test with adapter that supports keys
        DbAdapter adapter = buildAdapter(true);

        InsertBatchQuery batch1 = new InsertBatchQuery(resolver.lookupObjEntity(
                GeneratedColumnTestEntity.class).getDbEntity(), 5);
        assertTrue(new BatchAction(batch1, adapter, resolver).hasGeneratedKeys());

        InsertBatchQuery batch2 = new InsertBatchQuery(resolver.lookupObjEntity(
                Artist.class).getDbEntity(), 5);
        assertFalse(new BatchAction(batch2, adapter, resolver).hasGeneratedKeys());
    }
View Full Code Here

        EntityResolver resolver = getDomain().getEntityResolver();

        // test with adapter that does not support keys...
        DbAdapter adapter = buildAdapter(false);

        InsertBatchQuery batch1 = new InsertBatchQuery(resolver.lookupObjEntity(
                GeneratedColumnTestEntity.class).getDbEntity(), 5);
        assertFalse(new BatchAction(batch1, adapter, resolver).hasGeneratedKeys());

        InsertBatchQuery batch2 = new InsertBatchQuery(resolver.lookupObjEntity(
                Artist.class).getDbEntity(), 5);
        assertFalse(new BatchAction(batch2, adapter, resolver).hasGeneratedKeys());
    }
View Full Code Here

        Iterator i = dbEntities.iterator();
        while (i.hasNext()) {
            DbEntity dbEntity = (DbEntity) i.next();
            List objEntitiesForDbEntity = (List) objEntitiesByDbEntity.get(dbEntity);

            InsertBatchQuery batch = new InsertBatchQuery(dbEntity, 27);

            Iterator j = objEntitiesForDbEntity.iterator();
            while (j.hasNext()) {
                ObjEntity entity = (ObjEntity) j.next();

                diffBuilder.reset(entity, dbEntity);

                boolean isMasterDbEntity = (entity.getDbEntity() == dbEntity);

                // remove object set for dependent entity, so that it does not show up
                // on post processing
                List objects = (List) (isMasterDbEntity
                        ? objectsByEntity.get(entity)
                        : objectsByEntity.remove(entity));

                if (objects.isEmpty()) {
                    continue;
                }

                checkReadOnly(entity);

                if (isMasterDbEntity) {
                    createPermIdsForObjEntity(entity, objects);
                    sorter.sortObjectsForEntity(entity, objects, false);
                }

                for (Iterator k = objects.iterator(); k.hasNext();) {
                    DataObject o = (DataObject) k.next();

                    Map snapshot = diffBuilder.buildDBDiff(parent.objectDiff(o
                            .getObjectId()));

                    batch.add(snapshot, o.getObjectId());
                }
            }

            queries.add(batch);
        }
View Full Code Here

                    entity,
                    select) : select;

            sourceNode.performQueries(Collections.singletonList(query), observer);
            ResultIterator result = observer.getResultIterator();
            InsertBatchQuery insert = new InsertBatchQuery(entity, INSERT_BATCH_SIZE);

            try {

                // Split insertions into the same table into batches.
                // This will allow to process tables of arbitrary size
                // and not run out of memory.
                int currentRow = 0;

                // even if we don't use intermediate batch commits, we still need to
                // estimate batch insert size
                int batchSize = insertBatchSize > 0 ? insertBatchSize : INSERT_BATCH_SIZE;

                while (result.hasNextRow()) {
                    if (insertBatchSize > 0
                            && currentRow > 0
                            && currentRow % insertBatchSize == 0) {
                        // end of the batch detected... commit and start a new insert
                        // query
                        destinationNode.performQueries(
                                Collections.singletonList(insert),
                                insertObserver);
                        insert = new InsertBatchQuery(entity, batchSize);
                        insertObserver.clear();
                    }

                    currentRow++;

                    Map nextRow = result.nextDataRow();
                    insert.add(nextRow);
                }

                // commit remaining batch if needed
                if (insert.size() > 0) {
                    destinationNode.performQueries(
                            Collections.singletonList(insert),
                            insertObserver);
                }
View Full Code Here

        return flattenedInsertQueries.isEmpty() && flattenedDeleteQueries.isEmpty();
    }

    void addFlattenedInsert(DbEntity flattenedEntity, FlattenedArcKey flattenedInsertInfo) {

        InsertBatchQuery relationInsertQuery = (InsertBatchQuery) flattenedInsertQueries
                .get(flattenedEntity);

        if (relationInsertQuery == null) {
            relationInsertQuery = new InsertBatchQuery(flattenedEntity, 50);
            flattenedInsertQueries.put(flattenedEntity, relationInsertQuery);
        }

        DataNode node = parent.getDomain().lookupDataNode(flattenedEntity.getDataMap());
        Map flattenedSnapshot = flattenedInsertInfo.buildJoinSnapshotForInsert(node);
        relationInsertQuery.add(flattenedSnapshot);
    }
View Full Code Here

                    entity,
                    select) : select;

            sourceNode.performQueries(Collections.singletonList(query), observer);
            ResultIterator result = observer.getResultIterator();
            InsertBatchQuery insert = new InsertBatchQuery(entity, INSERT_BATCH_SIZE);

            try {

                // Split insertions into the same table into batches.
                // This will allow to process tables of arbitrary size
                // and not run out of memory.
                int currentRow = 0;

                // even if we don't use intermediate batch commits, we still need to
                // estimate batch insert size
                int batchSize = insertBatchSize > 0 ? insertBatchSize : INSERT_BATCH_SIZE;

                while (result.hasNextRow()) {
                    if (insertBatchSize > 0
                            && currentRow > 0
                            && currentRow % insertBatchSize == 0) {
                        // end of the batch detected... commit and start a new insert
                        // query
                        destinationNode.performQueries(
                                Collections.singletonList(insert),
                                insertObserver);
                        insert = new InsertBatchQuery(entity, batchSize);
                        insertObserver.clear();
                    }

                    currentRow++;

                    Map nextRow = result.nextDataRow();
                    insert.add(nextRow);
                }

                // commit remaining batch if needed
                if (insert.size() > 0) {
                    destinationNode.performQueries(
                            Collections.singletonList(insert),
                            insertObserver);
                }
View Full Code Here

        Iterator i = dbEntities.iterator();
        while (i.hasNext()) {
            DbEntity dbEntity = (DbEntity) i.next();
            List objEntitiesForDbEntity = (List) descriptorsByDbEntity.get(dbEntity);

            InsertBatchQuery batch = new InsertBatchQuery(dbEntity, 27);

            Iterator j = objEntitiesForDbEntity.iterator();
            while (j.hasNext()) {
                ClassDescriptor descriptor = (ClassDescriptor) j.next();

                diffBuilder.reset(descriptor.getEntity(), dbEntity);

                boolean isMasterDbEntity = (descriptor.getEntity().getDbEntity() == dbEntity);

                // remove object set for dependent entity, so that it does not show up
                // on post processing
                List objects = (List) (isMasterDbEntity ? objectsByDescriptor
                        .get(descriptor) : objectsByDescriptor.remove(descriptor));

                if (objects.isEmpty()) {
                    continue;
                }

                checkReadOnly(descriptor.getEntity());

                if (isMasterDbEntity) {
                    createPermIdsForObjEntity(descriptor, objects);
                    sorter.sortObjectsForEntity(descriptor.getEntity(), objects, false);
                }

                for (Iterator k = objects.iterator(); k.hasNext();) {
                    Persistent o = (Persistent) k.next();

                    Map snapshot = diffBuilder.buildDBDiff(parent.objectDiff(o
                            .getObjectId()));

                    batch.add(snapshot, o.getObjectId());
                }
            }

            queries.add(batch);
        }
View Full Code Here

            // delegate is allowed to substitute query
            Query query = (delegate != null) ? delegate.willPortEntity(this, entity, select) : select;

            sourceNode.performQueries(Collections.singletonList(query), observer);
            ResultIterator result = observer.getResultIterator();
            InsertBatchQuery insert = new InsertBatchQuery(entity, INSERT_BATCH_SIZE);

            try {

                // Split insertions into the same table into batches.
                // This will allow to process tables of arbitrary size
                // and not run out of memory.
                int currentRow = 0;

                // even if we don't use intermediate batch commits, we still
                // need to
                // estimate batch insert size
                int batchSize = insertBatchSize > 0 ? insertBatchSize : INSERT_BATCH_SIZE;

                while (result.hasNextRow()) {
                    if (insertBatchSize > 0 && currentRow > 0 && currentRow % insertBatchSize == 0) {
                        // end of the batch detected... commit and start a new
                        // insert
                        // query
                        destinationNode.performQueries(Collections.singletonList((Query) insert), insertObserver);
                        insert = new InsertBatchQuery(entity, batchSize);
                        insertObserver.clear();
                    }

                    currentRow++;

                    Map<String, Object> nextRow = (DataRow) result.nextRow();
                    insert.add(nextRow);
                }

                // commit remaining batch if needed
                if (insert.size() > 0) {
                    destinationNode.performQueries(Collections.singletonList((Query) insert), insertObserver);
                }

                if (delegate != null) {
                    delegate.didPortEntity(this, entity, currentRow);
View Full Code Here

    public void testCreateSqlString() throws Exception {
        DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
                .getDbEntity();

        DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
        InsertBatchQuery deleteQuery = new InsertBatchQuery(entity, 1);
        InsertBatchQueryBuilder builder = new InsertBatchQueryBuilder(adapter);
        String generatedSql = builder.createSqlString(deleteQuery);
        assertNotNull(generatedSql);
        assertEquals("INSERT INTO " + entity.getName() + " (DESCRIPTION, LOCKING_TEST_ID, NAME) VALUES (?, ?, ?)",
                generatedSql);
View Full Code Here

TOP

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

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.