List of usage examples for org.springframework.transaction.support TransactionCallback TransactionCallback
TransactionCallback
From source file:org.ms123.common.workflow.TaskScriptExecutor.java
public void execute(String namespace, String processDefinitionKey, String pid, String script, final Map addVars, VariableScope variableScope, String hint, DataLayer dataLayer, WorkflowService ws) { if (script == null) { return;//w w w . j a v a 2 s . com } final TaskContext tc = new TaskContext(); tc.setCategory(namespace); tc.setProcessDefinitionKey(processDefinitionKey); tc.setHint(hint); tc.setPid(pid); tc.setScript(script); tc.setExecution(variableScope); m_dataLayer = dataLayer; m_workflowService = ws; if (m_ownTransaction) { TransactionTemplate tt = getTransactionService().getTransactionTemplate(true); tt.execute(new TransactionCallback<Object>() { public Object doInTransaction(TransactionStatus paramTransactionStatus) { _execute(tc, addVars); return null; } }); } else { _execute(tc, addVars); } }
From source file:org.obiba.opal.core.service.ProjectsServiceImpl.java
/** * Create DatasourceFactory and add it to MagmaEngine * * @param project//from w w w .j av a2 s . c o m * @return */ @NotNull private DatasourceFactory registerDatasource(@NotNull final Project project) { return transactionTemplate.execute(new TransactionCallback<DatasourceFactory>() { @Override public DatasourceFactory doInTransaction(TransactionStatus status) { DatasourceFactory dataSourceFactory = null; if (project.hasDatabase()) { Database database = databaseRegistry.getDatabase(project.getDatabase()); dataSourceFactory = databaseRegistry.createDataSourceFactory(project.getName(), database); } else { dataSourceFactory = new NullDatasourceFactory(); dataSourceFactory.setName(project.getName()); } MagmaEngine.get().addDatasource(dataSourceFactory); return dataSourceFactory; } }); }
From source file:org.ohdsi.webapi.cohortdefinition.GenerateCohortTasklet.java
@Override public RepeatStatus execute(final StepContribution contribution, final ChunkContext chunkContext) throws Exception { Date startTime = Calendar.getInstance().getTime(); DefaultTransactionDefinition initTx = new DefaultTransactionDefinition(); initTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); TransactionStatus initStatus = this.transactionTemplate.getTransactionManager().getTransaction(initTx); CohortDefinition df = this.cohortDefinitionRepository.findOne(this.task.getCohortDefinition().getId()); CohortGenerationInfo info = df.getGenerationInfo(); if (info == null) { info = new CohortGenerationInfo().setCohortDefinition(df); df.setGenerationInfo(info);//from www.j av a 2 s .com } info.setIsValid(false); info.setStartTime(startTime); info.setStatus(GenerationStatus.RUNNING); df = this.cohortDefinitionRepository.save(df); this.transactionTemplate.getTransactionManager().commit(initStatus); info = df.getGenerationInfo(); try { final int[] ret = this.transactionTemplate.execute(new TransactionCallback<int[]>() { @Override public int[] doInTransaction(final TransactionStatus status) { return doTask(); } }); log.debug("Update count: " + ret.length); info.setIsValid(true); } catch (final TransactionException e) { info.setIsValid(false); log.error(e.getMessage(), e); throw e;//FAIL job status } finally { DefaultTransactionDefinition completeTx = new DefaultTransactionDefinition(); completeTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); TransactionStatus completeStatus = this.transactionTemplate.getTransactionManager() .getTransaction(completeTx); Date endTime = Calendar.getInstance().getTime(); info.setExecutionDuration(new Integer((int) (endTime.getTime() - startTime.getTime()))); info.setStatus(GenerationStatus.COMPLETE); this.cohortDefinitionRepository.save(df); this.transactionTemplate.getTransactionManager().commit(completeStatus); } return RepeatStatus.FINISHED; }
From source file:org.ohdsi.webapi.ircalc.PerformAnalysisTasklet.java
@Override public RepeatStatus execute(final StepContribution contribution, final ChunkContext chunkContext) throws Exception { Date startTime = Calendar.getInstance().getTime(); Map<String, Object> jobParams = chunkContext.getStepContext().getJobParameters(); Integer analysisId = Integer.valueOf(jobParams.get("analysis_id").toString()); Integer sourceId = Integer.valueOf(jobParams.get("source_id").toString()); boolean isValid = false; String statusMessage = "OK"; DefaultTransactionDefinition requresNewTx = new DefaultTransactionDefinition(); requresNewTx.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); TransactionStatus initStatus = this.transactionTemplate.getTransactionManager() .getTransaction(requresNewTx); IncidenceRateAnalysis analysis = this.incidenceRateAnalysisRepository.findOne(analysisId); ExecutionInfo analysisInfo = findExecutionInfoBySourceId(analysis.getExecutionInfoList(), sourceId); analysisInfo.setIsValid(false);/* w ww . ja v a2s. co m*/ analysisInfo.setStartTime(startTime); analysisInfo.setStatus(GenerationStatus.RUNNING); this.incidenceRateAnalysisRepository.save(analysis); this.transactionTemplate.getTransactionManager().commit(initStatus); try { final int[] ret = this.transactionTemplate.execute(new TransactionCallback<int[]>() { @Override public int[] doInTransaction(final TransactionStatus status) { return doTask(chunkContext); } }); log.debug("Update count: " + ret.length); isValid = true; } catch (final Exception e) { isValid = false; statusMessage = e.getMessage(); log.error(e.getMessage(), e); throw e;//FAIL job status } finally { TransactionStatus completeStatus = this.transactionTemplate.getTransactionManager() .getTransaction(requresNewTx); Date endTime = Calendar.getInstance().getTime(); analysis = this.incidenceRateAnalysisRepository.findOne(analysisId); analysisInfo = findExecutionInfoBySourceId(analysis.getExecutionInfoList(), sourceId); analysisInfo.setIsValid(isValid); analysisInfo.setExecutionDuration((int) (endTime.getTime() - startTime.getTime())); analysisInfo.setStatus(GenerationStatus.COMPLETE); analysisInfo .setMessage(statusMessage.substring(0, Math.min(MAX_MESSAGE_LENGTH, statusMessage.length()))); this.incidenceRateAnalysisRepository.save(analysis); this.transactionTemplate.getTransactionManager().commit(completeStatus); } return RepeatStatus.FINISHED; }
From source file:org.openiam.provision.service.DefaultProvisioningService.java
private ProvisionUserResponse addUser(final ProvisionUser pUser, final IdmAuditLog auditLog) { final List<ProvisionDataContainer> dataList = new LinkedList<ProvisionDataContainer>(); ProvisionUserResponse res = new ProvisionUserResponse(); res.setStatus(ResponseStatus.FAILURE); try {// ww w. j a va2 s . c om final TransactionTemplate transactionTemplate = new TransactionTemplate(platformTransactionManager); transactionTemplate.setPropagationBehavior(TransactionTemplate.PROPAGATION_REQUIRED); res = transactionTemplate.execute(new TransactionCallback<ProvisionUserResponse>() { @Override public ProvisionUserResponse doInTransaction(TransactionStatus status) { IdmAuditLog idmAuditLog = new IdmAuditLog(); idmAuditLog.setRequestorUserId(pUser.getRequestorUserId()); idmAuditLog.setRequestorPrincipal(pUser.getRequestorLogin()); idmAuditLog.setAction(AuditAction.CREATE_USER.value()); idmAuditLog.setAuditDescription("Provisioning add user: " + pUser.getId() + " with first/last name: " + pUser.getFirstName() + "/" + pUser.getLastName()); if (auditLog != null) { auditLog.addChild(idmAuditLog); idmAuditLog.addParent(auditLog); idmAuditLog = auditLogService.save(idmAuditLog); } idmAuditLog = auditLogService.save(idmAuditLog); ProvisionUserResponse tmpRes = addModifyUser(pUser, true, dataList, idmAuditLog); idmAuditLog = auditLogService.save(idmAuditLog); return tmpRes; } }); if (res.isSuccess()) { provQueueService.enqueue(dataList); } } catch (Throwable t) { log.error("Can't add user", t); } return res; }
From source file:org.openiam.provision.service.DefaultProvisioningService.java
private ProvisionUserResponse modifyUser(final ProvisionUser pUser, final IdmAuditLog auditLog) { final List<ProvisionDataContainer> dataList = new LinkedList<ProvisionDataContainer>(); TransactionTemplate transactionTemplate = new TransactionTemplate(platformTransactionManager); ProvisionUserResponse res = new ProvisionUserResponse(); res.setStatus(ResponseStatus.SUCCESS); try {//from w w w . j a v a 2s .c om res = transactionTemplate.execute(new TransactionCallback<ProvisionUserResponse>() { @Override public ProvisionUserResponse doInTransaction(TransactionStatus status) { IdmAuditLog idmAuditLog = new IdmAuditLog(); idmAuditLog.setRequestorUserId(pUser.getRequestorUserId()); idmAuditLog.setRequestorPrincipal(pUser.getRequestorLogin()); idmAuditLog.setAction(AuditAction.MODIFY_USER.value()); LoginEntity loginEntity = loginManager.getByUserIdManagedSys(pUser.getId(), sysConfiguration.getDefaultManagedSysId()); idmAuditLog.setTargetUser(pUser.getId(), loginEntity.getLogin()); idmAuditLog.setAuditDescription("Provisioning modify user: " + pUser.getId() + " with primary identity: " + loginEntity); if (auditLog != null) { auditLog.addChild(idmAuditLog); idmAuditLog.addParent(auditLog); auditLogService.save(auditLog); } idmAuditLog = auditLogService.save(idmAuditLog); ProvisionUserResponse tmpRes = addModifyUser(pUser, false, dataList, idmAuditLog); idmAuditLog = auditLogService.save(idmAuditLog); return tmpRes; } }); if (res.isSuccess()) { provQueueService.enqueue(dataList); } } catch (Throwable t) { t.printStackTrace(); } return res; }
From source file:org.openkoala.koala.monitor.extend.BaseSchedulerBean.java
/** * ??<br>/*ww w . j a v a 2 s.co m*/ * generate by: vakin jiang * at 2012-2-13 * @param runing */ @Transactional protected void updateExecutable(final boolean runing) { transactionTemplate.execute(new TransactionCallback<Object>() { @Override public Object doInTransaction(TransactionStatus status) { String hql = ""; Object[] params = null; if (runing) { hql = "update SchedulerConfg set running = ?,lastBeginRunTime = ? where triggerName = ?"; params = new Object[] { true, new Date(), triggerName }; } else { hql = "update SchedulerConfg set running = ? where triggerName = ?"; params = new Object[] { false, triggerName }; } repository.createJpqlQuery(hql).setParameters(Arrays.asList(params)).executeUpdate(); return null; } }); }
From source file:org.openkoala.koala.monitor.extend.BaseSchedulerBean.java
public void onStart() { if (StringUtils.isBlank(triggerName)) return;/*w w w . j a va 2 s . co m*/ transactionTemplate.execute(new TransactionCallback<Object>() { @Override public Object doInTransaction(TransactionStatus status) { SchedulerConfg scheduler = getRepository().get(SchedulerConfg.class, triggerName); if (scheduler == null) { scheduler = new SchedulerConfg(triggerName, schedulerName, cronExpression); } scheduler.setRunning(false); getRepository().save(scheduler); return null; } }); logger.info("?" + schedulerName + "[{}]OK", triggerName); }
From source file:org.opennms.netmgt.dao.NodeDaoIT.java
public OnmsNode getNodeHierarchy(final int nodeId) { return m_transTemplate.execute(new TransactionCallback<OnmsNode>() { @Override//from w ww .j av a 2 s. com public OnmsNode doInTransaction(TransactionStatus status) { return getNodeDao().getHierarchy(nodeId); } }); }
From source file:org.opennms.netmgt.poller.MonitorTester.java
public static void main(String[] args) { Options options = new Options(); Option oI = new Option("i", "ipaddress", true, "IP Address to test [required]"); oI.setRequired(true);/* w ww . j a v a 2 s . c om*/ options.addOption(oI); Option oS = new Option("s", "service", true, "Service name [required]"); oS.setRequired(true); options.addOption(oS); options.addOption("P", "package", true, "Poller Package"); options.addOption("p", "param", true, "Service parameter ~ key=value"); options.addOption("c", "class", true, "Monitor Class"); CommandLineParser parser = new PosixParser(); CommandLine cmd = null; try { cmd = parser.parse(options, args); } catch (ParseException e) { new HelpFormatter().printHelp(80, CMD_SYNTAX, String.format("ERROR: %s%n", e.getMessage()), options, null); System.exit(1); } initialize(); final String packageName = cmd.getOptionValue('P'); final String monitorClass = cmd.getOptionValue('c'); final String ipAddress = cmd.getOptionValue('i'); final String serviceName = cmd.getOptionValue('s'); Map<String, Object> parameters = new HashMap<String, Object>(); if (cmd.hasOption('p')) { for (String parm : cmd.getOptionValues('p')) { String[] data = parm.split("="); if (data.length == 2 && data[0] != null && data[1] != null) { parameters.put(data[0], data[1]); } } } final InetAddress addr = InetAddressUtils.addr(ipAddress); if (addr == null) { throw new IllegalStateException("Error getting InetAddress object for " + ipAddress); } final IpInterfaceDao dao = BeanUtils.getBean("daoContext", "ipInterfaceDao", IpInterfaceDao.class); final TransactionTemplate tt = BeanUtils.getBean("daoContext", "transactionTemplate", TransactionTemplate.class); MonitoredService monSvc = tt.execute(new TransactionCallback<MonitoredService>() { @Override public MonitoredService doInTransaction(TransactionStatus status) { final List<OnmsIpInterface> ips = dao.findByIpAddress(ipAddress); if (ips == null || ips.size() == 0) { System.err.printf("Error: Can't find the IP address %s on the database\n", ipAddress); return null; } if (ips.size() > 1) { System.out.printf( "Warning: there are several IP interface objects associated with the IP address %s (picking the first one)\n", ipAddress); } OnmsNode n = ips.get(0).getNode(); return new SimpleMonitoredService(addr, n.getId(), n.getLabel(), serviceName); } }); if (monSvc == null) { System.exit(1); } try { PollerConfigFactory.init(); } catch (Exception e) { System.err.printf("Error: Can't initialize poller-configuration.xml. %s%n", e.getMessage()); System.exit(1); } PollerConfig config = PollerConfigFactory.getInstance(); System.out.printf("Checking service %s on IP %s%n", serviceName, ipAddress); org.opennms.netmgt.config.poller.Package pkg = packageName == null ? config.getFirstLocalPackageMatch(ipAddress) : config.getPackage(packageName); if (pkg == null) { System.err.printf("Error: Package %s doesn't exist%n", packageName); System.exit(1); } System.out.printf("Package: %s%n", pkg.getName()); Service svc = config.getServiceInPackage(serviceName, pkg); if (svc == null) { System.err.printf("Error: Service %s not defined on package %s%n", serviceName, packageName); System.exit(1); } ServiceMonitor monitor = null; if (monitorClass == null) { monitor = config.getServiceMonitor(serviceName); if (monitor == null) { System.err.printf("Error: Service %s doesn't have a monitor class defined%n", serviceName); System.exit(1); } } else { try { final Class<? extends ServiceMonitor> mc = Class.forName(monitorClass) .asSubclass(ServiceMonitor.class); monitor = mc.newInstance(); } catch (Exception e) { System.err.printf("Error: Can't instantiate %s because %s%n", monitorClass, e.getMessage()); System.exit(1); } } System.out.printf("Monitor: %s%n", monitor.getClass().getName()); if (config.isPolledLocally(ipAddress, serviceName)) { for (Parameter p : svc.getParameters()) { if (!parameters.containsKey(p.getKey())) { String value = p.getValue(); if (value == null) { try { value = JaxbUtils.marshal(p.getAnyObject()); } catch (Exception e) { } } parameters.put(p.getKey(), value); } } for (Entry<String, Object> e : parameters.entrySet()) { System.out.printf("Parameter %s : %s%n", e.getKey(), e.getValue()); } try { PollStatus status = monitor.poll(monSvc, parameters); System.out.printf("Available ? %s (status %s[%s])%n", status.isAvailable(), status.getStatusName(), status.getStatusCode()); if (status.isAvailable()) { System.out.printf("Response time: %s%n", status.getResponseTime()); } else { if (status.getReason() != null) { System.out.printf("Reason: %s%n", status.getReason()); } } } catch (Exception e) { System.err.println("Error: Can't execute the monitor. " + e.getMessage()); System.exit(1); } } else { System.err.printf("Error: Polling is not enabled for service %s using IP %s%n", serviceName, ipAddress); } System.exit(0); }