com.lm.lic.manager.controller.BlackBerryWithdrawLicHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.lm.lic.manager.controller.BlackBerryWithdrawLicHandler.java

Source

/**
 * $Id$
 */
package com.lm.lic.manager.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;

import com.lm.lic.manager.form.WithdrawLicForm;
import com.lm.lic.manager.hibernate.License;
import com.lm.lic.manager.hibernate.LicenseBlock;
import com.lm.lic.manager.hibernate.LicensePaymentStatus;
import com.lm.lic.manager.hibernate.Product;
import com.lm.lic.manager.hibernate.RequestForLicense;

/**
 * @author Ibrahim Mustafa
 */
public class BlackBerryWithdrawLicHandler extends AbstractWithdrawLicController implements WithdrawLicHandler {

    private static final int NUM_BLACKBERRY_REQUESTED_LICENSES = 1;

    private final Logger logger = Logger.getLogger(BlackBerryWithdrawLicHandler.class);

    /**
     * @see com.lm.lic.manager.controller.WithdrawLicHandler#handleWithdrawal(javax.servlet.http.HttpServletRequest,
     *      com.lm.lic.manager.form.WithdrawLicForm)
     */
    @SuppressWarnings("deprecation")
    @Override
    public ModelAndView handleWithdrawal(HttpServletRequest request, HttpServletResponse response,
            WithdrawLicForm wlf) {

        logger.info("Start BlackBerry Handling of License Withdrawal Request");

        Product product = null;
        String name = wlf.getProduct();
        String version = wlf.getVersion();
        String isvId = wlf.getIsvId();

        Long storeId = lmxContext.findStoreId(ParticipantStoresAtLicmax.BlackBerryAppWorld, request);

        if (StringUtils.isNotEmpty(isvId))
            product = productService.findProductByNameAndVersion(isvId, name, version);
        else
            product = productService.findQuickyProductByNameAndVersion(name, version, storeId);

        if (product == null) {
            if (StringUtils.isNotEmpty(isvId))
                product = productService.findProductByName(isvId, name);
            else
                product = productService.findProductByName(name);
        }

        if (product != null)
            logger.info("BlackBerry License Withdrawal for product: " + product.getName() + " "
                    + product.getVersion() + " ISV: " + product.getIsv().getName());

        RequestForLicense prevRfl = findExistingLicWithdrawalRecord(product, wlf, request);
        boolean exceeds = exceedsMaxAllowedTrialLicsPerProduc(product, prevRfl);
        logger.info("BB EXCEEDS for Product " + product.getName() + " : " + exceeds);

        String prodId = product.getId() + EMPTY;
        isvId = product.getIsv().getId() + EMPTY;

        LicenseBlock licenseBlock = licenseBlockService.findByIsvIdProdId(isvId, prodId);
        Integer numOverdraft = 0;
        Integer numLics = NUM_BLACKBERRY_REQUESTED_LICENSES;
        String localeLang = extractLocaleLang(request);
        if (licenseBlock == null) {
            numOverdraft = NUM_BLACKBERRY_REQUESTED_LICENSES;
            licenseAvailabilityAdvisor.generateLicenses(wlf.getPIN(), localeLang, product, numLics, numOverdraft,
                    LicensePaymentStatus.OVERDRAFT);
            licenseBlock = licenseBlockService.findByIsvIdProdId(isvId, prodId);
        }

        List<License> licenses = findDecentLicenses(wlf.getLicKey(), numLics, product, wlf.getDeviceId());
        if (licenses == null || licenses.size() < numLics) {
            numOverdraft = NUM_BLACKBERRY_REQUESTED_LICENSES;

            logger.info("Found 0 " + " Lics to withdraw for BlackBerryAppWorld - Going OVERDRAFT");

            licenseAvailabilityAdvisor.generateLicenses(wlf.getPIN(), localeLang, product, numLics, numOverdraft,
                    LicensePaymentStatus.OVERDRAFT);
            licenses = findDecentLicenses(wlf.getLicKey(), numLics, product, wlf.getDeviceId());
        }

        RequestForLicense currRfl = findRequestForLicenseTrace(request, wlf);

        if (licenses != null && licenses.size() > 0) {
            adjustDrawnLicenses(wlf, licenses, prevRfl, currRfl);
            licenseService.update(licenses);

            adjustLicenseBlock(licenseBlock, numLics, numOverdraft);
            licenseBlockService.update(licenseBlock);
            logger.info("Found " + licenses.size() + " Lics for BlackBerryAppWorld");
            for (License l : licenses)
                logger.info("Generated license for BlackBerry request: " + l.getLicKey() + " for product: "
                        + l.getProduct().getName() + " " + l.getProduct().getVersion());
        }

        if (currRfl != null)
            adjustRequestForLicenseTransaction(product, currRfl, prevRfl, licenses, numOverdraft);

        String successView = getSuccessView();
        ModelAndView modelAndView = new ModelAndView(successView);
        modelAndView.addObject("isvId", isvId);
        modelAndView.addObject("prodId", prodId);
        modelAndView.addObject("licenses", licenses);
        modelAndView.addObject("rfl", currRfl);
        modelAndView.addObject("product", product);
        return modelAndView;
    }
}