Example usage for org.springframework.transaction.support TransactionCallback TransactionCallback

List of usage examples for org.springframework.transaction.support TransactionCallback TransactionCallback

Introduction

In this page you can find the example usage for org.springframework.transaction.support TransactionCallback TransactionCallback.

Prototype

TransactionCallback

Source Link

Usage

From source file:com.hmsinc.epicenter.tools.geocoder.FacilityGeocoder.java

/**
 * @param args/*from  w  ww. j  a  v a2  s.com*/
 */
@SuppressWarnings("unchecked")
public static void main(String[] args) {

    if (args.length == 5) {

        System.setProperty("db.driver", args[0]);
        System.setProperty("db.url", args[1]);
        System.setProperty("db.type", args[2]);
        System.setProperty("db.user", args[3]);
        System.setProperty("db.password", args[4]);

        appContext = new ClassPathXmlApplicationContext(CONTEXT_FILES);

        final ProviderRepository providerRepository = (ProviderRepository) appContext
                .getBean("providerRepository");
        Validate.notNull(providerRepository);

        final Geocoder geocoder = (Geocoder) appContext.getBean("geocoder");
        Validate.notNull(geocoder);

        final PlatformTransactionManager tm = (PlatformTransactionManager) appContext
                .getBean("transactionManager");
        Validate.notNull(tm);

        final TransactionTemplate template = new TransactionTemplate(tm);

        List<Facility> facilities = (List<Facility>) template.execute(new TransactionCallback() {

            /*
             * (non-Javadoc)
             * 
             * @see org.springframework.transaction.support.TransactionCallback#doInTransaction(org.springframework.transaction.TransactionStatus)
             */
            public List<Facility> doInTransaction(TransactionStatus status) {
                return providerRepository.getList(Facility.class);
            }

        });

        for (final Facility facility : facilities) {
            if (facility.getGeometry() == null && facility.getAddress1() != null && facility.getCity() != null
                    && facility.getState() != null && facility.getZipcode() != null) {
                template.execute(new TransactionCallbackWithoutResult() {

                    /*
                     * (non-Javadoc)
                     * 
                     * @see org.springframework.transaction.support.TransactionCallbackWithoutResult#doInTransactionWithoutResult(org.springframework.transaction.TransactionStatus)
                     */
                    @Override
                    protected void doInTransactionWithoutResult(TransactionStatus status) {

                        System.out.println(facility.toString());
                        final Geometry geom = geocoder.geocode(facility.getAddress1(), facility.getCity(),
                                facility.getState(), facility.getZipcode());
                        if (geom != null) {
                            facility.setGeometry(geom);
                            providerRepository.update(facility);
                        }
                    }
                });

            }

        }

    } else {
        usage();
    }

}

From source file:com.vladmihalcea.CleanDbUtil.java

public static void cleanStore(final TransactionTemplate transactionTemplate,
        final EntityManager entityManager) {
    transactionTemplate.execute(new TransactionCallback<Void>() {
        @Override/*  w  w  w.j av a2s.com*/
        public Void doInTransaction(TransactionStatus transactionStatus) {
            entityManager.createQuery("delete from SubVersion where id > 0").executeUpdate();
            entityManager.createQuery("delete from Version where id > 0").executeUpdate();
            entityManager.createQuery("delete from Image where id > 0").executeUpdate();
            entityManager.createQuery("delete from WarehouseProductInfo where id > 0").executeUpdate();
            entityManager.createQuery("delete from Product where id > 0").executeUpdate();
            entityManager.createQuery("delete from Company where id > 0").executeUpdate();
            entityManager.flush();
            return null;
        }
    });
}

From source file:net.collegeman.grails.e3db.DB.java

public static Object withTransaction(final Closure closure) {
    TransactionTemplate transactionTemplate = new Template().getTransactionTemplate();
    if (transactionTemplate != null) {
        return transactionTemplate.execute(new TransactionCallback() {
            public Object doInTransaction(TransactionStatus transaction) {
                return closure.call();
            }/*from   w ww . j  a v a2  s.c  o  m*/
        });
    } else {
        return closure.call();
    }
}

From source file:org.openvpms.component.business.service.archetype.rule.ActSimpleRules.java

/**
 * Creates and saves a new act in a new transaction.
 * On return the supplied act will have a new unsaved relationship to the
 * new act.// w w  w  . j a v  a 2s .c o m
 *
 * @param act     the act
 * @param service the archetype service
 * @param manager the transaction manager
 * @see ArchetypeRuleServiceTestCase#testTransactionIsolation
 */
public static void insertNewActInIsolation(Act act, final IArchetypeService service,
        PlatformTransactionManager manager) {
    final Act related = (Act) service.create("act.simple");

    TransactionTemplate template = new TransactionTemplate(manager);
    template.setPropagationBehavior(TransactionTemplate.PROPAGATION_REQUIRES_NEW);

    // save the new act in a new transaction, suspending any current
    // transaction
    template.execute(new TransactionCallback() {
        public Object doInTransaction(TransactionStatus status) {
            service.save(related);
            return null;
        }
    });

    ActRelationship relationship = (ActRelationship) service.create("actRelationship.simple");
    relationship.setName("a simple relationship");
    relationship.setSource(related.getObjectReference());
    relationship.setTarget(act.getObjectReference());

    related.addActRelationship(relationship);
    act.addActRelationship(relationship);
}

From source file:net.chrisrichardson.foodToGo.ui.domain.servlets.InitializeDatabaseServlet.java

public void init(ServletConfig sc) throws ServletException {
    super.init(sc);
    HibernateTransactionManager tm = (HibernateTransactionManager) getBean("myTransactionManager",
            HibernateTransactionManager.class);
    TransactionTemplate tt = new TransactionTemplate(tm);
    tt.execute(new TransactionCallback() {

        public Object doInTransaction(TransactionStatus status) {
            HibernateTemplate hibernateTemplate = (HibernateTemplate) getBean("HibernateTemplate",
                    HibernateTemplate.class);
            hibernateTemplate.save(RestaurantMother.makeRestaurant());
            return null;
        }/*from w w  w  . j av a2 s. c  o m*/
    });
}

From source file:org.ensembl.gti.seqstore.database.HybridEnaCramSeqStore.java

@Override
public void storeGenomeSequence(long sessionId, GenomeSequence genomeSequence) {
    log.info("Storing genome sequence  " + genomeSequence.getStableId());
    transactionTemplate.execute(new TransactionCallback<Void>() {
        @Override//from  ww w . j a v  a2 s .c  o m
        public Void doInTransaction(TransactionStatus status) {
            String chk = storeSequenceEna(sessionId, genomeSequence.getSequence());
            template.update(STORE_GENOME_SEQUENCE_SQL, genomeSequence.getGenomeId(),
                    genomeSequence.getStableId(), chk, sessionId);
            return null;
        }
    });
}

From source file:app.core.TransactionNegativeTest.java

@Test
public void testRollbackOnException() {
    session = Db.getSession();//  w  w  w .  j  ava 2s.  c om
    final TransactionStatus transactionStatus = getCurrentTransactionStatus();
    //        Assert.assertFalse(getCurrentTransaction().isActive());
    new TransactionCallback<Object>() {
        @Override
        public Object doInTransaction(TransactionStatus transactionStatus) {
            try {
                //                    Assert.assertTrue(getCurrentTransaction().isActive());
                session.save(new User("caca", "prout"));
                //                    Assert.assertTrue(getCurrentTransaction().isActive());
                throw new RuntimeException("thrown on purpose. we want to check we get a rollback");
            } finally {
                //                    Assert.assertTrue(getCurrentTransaction().isActive());
                //                    Assert.assertTrue(getCurrentTransaction().wasRolledBack());
                return null;
            }
        }
    }.doInTransaction(transactionStatus);
    //getCurrentTransaction().commit();
    Assert.assertFalse(getCurrentTransaction().isActive());
    //        Assert.assertFalse(getCurrentTransaction().wasCommitted());
    //        Assert.assertTrue(getCurrentTransaction().wasRolledBack());
}

From source file:org.activiti.spring.SpringTransactionInterceptor.java

@SuppressWarnings("unchecked")
public <T> T execute(final Command<T> command) {
    TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
    transactionTemplate.setPropagationBehavior(transactionPropagation);
    T result = (T) transactionTemplate.execute(new TransactionCallback() {
        public Object doInTransaction(TransactionStatus status) {
            return next.execute(command);
        }//w w w.  j a va 2 s  .  c  o  m
    });
    return result;
}

From source file:org.bitbucket.fbascheper.tutorial.envers.EnversIllustrationTest.java

@Test
public void testOne() {

    // create a couple of events
    final Event event1 = getTransactionTemplate().execute(new TransactionCallback<Event>() {
        @Override/*  w ww.  j  a v  a  2s. c  o  m*/
        public Event doInTransaction(TransactionStatus status) {
            // revision 1
            Event event = new Event("Our very first event!", new Date());
            getEntityManager().persist(event);
            return event;

        }
    });
    final Event event2 = getTransactionTemplate().execute(new TransactionCallback<Event>() {
        @Override
        public Event doInTransaction(TransactionStatus status) {
            // revision 2
            Event event = new Event("A follow up event", new Date());
            getEntityManager().persist(event);
            return event;

        }
    });

    // now lets pull events from the database and list them

    List<Event> result = getTransactionTemplate().execute(new TransactionCallback<List<Event>>() {
        @Override
        public List<Event> doInTransaction(TransactionStatus status) {
            List<Event> result = getEntityManager().createQuery("select evt from Event evt", Event.class)
                    .getResultList();
            for (Event event : result) {
                System.out.println("Event (" + event.getDate() + ") : " + event.getTitle());
            }

            return result;
        }
    });

    // verify that id's were generated
    final Long event1Id = event1.getId();
    final Long event2Id = event2.getId();

    assertThat(event1Id, notNullValue());
    assertThat(event2Id, notNullValue());

    // so far the code is the same as we have seen in previous tutorials.  Now lets leverage Envers...
    // first lets create some revisions
    getTransactionTemplate().execute(new TransactionCallbackWithoutResult() {
        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {
            // revision 3
            Event myEvent = getEntityManager().find(Event.class, event2Id);
            myEvent.setDate(new Date());
            myEvent.setTitle(myEvent.getTitle() + " (rescheduled)");

        }
    });

    // and then use an AuditReader to look back through history
    getTransactionTemplate().execute(new TransactionCallbackWithoutResult() {
        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {

            Event myEvent = getEntityManager().find(Event.class, event2Id);
            assertThat("A follow up event (rescheduled)", is(myEvent.getTitle()));

            AuditReader reader = AuditReaderFactory.get(getEntityManager());

            List<? extends Number> event2Revisions = reader.getRevisions(Event.class, event2Id);
            assertThat(event2Revisions.size(), is(2));

            long event2Revision1 = event2Revisions.get(0).longValue();
            long event2Revision2 = event2Revisions.get(1).longValue();

            assertThat(event2Revision1, is(2L));
            assertThat(event2Revision2, is(3L));

            Event firstRevision = reader.find(Event.class, event2Id, event2Revision1);

            assertThat(firstRevision, notNullValue());
            assertThat(firstRevision.getTitle(), notNullValue());
            assertThat(firstRevision.getTitle(), not(is(myEvent.getTitle())));
            assertThat(firstRevision.getDate(), not(is(myEvent.getDate())));

            Event secondRevision = reader.find(Event.class, event2Id, event2Revision2);
            assertThat(secondRevision, notNullValue());
            assertThat(secondRevision.getTitle(), notNullValue());
            assertThat(secondRevision.getTitle(), is(myEvent.getTitle()));
            assertThat(secondRevision.getDate(), is(myEvent.getDate()));

        }

    });

}

From source file:com.samtech.hibernate3.impl.AbstractEntityService.java

@SuppressWarnings("unchecked")
protected <T> T merge(final T entity) {
    return (T) transactionTemplate.execute(new TransactionCallback() {
        public Object doInTransaction(TransactionStatus status) {
            T merged = jpaTemplate.merge(entity);
            jpaTemplate.flush();//from w  w w .j  a v  a  2  s  .co m
            return merged;
        }
    });
}