Java tutorial
/** * $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; } }