List of usage examples for org.springframework.transaction.annotation Propagation REQUIRES_NEW
Propagation REQUIRES_NEW
To view the source code for org.springframework.transaction.annotation Propagation REQUIRES_NEW.
Click Source Link
From source file:org.brekka.pegasus.core.services.impl.AbstractEMailSendingService.java
@Override @Transactional(propagation = Propagation.REQUIRES_NEW) public EMailMessage send(final String recipient, final String sender, final String subject, final String plainBody, final String htmlBody, final KeySafe<?> keySafe) { return send(Arrays.asList(recipient), sender, subject, plainBody, htmlBody, keySafe); }
From source file:es.emergya.bbdd.dao.UsuarioHome.java
@Transactional(readOnly = true, rollbackFor = Throwable.class, propagation = Propagation.REQUIRES_NEW) public Boolean isLastAdmin(String nombre) { org.hibernate.Session currentSession = getSession(); currentSession.clear();/*w ww .j a v a 2s . c o m*/ Criteria criteria = currentSession.createCriteria(Usuario.class).setProjection(Projections.rowCount()) .add(Restrictions.eq("administrador", true)).add(Restrictions.eq("habilitado", true)) .add(Restrictions.ne("nombreUsuario", nombre)).setCacheable(false); Integer count = (Integer) criteria.uniqueResult(); return (count.intValue() == 0); }
From source file:com.inkubator.hrm.service.impl.ApprovalActivityNotSendServiceImpl.java
@Override @Scheduled(cron = "${cron.approval.activity.email.not.send}") @Transactional(readOnly = false, isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) public void sendNotificationApprovalNotSend() throws Exception { List<ApprovalActivity> dataToSend = approvalActivityDao.getDataNotSendEmailYet(); for (ApprovalActivity appActivity : dataToSend) { JsonObject jsonObject = (JsonObject) jsonConverter.getClassFromJson(appActivity.getPendingData(), JsonObject.class); HrmUser approverUser = hrmUserDao.getByUserId(appActivity.getApprovedBy()); HrmUser requesterUser = hrmUserDao.getByUserId(appActivity.getRequestBy()); VelocityTempalteModel vtm = new VelocityTempalteModel(); List<String> toSend = new ArrayList<>(); List<String> toSentCC = new ArrayList<String>(); List<String> toSentBCC = new ArrayList<String>(); vtm.setFrom(ownerEmail);//from ww w . j ava 2s.co m /*if(appActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_WAITING) { //kirim email ke approver nya jika status waiting toSend.add(approverUser.getEmailAddress()); } else { //kirim email ke requester nya jika statusnya sudah di approved/rejected. Dan cc email (if any) toSentCC = getCcEmailAddressesOnApproveOrReject(appActivity); toSend.add(requesterUser.getEmailAddress()); } }*/ toSend.add("deni.arianto24@yahoo.com"); toSentCC.add("amjadicky@gmail.com"); // toSend.add("rizal2_dhfr@yahoo.com"); // toSentCC.add("rizkykojek@gmail.com"); vtm.setTo(toSend.toArray(new String[toSend.size()])); vtm.setCc(toSentCC.toArray(new String[toSentCC.size()])); vtm.setBcc(toSentBCC.toArray(new String[toSentBCC.size()])); Map maptoSend = new HashMap(); if (StringUtils.equals(appActivity.getLocale(), "en")) { vtm.setSubject("Permohonan Perjalanan Dinas"); //not yet implemented } else { if (Objects.equals(appActivity.getApprovalStatus(), HRMConstant.APPROVAL_STATUS_WAITING_APPROVAL)) { switch (appActivity.getApprovalDefinition().getName()) { case HRMConstant.BUSINESS_TRAVEL: double totalAmount = 0; Gson gson = JsonUtil.getHibernateEntityGsonBuilder().create(); // String pendingData = appActivity.getPendingData(); JsonObject businessTravelObj = gson.fromJson(appActivity.getPendingData(), JsonObject.class); List<BusinessTravelComponent> businessTravelComponents = gson.fromJson( businessTravelObj.get("businessTravelComponents"), new TypeToken<List<BusinessTravelComponent>>() { }.getType()); for (BusinessTravelComponent btc : businessTravelComponents) { totalAmount = totalAmount + btc.getPayByAmount(); } vtm.setSubject("Permohonan Perjalanan Dinas"); vtm.setTemplatePath("email_travel_waiting_approval.vm"); maptoSend.put("approverName", approverUser.getEmpData().getBioData().getFullName()); maptoSend.put("requesterName", requesterUser.getEmpData().getBioData().getFullName()); maptoSend.put("nik", requesterUser.getEmpData().getNik()); maptoSend.put("businessTravelNo", jsonObject.get("businessTravelNo").getAsString()); maptoSend.put("proposeDate", jsonObject.get("proposeDate").getAsString()); maptoSend.put("destination", jsonObject.get("destination").getAsString()); maptoSend.put("start", jsonObject.get("startDate").getAsString()); maptoSend.put("end", jsonObject.get("endDate").getAsString()); maptoSend.put("description", jsonObject.get("description").getAsString()); maptoSend.put("totalAmount", new DecimalFormat("###,###").format(totalAmount)); break; case HRMConstant.REIMBURSEMENT: vtm.setSubject("Permohonan Pergantian Biaya"); vtm.setTemplatePath("email_reimbursment_waiting_approval.vm"); maptoSend.put("approverName", approverUser.getEmpData().getBioData().getFullName()); maptoSend.put("requesterName", requesterUser.getEmpData().getBioData().getFullName()); maptoSend.put("nik", requesterUser.getEmpData().getNik()); maptoSend.put("reimbursment_schema", jsonObject.get("reimbursment_schema").getAsString()); maptoSend.put("claim_date", jsonObject.get("claim_date").getAsString()); maptoSend.put("proposeDate", jsonObject.get("proposeDate").getAsString()); maptoSend.put("nominalOrUnit", jsonObject.get("nominalOrUnit").getAsString()); maptoSend.put("reimbursmentNo", jsonObject.get("reimbursmentNo").getAsString()); break; case HRMConstant.LOAN: vtm.setSubject("Permohonan Pinjaman Lunak"); vtm.setTemplatePath("email_loan_waiting_approval.vm"); maptoSend.put("approverName", approverUser.getEmpData().getBioData().getFullName()); maptoSend.put("requesterName", requesterUser.getEmpData().getBioData().getFullName()); maptoSend.put("nik", requesterUser.getEmpData().getNik()); maptoSend.put("proposeDate", jsonObject.get("proposeDate").getAsString()); maptoSend.put("loanSchemaName", jsonObject.get("loanSchemaName").getAsString()); maptoSend.put("nominalPrincipal", jsonObject.get("nominalPrincipal").getAsString()); maptoSend.put("interestRate", jsonObject.get("interestRate").getAsString()); maptoSend.put("nominalInstallment", jsonObject.get("nominalInstallment").getAsString()); maptoSend.put("interestInstallment", jsonObject.get("interestInstallment").getAsString()); maptoSend.put("totalNominalInstallment", jsonObject.get("totalNominalInstallment").getAsString()); break; default: break; } } else if ((appActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_APPROVED) || (appActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_REJECTED)) { //configure email parameter based on approval name switch (appActivity.getApprovalDefinition().getName()) { case HRMConstant.BUSINESS_TRAVEL: double totalAmount = 0; Gson gson = JsonUtil.getHibernateEntityGsonBuilder().create(); // String pendingData = appActivity.getPendingData(); JsonObject businessTravelObj = gson.fromJson(appActivity.getPendingData(), JsonObject.class); List<BusinessTravelComponent> businessTravelComponents = gson.fromJson( businessTravelObj.get("businessTravelComponents"), new TypeToken<List<BusinessTravelComponent>>() { }.getType()); for (BusinessTravelComponent btc : businessTravelComponents) { totalAmount = totalAmount + btc.getPayByAmount(); } vtm.setSubject("Permohonan Perjalanan Dinas"); vtm.setTemplatePath("email_travel_approved_or_rejected_approval.vm"); maptoSend.put("requesterName", requesterUser.getEmpData().getBioData().getFullName()); maptoSend.put("nik", requesterUser.getEmpData().getNik()); maptoSend.put("businessTravelNo", jsonObject.get("businessTravelNo").getAsString()); maptoSend.put("proposeDate", jsonObject.get("proposeDate").getAsString()); maptoSend.put("destination", jsonObject.get("destination").getAsString()); maptoSend.put("start", jsonObject.get("startDate").getAsString()); maptoSend.put("end", jsonObject.get("endDate").getAsString()); maptoSend.put("description", jsonObject.get("description").getAsString()); maptoSend.put("totalAmount", new DecimalFormat("###,###").format(totalAmount)); if (appActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_APPROVED) { maptoSend.put("statusDesc", "Permohonan Diterima"); } else if (appActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_REJECTED) { maptoSend.put("statusDesc", "Permohonan Ditolak"); } break; case HRMConstant.REIMBURSEMENT: vtm.setSubject("Permohonan Pergantian Biaya"); vtm.setTemplatePath("email_reimbursment_approved_or_rejected.vm"); maptoSend.put("requesterName", requesterUser.getEmpData().getBioData().getFullName()); maptoSend.put("nik", requesterUser.getEmpData().getNik()); maptoSend.put("reimbursment_schema", jsonObject.get("reimbursment_schema").getAsString()); maptoSend.put("claim_date", jsonObject.get("claim_date").getAsString()); maptoSend.put("proposeDate", jsonObject.get("proposeDate").getAsString()); maptoSend.put("nominalOrUnit", jsonObject.get("nominalOrUnit").getAsString()); maptoSend.put("reimbursmentNo", jsonObject.get("reimbursmentNo").getAsString()); if (appActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_APPROVED) { maptoSend.put("statusDesc", "Permohonan Diterima"); } else if (appActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_REJECTED) { maptoSend.put("statusDesc", "Permohonan Ditolak"); } break; case HRMConstant.LOAN: vtm.setSubject("Permohonan Pinjaman Lunak"); vtm.setTemplatePath("email_loan_approved_or_rejected_approval.vm"); maptoSend.put("requesterName", requesterUser.getEmpData().getBioData().getFullName()); maptoSend.put("nik", requesterUser.getEmpData().getNik()); maptoSend.put("proposeDate", jsonObject.get("proposeDate").getAsString()); maptoSend.put("loanSchemaName", jsonObject.get("loanSchemaName").getAsString()); maptoSend.put("nominalPrincipal", jsonObject.get("nominalPrincipal").getAsString()); maptoSend.put("interestRate", jsonObject.get("interestRate").getAsString()); maptoSend.put("nominalInstallment", jsonObject.get("nominalInstallment").getAsString()); maptoSend.put("interestInstallment", jsonObject.get("interestInstallment").getAsString()); maptoSend.put("totalNominalInstallment", jsonObject.get("totalNominalInstallment").getAsString()); if (appActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_APPROVED) { maptoSend.put("statusDesc", "Permohonan Diterima"); } else if (appActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_REJECTED) { maptoSend.put("statusDesc", "Permohonan Ditolak"); } break; default: break; } } maptoSend.put("ownerAdministrator", ownerAdministrator); maptoSend.put("ownerCompany", ownerCompany); maptoSend.put("applicationUrl", applicationUrl); maptoSend.put("applicationName", applicationName); velocityTemplateSender.sendMail(vtm, maptoSend); //update approval activity, set notification true if (appActivity.getNotificationSend() == false) { appActivity.setNotificationSend(true); this.approvalActivityDao.update(appActivity); } } } }
From source file:org.brekka.pegasus.core.services.impl.EventServiceImpl.java
@Override @Transactional(propagation = Propagation.REQUIRES_NEW) public FileDownloadEvent beginFileDownloadEvent(final AllocationFile bundleFile) { FileDownloadEvent event = new FileDownloadEvent(); event.setTransferFile(bundleFile);/* ww w . ja v a2 s . co m*/ populate(event); fileDownloadEventDAO.create(event); return event; }
From source file:com.orange.clara.cloud.servicedbdumper.task.job.JobFactory.java
@Transactional(propagation = Propagation.REQUIRES_NEW) public void createJobWithDbDumperServiceInstance(JobType jobType, DbDumperServiceInstance dbDumperServiceInstance) { Job job = new Job(jobType, null, dbDumperServiceInstance); this.jobRepo.save(job); }
From source file:be.peerassistedlearning.repository.StudentRepositoryTest.java
@Test @Transactional(propagation = Propagation.REQUIRES_NEW) public void testGetById() { Student s1 = new Student("David", "paswoord", "davidopdebeeck@hotmail.com", Curriculum.TI, "david", UserType.ADMIN);//w ww .j a v a 2s .c o m repository.save(s1); Student s2 = repository.findOne(s1.getId()); assertNotNull(s2); assertEquals(s1, s2); }
From source file:es.emergya.bbdd.dao.ClienteConectadoHome.java
@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = Throwable.class) public ClienteConectado merge(ClienteConectado detachedInstance) { log.debug("merging ClienteConectado instance"); try {/*from w ww .j av a 2s . c o m*/ ClienteConectado result = (ClienteConectado) getSession().merge(detachedInstance); log.debug("merge successful"); return result; } catch (RuntimeException re) { log.error("merge failed", re); throw re; } }
From source file:edu.harvard.med.screensaver.service.screenresult.ScreenResultLoader.java
/** * Load the screen results from a workbook into the database. * @param workbook /*w ww . ja v a 2s. c o m*/ * @param admin * @param finalPlateNumberRange * @param incrementalFlush force the loader to periodically flush cached ResultValues and other Entities being held by the * Hibernate session. Use this value to limit memory requirements for large datasets. * @throws ParseErrorsException * @throws EntityNotFoundException * @throws EntityExistsException */ @Transactional(propagation = Propagation.REQUIRES_NEW /* to ensure that errors cause rollback */, rollbackFor = { ParseErrorsException.class, EntityNotFoundException.class, EntityExistsException.class }) public ScreenResult parseAndLoad(Screen screen, Workbook workbook, AdministratorUser admin, String comments, IntRange finalPlateNumberRange, boolean incrementalFlush) throws ParseErrorsException { screen = _dao.reloadEntity(screen); ScreenResultParser screenResultParser = createScreenResultParser(); screenResultParser.setIgnoreDuplicateErrors(_ignoreDuplicateErrors); ScreenResult screenResult = screenResultParser.parse(screen, workbook, finalPlateNumberRange, incrementalFlush); if (screenResultParser.getHasErrors()) { // we communicate back any parse errors as a ParseErrorsException, as this // serves to rollback the transaction, preventing persistence of invalid // screen result entity throw new ParseErrorsException(screenResultParser.getErrors()); } if (incrementalFlush) { _dao.flush(); _dao.clear(); screen = _dao.reloadEntity(screen); } admin = _dao.reloadEntity(admin); AdministrativeActivity screenResultDataLoading = screen.getScreenResult().createScreenResultDataLoading( admin, screenResultParser.getPlateNumbersLoadedWithMaxReplicates(), comments); int assayPlatesCreated = Sets.difference(screen.getAssayPlatesDataLoaded(), screen.getAssayPlatesScreened()) .size(); if (assayPlatesCreated > 0) { log.info("created " + assayPlatesCreated + " assay plate(s) that were not previously recorded as having been screened: " + Sets.difference(screen.getAssayPlatesDataLoaded(), screen.getAssayPlatesScreened())); } _dao.persistEntity(screenResultDataLoading); _screenDerivedPropertiesUpdater.updateScreeningStatistics(screen); log.info("Screen result data loading completed successfully!"); return screenResult; }
From source file:com.parakhcomputer.web.dao.PaletteDaoImpl.java
/** * Saves palette. */ @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) public Palette save(Palette palette) { return em.merge(palette); }
From source file:be.peerassistedlearning.repository.ApplicationRepositoryTest.java
@Test @Transactional(propagation = Propagation.REQUIRES_NEW) public void testRemove() { applicationRepository.save(a1);// www . jav a 2 s .c o m applicationRepository.delete(a1); assertNull(applicationRepository.findOne(a1.getId())); }