Example usage for org.apache.commons.lang.time DateUtils addWeeks

List of usage examples for org.apache.commons.lang.time DateUtils addWeeks

Introduction

In this page you can find the example usage for org.apache.commons.lang.time DateUtils addWeeks.

Prototype

public static Date addWeeks(Date date, int amount) 

Source Link

Document

Adds a number of weeks to a date returning a new object.

Usage

From source file:ume.pareva.veeo.VeeoDR.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods./*  w ww  .  j  a v  a2 s.c  o m*/
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs action   mp_report id   the unique
 * message id number number   the originating telephone number report   the
 * delivery report (e.g. delivered/acked/failed)
 * Status
 *  1: delivery success   Delivered to handset
 *  2: delivery failure   Message failed
 *  4: message buffered   Message in queue
 *  8: smsc submit   Submitted to SMSC
 *  16: smsc reject   Rejected by SMSC
 *  32: (smsc intermediate notifications)   Non-final statuses
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");

    Calendar deliverytime = new GregorianCalendar();
    String serviceId = "6119598063441KDS";
    String defClubDomain = "5510024809921CDS";
    String transactionId = Misc.generateUniqueIntegerId() + "";
    boolean cpaqueue = true;

    Enumeration parameterList = request.getParameterNames();
    while (parameterList.hasMoreElements()) {
        String sName = parameterList.nextElement().toString();
        System.out.println("VeeoDR: callback VeeoDR " + sName + ":" + request.getParameter(sName));
    }
    Map<String, String> callbackMap = mappingUtil.mapRequestToCallback(request);

    String id = callbackMap.get("id");
    String report = callbackMap.get("status"); // This can be DELIVERED, ACKNOWLEDGED, FAILED
    String msisdn = callbackMap.get("msisdn");

    if (id.contains("-")) {
        serviceId = getClubId(id, "-").trim();
        System.out.println("VeeoDR INSIDE - condition SERVICE ID IS " + serviceId);
    }
    MobileClub club = UmeTempCmsCache.mobileClubMap.get(serviceId);
    UmeClubDetails clubdetail = UmeTempCmsCache.umeClubDetailsMap.get(club.getUnique());

    quizsmsdao.updateResponse(id, report, sdf.format(deliverytime.getTime()), report, "");
    umesmsdao.updateResponse(id, report, sdf.format(deliverytime.getTime()), report, "");

    if (report.equals("1")) {
        MobileClubBillingPlan mobileClubBillingPlan = null;
        String successResponse = "00";

        SdcSmsSubmit smsrecord = quizsmsdao.getSmsMsgLog(id);
        if (smsrecord != null && smsrecord.getMsgType().equalsIgnoreCase("premium")) {

            //====================== USER- CLUBUSER - BILLING PLANS =============================== 
            UmeUser user = null;
            SdcMobileClubUser clubUser = null;
            String userUnique = umeuserdao.getUserUnique(msisdn, "msisdn", defClubDomain);
            if (!userUnique.equals("")) {
                user = umeuserdao.getUser(msisdn);
            }

            if (user != null) {
                clubUser = user.getClubMap().get(club.getUnique());

                if (clubUser == null) {
                    clubUser = umemobileclubuserdao.getClubUserByMsisdn(msisdn, club.getUnique());
                }
                if (clubUser != null) {
                    mobileClubBillingPlan = billingplandao.getActiveBillingPlanByMsisdnAndClubUnique(msisdn,
                            club.getUnique());
                    //System.out.println("IEBillingSuccess  BillingPlan is " + mobileClubBillingPlan.toString());
                }
            } //====================== USER- CLUBUSER - BILLING PLANS =============================== 

            boolean cpaLog = false;
            if (smsrecord.getLogUnique().equals(id) && smsrecord.getMsgType().equalsIgnoreCase("premium")) { //Billable 
                //===================================================================

                if (user != null && clubUser != null) {
                    //boolean cpaLog = false;
                    //BillingTry Logging for first success
                    if (DateUtils.isSameDay(new Date(), clubUser.getSubscribed())) {
                        successResponse = "003";
                        cpaLog = true;
                    }

                    String biloggednetwork = mobilenetwork.getMobileNetwork(club.getRegion().toUpperCase(),
                            clubUser.getNetworkCode());
                    MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry();
                    mobileClubBillingTry.setUnique(id);
                    mobileClubBillingTry.setLogUnique(id);
                    mobileClubBillingTry.setAggregator("TXT");
                    mobileClubBillingTry.setClubUnique(club.getUnique());
                    mobileClubBillingTry.setCreated(new Date());
                    mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase());
                    mobileClubBillingTry.setParsedMsisdn(msisdn);
                    mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase());
                    mobileClubBillingTry.setResponseCode(successResponse);
                    mobileClubBillingTry.setResponseDesc("successful");
                    mobileClubBillingTry.setResponseRef(transactionId);
                    mobileClubBillingTry.setStatus("success");
                    mobileClubBillingTry.setTariffClass(club.getPrice());
                    mobileClubBillingTry.setTransactionId(transactionId);
                    mobileClubBillingTry.setCampaign(clubUser.getCampaign());

                    //End BillingTry Logging
                    if (mobileClubBillingPlan != null) {
                        Calendar c = Calendar.getInstance();
                        mobileClubBillingPlan.setLastSuccess(c.getTime());
                        mobileClubBillingPlan.setLastPaid(c.getTime());
                        mobileClubBillingPlan.setPushCount(mobileClubBillingPlan.getPushCount() + 1);
                        //Date nextPush = new Date();

                        if (mobileClubBillingPlan.getLastPush().before(mobileClubBillingPlan.getSubscribed())) {
                            mobileClubBillingPlan.setLastPush(new Date());
                        }

                        if (mobileClubBillingPlan.getServiceDateBillsRemaining() > 0) {
                            mobileClubBillingPlan.setServiceDateBillsRemaining(
                                    mobileClubBillingPlan.getServiceDateBillsRemaining() - 1);
                        }

                        Date nextPush = DateUtils.addDays(mobileClubBillingPlan.getLastPush(), 7);
                        nextPush = DateUtils.setHours(nextPush, 9);
                        nextPush = DateUtils.truncate(nextPush, Calendar.HOUR_OF_DAY);

                        mobileClubBillingPlan.setNextPush(nextPush);
                        mobileClubBillingPlan.setLastSuccess(new Date());

                        if (clubdetail.getBillingType().equalsIgnoreCase("Adhoc")) {
                            Calendar cal = Calendar.getInstance();
                            cal.setTime(new Date());
                            cal.add(Calendar.HOUR, 1);

                            cal.set(Calendar.MINUTE, 0);
                            cal.set(Calendar.SECOND, 0);

                            mobileClubBillingPlan.setNextPush(cal.getTime());
                            if (mobileClubBillingPlan.getServiceDateBillsRemaining() > 0D) {
                                mobileClubBillingPlan.setServiceDateBillsRemaining(
                                        mobileClubBillingPlan.getServiceDateBillsRemaining() - 1);
                            }

                            if ((mobileClubBillingPlan.getPartialsRequired()
                                    - mobileClubBillingPlan.getServiceDateBillsRemaining()) <= 2) {
                                cpaqueue = true;
                            }

                            else {
                                cpaqueue = false;
                            }
                            System.out.println("IEMODR == ADHOC BILLING UPDATE  to "
                                    + mobileClubBillingPlan.getParsedMobile() + " --- "
                                    + mobileClubBillingPlan.getNextPush());

                        } else {
                            /*
                             @Date- 2016-04-05
                             @Author Madan
                             Trying weeks of subscription and their success
                             */
                            //=========== START WEEK Calculation for User Total Bill ====================
                            try {
                                Date subscribedDate = clubUser.getSubscribed();
                                Date today = new Date();
                                DateTime dateTime1 = new DateTime(subscribedDate);
                                DateTime dateTime2 = new DateTime(today);
                                int weeks = Weeks.weeksBetween(dateTime1, dateTime2).getWeeks();

                                int totalSuccess = billingplandao.getTotalSuccessAfterEachSubscription(
                                        clubUser.getParsedMobile(), clubUser.getClubUnique(),
                                        clubUser.getSubscribed());
                                int pendingTickets = 0;
                                int expectedSuccesses = weeks * clubdetail.getFrequency(); //We need to use Frequency here... 
                                if (totalSuccess == expectedSuccesses) { // User is upto-date 
                                    mobileClubBillingPlan
                                            .setServiceDateBillsRemaining(clubdetail.getFrequency() * 1D);
                                    mobileClubBillingPlan.setLastPaid(new Date());
                                    mobileClubBillingPlan.setNextPush(nextPush);

                                } else if (totalSuccess < expectedSuccesses) { //UnderBill Users
                                    pendingTickets = expectedSuccesses - totalSuccess;
                                    if (pendingTickets >= clubdetail.getFrequency()) {
                                        mobileClubBillingPlan
                                                .setServiceDateBillsRemaining(1D + clubdetail.getFrequency());
                                    } else {
                                        mobileClubBillingPlan.setServiceDateBillsRemaining(1D * pendingTickets);
                                    }

                                    nextPush = DateUtils.addHours(new Date(), 1);
                                    //nextPush = DateUtils.setHours(nextPush, 9);
                                    //nextPush = DateUtils.truncate(nextPush, Calendar.HOUR_OF_DAY);
                                    mobileClubBillingPlan.setNextPush(nextPush);
                                } else if (totalSuccess > expectedSuccesses) { //overbill users Or can be ok due to week calculation. 
                                    mobileClubBillingPlan.setLastPaid(new Date());
                                    int weekdifference = (totalSuccess - expectedSuccesses)
                                            / clubdetail.getFrequency();
                                    nextPush = DateUtils.addWeeks(mobileClubBillingPlan.getLastPush(),
                                            weekdifference); //Adding not to overbill continuously
                                    mobileClubBillingPlan.setNextPush(nextPush);
                                }

                                if (!mobileClubBillingPlan.getExternalId().toLowerCase().startsWith("adhoc")) {
                                    Date billingEnd = DateUtils.addDays(nextPush, 7);
                                    mobileClubBillingPlan.setBillingEnd(billingEnd);
                                }

                                System.out.println("weeks VEEO Billing -- " + clubUser.getParsedMobile() + "-- "
                                        + clubUser.getClubUnique() + "-- " + clubUser.getSubscribed()
                                        + "-- no. of weeks " + weeks + " noofsuccess " + totalSuccess
                                        + " successfrequency " + expectedSuccesses + " pending tickets "
                                        + pendingTickets + " ------- ");

                            } catch (Exception e) {
                            }

                            //=============End Calculating the User's Week of billings =================================
                        }

                        umemobileclubuserdao.updateBillingRenew(clubUser.getUserUnique(), club.getUnique());
                        billingplandao.update(mobileClubBillingPlan);
                        MobileClubBillingSuccesses mobileClubBillingSuccesses = new MobileClubBillingSuccesses(
                                mobileClubBillingPlan, mobileClubBillingTry);

                        try {
                            mobilebillingdao.insertBillingSuccess(mobileClubBillingSuccesses);
                            mobilebillingdao.insertBillingTry(mobileClubBillingTry);

                        } catch (Exception e) {
                        }

                    }

                    //                        QuizUserAttempted quizUserAttempted = new QuizUserAttempted();
                    //                        quizUserAttempted.setaParsedMsisdn(msisdn);
                    //                        quizUserAttempted.setClubUnique(club.getUnique());
                    //                        quizUserAttempted.setType("Entry Confirmation");
                    //                        quizUserAttempted.setStatus("true");
                    //                        quizUserAttempted.setaUnique(String.valueOf(transactionId));
                    //                        quizUserAttempted.setaCreated(new Date());
                    //                        umequizdao.saveQuizUserAttempted(quizUserAttempted);

                } //END thirdbillable user!=null

                //=====================================================================
            } //End of third billable 

            CpaVisitLog visitorLog = cpavisitlogdao.getDetails(msisdn, clubUser.getCampaign());
            if (visitorLog != null && cpaqueue) {

                String campaignId = visitorLog.getaCampaignId();
                if (null != campaignId && !"".equals(campaignId)) {
                    MobileClubCampaign cmpg = UmeTempCmsCache.campaignMap.get(campaignId);
                    if (cmpg != null) {
                        if (cmpg.getSrc().toLowerCase().endsWith("cpa")
                                && cmpg.getCpaType().equalsIgnoreCase("billing")) {
                            // 2016.01.13 - AS - Removed commented code, check repo history if needed
                            if (cpaLog) {
                                // 2016.01.13 - AS - Removed commented code, check repo history if needed
                                int insertedRows = cpaloggerdao.insertIntoCpaLogging(msisdn, campaignId,
                                        club.getUnique(), 10, clubUser.getNetworkCode(), cmpg.getSrc());
                            }

                        }
                    }
                }

            }

        } //End smsrecord!=null

    } //end if report equals delivered
    else { //FOR ALL FAILURE 
        SdcSmsSubmit smsrecord = quizsmsdao.getSmsMsgLog(id);
        if (smsrecord != null && smsrecord.getMsgType().equalsIgnoreCase("premium")) {
            UmeUser user = null;
            MobileClubBillingPlan mobileClubBillingPlan = null;
            SdcMobileClubUser clubUser = null;
            String userUnique = "";
            try {
                userUnique = umeuserdao.getUserUnique(msisdn, "msisdn", defClubDomain);
            } catch (Exception e) {
                System.out.println("IE Exception for at line 365 EngageDR " + msisdn);
                e.printStackTrace();
            }
            if (!userUnique.equals("")) {
                user = umeuserdao.getUser(msisdn);
            }

            if (user != null) {
                clubUser = user.getClubMap().get(club.getUnique());

                if (clubUser == null) {
                    clubUser = umemobileclubuserdao.getClubUserByMsisdn(msisdn, club.getUnique());

                }
            }
            if (clubUser != null) {
                mobileClubBillingPlan = billingplandao.getActiveBillingPlanByMsisdnAndClubUnique(msisdn,
                        club.getUnique());
            }
            String biloggednetwork = "unknown";
            try {
                biloggednetwork = mobilenetwork.getMobileNetwork("IE", clubUser.getNetworkCode());
            } catch (Exception e) {
                biloggednetwork = "unknown";
            }

            if (report.equals("REJECTED")) {// || report.equals("INVALID_MSISDN")){
                //DEACtivate user as we can't bill them 
                if (clubUser != null && clubUser.getActive() == 1) {
                    // 2016-05-10 Alex Sanchez if (smsrecord != null) {
                    MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry();
                    mobileClubBillingTry.setUnique(id);
                    mobileClubBillingTry.setLogUnique(id);
                    mobileClubBillingTry.setAggregator("TXT");
                    mobileClubBillingTry.setClubUnique(club.getUnique());
                    mobileClubBillingTry.setCreated(new Date());
                    mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase());
                    mobileClubBillingTry.setParsedMsisdn(msisdn);
                    mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase());
                    mobileClubBillingTry.setResponseCode("99");
                    mobileClubBillingTry.setResponseDesc(report.toLowerCase());
                    mobileClubBillingTry.setResponseRef(transactionId);
                    mobileClubBillingTry.setStatus("fail");
                    mobileClubBillingTry.setTransactionId(transactionId);
                    mobileClubBillingTry.setCampaign(clubUser.getCampaign());
                    mobileClubBillingTry.setTariffClass(club.getPrice());
                    mobilebillingdao.insertBillingTry(mobileClubBillingTry);

                    //stopuser.stopSingleSubscription(msisdn, club.getUnique(), null, null);
                    /*
                     SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                     String unSubscribed = sdf2.format(new Date());
                     clubUser.setActive(0);
                     clubUser.setUnsubscribed(SdcMiscDate.parseSqlDateString(unSubscribed));
                     umemobileclubuserdao.saveItem(clubUser);
                            
                     String stop = "STOP";
                     try {
                     if (DateUtils.isSameDay(clubUser.getSubscribed(), clubUser.getUnsubscribed())) {
                     stop = "STOPFD";
                     }
                     campaigndao.log("iedr", clubUser.getLandingpage(), clubUser.getParsedMobile(), clubUser.getParsedMobile(), null, null, clubUser.getCampaign(), clubUser.getClubUnique(), stop, 0, null, null, biloggednetwork.toLowerCase());
                     } catch (Exception e) {
                     System.out.println("Exception EngageDr while campaignlog for stops " + e);
                     e.printStackTrace();
                     }
                     //umemobileclubuserdao.disable(clubUser.getUnique());
                     if (mobileClubBillingPlan != null) {
                     billingplandao.disableBillingPlan(msisdn, club.getUnique());
                            
                     }
                     */
                    // 2016-05-10 Alex Sanchez } //end smsrecord!=null 
                } // If ClubUser is active 
            } //end rejected or invalid msisdn
            else if (report.equalsIgnoreCase("ACKNOWLEDGED") || report.equalsIgnoreCase("ACCEPTED")) {
                //Don't do anything here as nextpush will be 7 days set from billing daemon
                //This is treated as the msg might have been delivered !! We will receive
                //notification of Delivered later on. 

            } else { //For all other 
                //NO_CREDIT, FAILED,VALIDITY_EXPIRED,UNKNOWN,OPERATOR_ERROR

                //DATETIME SCHEDULER FOR FAILURE 
                Calendar cal = Calendar.getInstance();
                cal.setTime(new Date());
                if (clubdetail.getPaymentType().equalsIgnoreCase("Adhoc")) {
                    cal.set(Calendar.HOUR_OF_DAY, 21);
                } else {
                    cal.add(Calendar.HOUR, 3);
                }
                //cal.add(Calendar.HOUR, 72);

                if (cal.get(Calendar.HOUR_OF_DAY) > 18) {
                    cal.add(Calendar.DATE, 1);
                    cal.set(Calendar.HOUR_OF_DAY, 9);
                } else if (cal.get(Calendar.HOUR_OF_DAY) > 12) {
                    cal.set(Calendar.HOUR_OF_DAY, 18);
                } else if (cal.get(Calendar.HOUR_OF_DAY) > 9) {
                    cal.set(Calendar.HOUR_OF_DAY, 12);
                } else {
                    cal.set(Calendar.HOUR_OF_DAY, 9);
                }
                cal.set(Calendar.MINUTE, 0);
                cal.set(Calendar.SECOND, 0);

                MobileClubBillingTry mobileClubBillingTry = new MobileClubBillingTry();
                mobileClubBillingTry.setUnique(id);
                mobileClubBillingTry.setLogUnique(id);
                mobileClubBillingTry.setAggregator("TXT");
                mobileClubBillingTry.setClubUnique(club.getUnique());
                mobileClubBillingTry.setCreated(new Date());
                mobileClubBillingTry.setNetworkCode(biloggednetwork.toLowerCase());
                mobileClubBillingTry.setParsedMsisdn(msisdn);
                mobileClubBillingTry.setRegionCode(club.getRegion().toUpperCase());
                mobileClubBillingTry.setResponseCode("51");
                mobileClubBillingTry.setResponseDesc("Insufficient Funds");
                mobileClubBillingTry.setResponseRef(transactionId);
                mobileClubBillingTry.setStatus("fail");
                mobileClubBillingTry.setTransactionId(transactionId);
                mobileClubBillingTry.setCampaign(clubUser.getCampaign());
                mobileClubBillingTry.setTariffClass(club.getPrice());
                mobilebillingdao.insertBillingTry(mobileClubBillingTry);

                if (mobileClubBillingPlan != null) {
                    //Calendar cal = Calendar.getInstance();
                    //cal.setTime(new Date());
                    //mobileClubBillingPlan.setLastPush(cal.getTime());
                    mobileClubBillingPlan.setNextPush(cal.getTime());
                    mobileClubBillingPlan.setPushCount(mobileClubBillingPlan.getPushCount() + 1);
                    //cal.add(Calendar.HOUR_OF_DAY, 12);
                    System.out.println(
                            "VEEODR == FAILED BILLING UPDATE  to " + mobileClubBillingPlan.getParsedMobile()
                                    + " --- " + mobileClubBillingPlan.getNextPush());
                    billingplandao.update(mobileClubBillingPlan);//, cal.getTime());
                }

            } //end for all the failures
        } //END if smsrecord!=null or Premium
    } // end ELSE 

}