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.formkiq.web.AbstractIntegrationTest.java

/**
 * Save Client.//from w  w w.  ja v a  2  s.co  m
 * @param clientid {@link String}
 * @param clientsecret {@link String}
 * @return {@link String}
 */
protected String saveClient(final String clientid, final String clientsecret) {

    TransactionTemplate transactionTemplate = new TransactionTemplate(this.getPlatformTransactionManager());
    return (String) transactionTemplate.execute(new TransactionCallback<Object>() {
        @Override
        public Object doInTransaction(final TransactionStatus arg0) {

            List<OAuthGrantTypes> grantTypes = Arrays.asList(OAuthGrantTypes.AUTHORIZATION_CODE,
                    OAuthGrantTypes.PASSWORD, OAuthGrantTypes.REFRESH_TOKEN);

            AbstractIntegrationTest.this.oauthservice.save(clientid, clientid, clientsecret, grantTypes, false);
            return null;
        }
    });
}

From source file:dao.SearchDAO.java

public static ObjectNode getPagedFlowByKeyword(String category, String keyword, int page, int size) {
    final List<FlowJob> pagedFlows = new ArrayList<FlowJob>();
    final JdbcTemplate jdbcTemplate = getJdbcTemplate();
    javax.sql.DataSource ds = jdbcTemplate.getDataSource();
    DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);

    TransactionTemplate txTemplate = new TransactionTemplate(tm);

    ObjectNode result;/*  w  ww  .  j av  a2 s  . c o  m*/
    result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
        public ObjectNode doInTransaction(TransactionStatus status) {
            String query = SEARCH_FLOW_WITH_PAGINATION.replace("$keyword", keyword);
            List<Map<String, Object>> rows = null;

            rows = jdbcTemplate.queryForList(query, (page - 1) * size, size);
            for (Map row : rows) {

                FlowJob flow = new FlowJob();
                flow.flowId = (Long) row.get(FlowRowMapper.FLOW_ID_COLUMN);
                flow.flowName = (String) row.get(FlowRowMapper.FLOW_NAME_COLUMN);
                flow.flowPath = (String) row.get(FlowRowMapper.FLOW_PATH_COLUMN);
                flow.flowGroup = (String) row.get(FlowRowMapper.FLOW_GROUP_COLUMN);
                flow.appCode = (String) row.get(FlowRowMapper.APP_CODE_COLUMN);
                flow.appId = (Integer) row.get(FlowRowMapper.APP_ID_COLUMN);
                flow.displayName = flow.flowName;
                flow.link = "#/flows/name/" + flow.appCode + "/" + Long.toString(flow.flowId) + "/page/1?urn="
                        + flow.flowGroup;
                flow.path = flow.appCode + "/" + flow.flowPath;
                pagedFlows.add(flow);
            }
            long count = 0;
            try {
                count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
            } catch (EmptyResultDataAccessException e) {
                Logger.error("Exception = " + e.getMessage());
            }

            ObjectNode resultNode = Json.newObject();
            resultNode.put("count", count);
            resultNode.put("isFlowJob", true);
            resultNode.put("page", page);
            resultNode.put("category", category);
            resultNode.put("itemsPerPage", size);
            resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
            resultNode.set("data", Json.toJson(pagedFlows));

            return resultNode;
        }
    });

    return result;
}

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

/**
 * Tests the fix for OBF-190.//from   w w  w .  j  ava 2  s  .c  o m
 */
@Test
public void testOBF190() {
    // Create 2 acts with the following relationship:
    // act1 -- (parent/child) --> act2
    final Act act1 = createSimpleAct("act1", "IN_PROGRESS");
    final Act act2 = createSimpleAct("act2", "IN_PROGRESS");

    String name = "act1->act2";
    final ActRelationship rel = addRelationship(act1, act2, name, true);
    save(Arrays.asList(act1, act2));

    final String newName = "act1->act2 changed";

    template.execute(new TransactionCallback<Object>() {
        public Object doInTransaction(TransactionStatus status) {
            // reload act2 and verify it contains the relationship
            Act reloaded = reload(act2);
            assertTrue(reloaded.getTargetActRelationships().contains(rel));

            // update the relationship and save act1
            rel.setName(newName);
            save(act1);
            return null;
        }
    });

    // reload act1 and verify it contains the relationship
    Act reloaded = reload(act1);
    assertNotNull(reloaded);
    Set<ActRelationship> relationships = reloaded.getSourceActRelationships();
    assertEquals(1, relationships.size());
    ActRelationship reloadedRel = relationships.toArray(new ActRelationship[relationships.size()])[0];

    // verify the relationship was updated
    assertEquals(reloadedRel, rel);
    assertEquals(reloadedRel.getVersion(), rel.getVersion());
    assertEquals(newName, reloadedRel.getName());

    // verify the acts can be saved again
    save(act1);
    save(act2);
}

From source file:com.formkiq.web.AbstractIntegrationTest.java

/**
 * Setup System Transaction.//www  . j  a va 2  s  . c o  m
 * @return {@link TransactionCallback}
 */
private TransactionCallback<Object> setupSystemTransaction() {

    final JSONService js = this.jsonService;
    final SetupInterceptor si = this.setupInterceptor;
    final SystemConfigInterceptor sci = this.systemConfigInterceptor;

    return new TransactionCallback<Object>() {
        @Override
        public Object doInTransaction(final TransactionStatus ts) {

            try {
                FormJSON setupForm = js.loadForm(Setup.class);
                FormJSON systemForm = js.loadForm(SystemConfig.class);

                Setup setup = new Setup();
                setup.setClientname("formkiq");
                setup.setAdminemail(getDefaultEmail());
                setup.setPassword(getDefaultPass());
                si.postSave(setupForm, setup);

                SystemConfig config = new SystemConfig();
                config.setHostname(getDefaultHostAndPort());
                sci.postSave(systemForm, config);

                return Pair.of(setup.getClientname(),
                        findValueByKey(setupForm, "clientsecret").get().getValue());
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    };
}

From source file:dao.SearchDAO.java

public static ObjectNode getPagedJobByKeyword(String category, String keyword, int page, int size) {
    final List<FlowJob> pagedFlowJobs = new ArrayList<FlowJob>();
    final JdbcTemplate jdbcTemplate = getJdbcTemplate();
    javax.sql.DataSource ds = jdbcTemplate.getDataSource();
    DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);

    TransactionTemplate txTemplate = new TransactionTemplate(tm);

    ObjectNode result;//  w w  w  . j a v  a2s  . co m
    result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
        public ObjectNode doInTransaction(TransactionStatus status) {
            String query = SEARCH_JOB_WITH_PAGINATION.replace("$keyword", keyword);
            List<Map<String, Object>> rows = null;

            rows = jdbcTemplate.queryForList(query, (page - 1) * size, size);
            for (Map row : rows) {

                FlowJob flowJob = new FlowJob();
                flowJob.flowId = (Long) row.get(FlowRowMapper.FLOW_ID_COLUMN);
                flowJob.jobId = (Long) row.get(FlowRowMapper.JOB_ID_COLUMN);
                flowJob.jobName = (String) row.get(FlowRowMapper.JOB_NAME_COLUMN);
                flowJob.jobPath = (String) row.get(FlowRowMapper.JOB_PATH_COLUMN);
                flowJob.jobType = (String) row.get(FlowRowMapper.JOB_TYPE_COLUMN);
                flowJob.flowName = (String) row.get(FlowRowMapper.FLOW_NAME_COLUMN);
                flowJob.flowPath = (String) row.get(FlowRowMapper.FLOW_PATH_COLUMN);
                flowJob.flowGroup = (String) row.get(FlowRowMapper.FLOW_GROUP_COLUMN);
                flowJob.appCode = (String) row.get(FlowRowMapper.APP_CODE_COLUMN);
                flowJob.appId = (Integer) row.get(FlowRowMapper.APP_ID_COLUMN);
                flowJob.displayName = flowJob.jobName;
                flowJob.link = "#/flows/name/" + flowJob.appCode + "/" + Long.toString(flowJob.flowId)
                        + "/page/1?urn=" + flowJob.flowGroup;
                flowJob.path = flowJob.appCode + "/" + flowJob.jobPath;

                pagedFlowJobs.add(flowJob);
            }
            long count = 0;
            try {
                count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
            } catch (EmptyResultDataAccessException e) {
                Logger.error("Exception = " + e.getMessage());
            }

            ObjectNode resultNode = Json.newObject();
            resultNode.put("count", count);
            resultNode.put("isFlowJob", true);
            resultNode.put("page", page);
            resultNode.put("category", category);
            resultNode.put("itemsPerPage", size);
            resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
            resultNode.set("data", Json.toJson(pagedFlowJobs));

            return resultNode;
        }
    });

    return result;
}

From source file:com.formkiq.web.AbstractIntegrationTest.java

/**
 * Resets Database./*from w ww. ja  v a 2 s  .  c  o  m*/
 */
protected void truncateDatabase() {

    TransactionTemplate transactionTemplate = new TransactionTemplate(this.transactionManager);
    transactionTemplate.execute(new TransactionCallback<Object>() {
        @Override
        public Object doInTransaction(final TransactionStatus arg0) {

            EntityManager em = AbstractIntegrationTest.this.entityManager;
            truncateDatabase(em);
            migrateSystemProperties(em);
            return null;
        }
    });
}

From source file:com.formkiq.web.AbstractIntegrationTest.java

/**
 * Resets Database.//www. j  av  a  2  s . com
 * @param tables {@link String}
 */
protected void truncateTables(final String... tables) {

    TransactionTemplate transactionTemplate = new TransactionTemplate(this.transactionManager);
    transactionTemplate.execute(new TransactionCallback<Object>() {
        @Override
        public Object doInTransaction(final TransactionStatus arg0) {

            EntityManager em = AbstractIntegrationTest.this.entityManager;
            truncateTables(em, Arrays.asList(tables));
            return null;
        }
    });
}

From source file:dao.SearchDAO.java

public static ObjectNode getPagedCommentsByKeyword(String category, String keyword, int page, int size) {
    List<Dataset> pagedDatasets = new ArrayList<Dataset>();
    final JdbcTemplate jdbcTemplate = getJdbcTemplate();
    javax.sql.DataSource ds = jdbcTemplate.getDataSource();
    DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);

    TransactionTemplate txTemplate = new TransactionTemplate(tm);

    ObjectNode result;//w  w  w .jav  a 2 s . c o m
    result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
        public ObjectNode doInTransaction(TransactionStatus status) {
            List<Map<String, Object>> rows = null;
            String query = SEARCH_DATASET_BY_COMMENTS_WITH_PAGINATION.replace("$keyword", keyword);
            rows = jdbcTemplate.queryForList(query, (page - 1) * size, size);

            for (Map row : rows) {

                Dataset ds = new Dataset();
                ds.id = (long) row.get(DatasetRowMapper.DATASET_ID_COLUMN);
                ds.name = (String) row.get(DatasetRowMapper.DATASET_NAME_COLUMN);
                ds.source = (String) row.get(DatasetRowMapper.DATASET_SOURCE_COLUMN);
                ds.urn = (String) row.get(DatasetRowMapper.DATASET_URN_COLUMN);
                ds.schema = (String) row.get(DatasetRowMapper.DATASET_SCHEMA_COLUMN);
                pagedDatasets.add(ds);
            }
            long count = 0;
            try {
                count = jdbcTemplate.queryForObject("SELECT FOUND_ROWS()", Long.class);
            } catch (EmptyResultDataAccessException e) {
                Logger.error("Exception = " + e.getMessage());
            }

            ObjectNode resultNode = Json.newObject();
            resultNode.put("count", count);
            resultNode.put("page", page);
            resultNode.put("category", category);
            resultNode.put("itemsPerPage", size);
            resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));
            resultNode.set("data", Json.toJson(pagedDatasets));

            return resultNode;
        }
    });

    return result;
}

From source file:org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate.java

/**
 * Executes an update within a transaction.
 *
 * @param callback the callback to execute
 * @return the result of the callback//w w  w .j ava 2  s.c  o m
 */
private Object update(final HibernateCallback<Object> callback) {
    final HibernateTemplate template = getHibernateTemplate();
    getHibernateTemplate().setExposeNativeSession(true);
    return txnTemplate.execute(new TransactionCallback<Object>() {
        public Object doInTransaction(TransactionStatus status) {
            return template.execute(new HibernateCallback<Object>() {
                public Object doInHibernate(Session session) throws HibernateException {
                    checkWriteOperationAllowed(template, session);
                    return template.execute(callback);
                }
            });
        }
    });
}

From source file:dao.DatasetsDAO.java

public static ObjectNode getPagedDatasetComments(String userName, int id, int page, int size) {
    ObjectNode result = Json.newObject();

    javax.sql.DataSource ds = getJdbcTemplate().getDataSource();
    DataSourceTransactionManager tm = new DataSourceTransactionManager(ds);
    TransactionTemplate txTemplate = new TransactionTemplate(tm);

    result = txTemplate.execute(new TransactionCallback<ObjectNode>() {
        public ObjectNode doInTransaction(TransactionStatus status) {

            List<DatasetComment> pagedComments = getJdbcTemplate().query(GET_COMMENTS_BY_DATASET_ID,
                    new DatasetCommentRowMapper(), id, (page - 1) * size, size);

            long count = 0;
            try {
                count = getJdbcTemplate().queryForObject("SELECT FOUND_ROWS()", Long.class);
            } catch (EmptyResultDataAccessException e) {
                Logger.error("Exception = " + e.getMessage());
            }/*ww w  .  j  av a  2s.  c o m*/

            if (pagedComments != null) {
                for (DatasetComment dc : pagedComments) {
                    if (StringUtils.isNotBlank(userName) && userName.equalsIgnoreCase(dc.authorUserName)) {
                        dc.isAuthor = true;
                    }
                }
            }

            ObjectNode resultNode = Json.newObject();
            resultNode.set("comments", Json.toJson(pagedComments));
            resultNode.put("count", count);
            resultNode.put("page", page);
            resultNode.put("itemsPerPage", size);
            resultNode.put("totalPages", (int) Math.ceil(count / ((double) size)));

            return resultNode;
        }
    });
    return result;
}