Example usage for org.springframework.transaction.annotation Propagation REQUIRES_NEW

List of usage examples for org.springframework.transaction.annotation Propagation REQUIRES_NEW

Introduction

In this page you can find the example usage for org.springframework.transaction.annotation Propagation REQUIRES_NEW.

Prototype

Propagation REQUIRES_NEW

To view the source code for org.springframework.transaction.annotation Propagation REQUIRES_NEW.

Click Source Link

Document

Create a new transaction, and suspend the current transaction if one exists.

Usage

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()));
}