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

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

Introduction

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

Prototype

public static Date addDays(Date date, int amount) 

Source Link

Document

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

Usage

From source file:ubic.gemma.util.DateUtil.java

/**
 * Turn a string like '-7d' into the date equivalent to "seven days ago". Supports 'd' for day, 'h' for hour, 'm'
 * for minutes, "M" for months and "y" for years. Start with a '-' to indicate times in the past ('+' is not
 * necessary for future). Values must be integers.
 * //from w w  w.j a v a  2s.  c  om
 * @param date to be added/subtracted to
 * @param dateString
 * @author Paul Pavlidis
 * @return Date relative to 'now' as modified by the input date string.
 */
public static Date getRelativeDate(Date date, String dateString) {

    if (date == null)
        throw new IllegalArgumentException("Null date");

    Pattern pat = Pattern.compile("([+-]?[0-9]+)([dmhMy])");

    Matcher match = pat.matcher(dateString);
    boolean matches = match.matches();

    if (!matches) {
        throw new IllegalArgumentException(
                "Couldn't make sense of " + dateString + ", please use something like -7d or -8h");
    }

    int amount = Integer.parseInt(match.group(1).replace("+", ""));
    String unit = match.group(2);

    if (unit.equals("h")) {
        return DateUtils.addHours(date, amount);
    } else if (unit.equals("m")) {
        return DateUtils.addMinutes(date, amount);
    } else if (unit.equals("d")) {
        return DateUtils.addDays(date, amount);
    } else if (unit.equals("y")) {
        return DateUtils.addYears(date, amount);
    } else if (unit.equals("M")) {
        return DateUtils.addMonths(date, amount);
    } else {
        throw new IllegalArgumentException(
                "Couldn't make sense of units in " + dateString + ", please use something like -7d or -8h");
    }

}

From source file:ubic.gemma.web.feed.TwitterOutbound.java

/**
 * Generate content for the tweet//from   w w  w . j a  v  a 2s .com
 * 
 * @return
 */
protected String generateDailyFeed() {

    Calendar c = Calendar.getInstance();
    Date date = c.getTime();
    date = DateUtils.addDays(date, -1);
    WhatsNew whatsNew = whatsNewService.getReport(date);

    Collection<ExpressionExperiment> experiments = new ArrayList<ExpressionExperiment>();
    int updatedExperimentsCount = 0;
    int newExperimentsCount = 0;

    Random rand = new Random();

    // Query for all updated / new expression experiments to store into a experiments collection
    if (whatsNew != null) {
        Collection<ExpressionExperiment> updatedExperiments = whatsNew.getUpdatedExpressionExperiments();
        Collection<ExpressionExperiment> newExperiments = whatsNew.getNewExpressionExperiments();
        experiments.addAll(updatedExperiments);
        experiments.addAll(newExperiments);
        updatedExperimentsCount = updatedExperiments.size();
        newExperimentsCount = newExperiments.size();
    }

    ExpressionExperiment experiment = null;

    // Query latest experiments if there are no updated / new experiments
    if (updatedExperimentsCount == 0 && newExperimentsCount == 0) {
        Collection<ExpressionExperiment> latestExperiments = expressionExperimentService.findByUpdatedLimit(10);
        Collection<Securable> publicExperiments = securityService.choosePublic(latestExperiments);

        if (publicExperiments.isEmpty()) {
            throw new IllegalStateException("There are no valid experiments to tweet about");
        }

        experiment = (ExpressionExperiment) publicExperiments.toArray()[rand.nextInt(publicExperiments.size())];
    } else {
        if (experiments.isEmpty()) {
            throw new IllegalStateException("There are no valid experiments to tweet about");
        }

        experiment = (ExpressionExperiment) experiments.toArray()[rand.nextInt(experiments.size())];
    }

    assert experiment != null;

    String status = statusWithExperiment(StringUtils.abbreviate(experiment.getName(), 90),
            updatedExperimentsCount, newExperimentsCount);

    return StringUtils.abbreviate(status, 140); // this will look a bit weird, and might chop off the url...but
                                                // have to ensure.
}

From source file:uk.ac.ebi.metabolights.repository.dao.hibernate.StudyDAO.java

public List<String> getStudiesToGoLiveList(String userToken, int numberOfDays) throws DAOException {

    // Hibernate left join:
    // from Cat as cat left join cat.mate.kittens as kittens
    // https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch16.html#queryhql-joins

    String query = "select study.acc from " + StudyData.class.getSimpleName() + " study"
            + " left join study.users user";

    // is the user a curator?
    boolean isCurator = usersDAO.hasUserThisRole(AppRole.ROLE_SUPER_USER, userToken);

    // Query to check date...
    StudyData study = new StudyData();

    // Calculate the date limits
    Date todayMidNight = DateUtils.round(new Date(), Calendar.DAY_OF_MONTH);

    // 0 will get all studies until today
    Date lLimit = null;//from   ww w  .  j a  va2s.c om

    if (numberOfDays != 0) {
        lLimit = DateUtils.addDays(todayMidNight, numberOfDays);
    } else {
        lLimit = DateUtils.addDays(todayMidNight, -3000);
    }

    Date uLimit = DateUtils.addDays(todayMidNight, numberOfDays + 1);

    query = query + " where (study.releaseDate <:ulimit and study.releaseDate >=:llimit and study.status= "
            + Study.StudyStatus.INREVIEW.ordinal() + ")";

    // Create an empty filter
    Filter filter = new Filter();

    // Add the date filter.
    filter.fieldValuePairs.put("ulimit", uLimit);
    filter.fieldValuePairs.put("llimit", lLimit);

    // If not...
    if (!isCurator) {

        query = query + " AND (user.apiToken=:apiToken) ";

        // Add clause to where..
        filter.fieldValuePairs.put("apiToken", userToken);
    }

    List<String> studies = this.getList(query, filter);

    return studies;

}

From source file:uk.ac.ebi.phenotype.service.ObservationService.java

/**
 * Get all controls for a specified set of center, strain, parameter,
 * (optional) sex, and metadata group.// w  w  w  .ja  v  a 2s .  co  m
 *
 * @param parameterId
 * @param strain
 * @param organisationId
 * @param experimentDate date of experiment
 * @param sex if null, both sexes are returned
 * @param metadataGroup when metadataGroup is empty string, force solr to
 * search for metadata_group:""
 * @return list of control observationDTOs that conform to the search
 * criteria
 * @throws SolrServerException
 */
public List<ObservationDTO> getAllControlsBySex(Integer parameterId, String strain, Integer organisationId,
        Date experimentDate, String sex, String metadataGroup) throws SolrServerException {

    List<ObservationDTO> results = new ArrayList<ObservationDTO>();

    QueryResponse response = new QueryResponse();

    SolrQuery query = new SolrQuery().setQuery("*:*")
            .addFilterQuery(ObservationDTO.BIOLOGICAL_SAMPLE_GROUP + ":control")
            .addFilterQuery(ObservationDTO.PARAMETER_ID + ":" + parameterId)
            .addFilterQuery(ObservationDTO.STRAIN_ACCESSION_ID + ":" + strain.replace(":", "\\:")).setStart(0)
            .setRows(5000);
    if (organisationId != null) {
        query.addFilterQuery(ObservationDTO.PHENOTYPING_CENTER_ID + ":" + organisationId);
    }

    if (metadataGroup == null) {
    } else if (metadataGroup.isEmpty()) {
        query.addFilterQuery(ObservationDTO.METADATA_GROUP + ":\"\"");
    } else {
        query.addFilterQuery(ObservationDTO.METADATA_GROUP + ":" + metadataGroup);
    }

    if (sex != null) {
        query.addFilterQuery(ObservationDTO.SEX + ":" + sex);
    }

    // Filter starting at 2000-01-01 and going through the end
    // of day on the experiment date
    if (experimentDate != null) {

        // Set time range to the last possible time on the day for SOLR
        // range query to include all observations on the same day
        Calendar cal = Calendar.getInstance();
        cal.setTime(DateUtils.addDays(experimentDate, 1));
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);
        Date maxDate = cal.getTime();

        Date beginning = new Date(946684800000L); // Start date (Jan 1 2000)
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
        String dateFilter = df.format(beginning) + "Z TO " + df.format(maxDate) + "Z";
        query.addFilterQuery(ObservationDTO.DATE_OF_EXPERIMENT + ":[" + dateFilter + "]");
    }
    response = solr.query(query);
    results = response.getBeans(ObservationDTO.class);
    LOG.debug("getAllControlsBySex " + query);
    return results;
}

From source file:ume.pareva.it.ITDr.java

private void processBillingDR(HttpServletRequest request, HttpServletResponse response) {

    String id = request.getParameter("id");
    String report = request.getParameter("report"); // This can be DELIVERED, ACKNOWLEDGED, FAILED
    String messageid = request.getParameter("message_id");
    String msisdn = request.getParameter("number");

    Calendar deliverytime = new GregorianCalendar();
    String serviceId = "6119598063441KDS";
    String defClubDomain = "5510024809921CDS";
    String freeCostId = "0";
    String deliveryReceipt = "11";
    String transactionId = Misc.generateUniqueIntegerId() + "";
    String typeId = "2";

    if (id.contains("-")) {
        serviceId = getClubId(id, "-").trim();
        System.out.println("IPXDr INSIDE - condition SERVICE ID IS " + serviceId);
    }//from   w w w  . ja  va 2  s .  c o m
    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("DELIVERED")) {
        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);
            }
            try {
                System.out.println("IPXDr ITDR getting userunique from msisdn " + user.toString());
            } catch (Exception e) {
                System.out.println("IPXDr ITDR Exception at line 178 EngageDR for msisdn " + msisdn);
            }

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

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

            boolean cpaLog = false;
            if (smsrecord.getLogUnique().equals(id) && smsrecord.getMsgType().equalsIgnoreCase("premium")
            //&& (smsrecord.getMsgCode1().equals("txtmo.jsp") || smsrecord.getMsgCode1().equals("billingITd1"))
                    && smsrecord.getReqType().equals("firstbillable")) { //first billable

                System.out.println("IPXDr ITDR getting userunique from msisdn " + smsrecord.getMsgCode1());

                if (user != null && clubUser != null) {
                    //System.out.println("IPXDr ITDR getting ClubUser from msisdn "+clubUser.toString());
                    //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("IPX");
                    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());
                        }

                        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());
                        //mobileClubBillingPlan.setLastPaid(new Date());

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

                        umeMobileClubUserDao.updateBillingRenew(clubUser.getUserUnique(), club.getUnique());
                        billingplandao.update(mobileClubBillingPlan);
                        System.out.println("ITBillingSuccess  calling UP billing success in ITDR ");
                        MobileClubBillingSuccesses mobileClubBillingSuccesses = new MobileClubBillingSuccesses(
                                mobileClubBillingPlan, mobileClubBillingTry);
                        System.out.println("ITBillingSuccess  Saving Billing Successes "
                                + mobileClubBillingSuccesses.toString());

                        try {
                            mobilebillingdao.insertBillingSuccess(mobileClubBillingSuccesses);
                            mobilebillingdao.insertBillingTry(mobileClubBillingTry);
                        } catch (Exception e) {
                        }

                    }

                } //End if user!=null
            } //end if first billable
            if (smsrecord.getLogUnique().equals(id) && smsrecord.getMsgType().equalsIgnoreCase("premium")
            //&& (smsrecord.getMsgCode1().equals("txtdr.jsp") || smsrecord.getMsgCode1().equals("billingITd2"))
                    && smsrecord.getReqType().equals("secondbillable")) {

                if (user != null && clubUser != null) {

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

                        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());
                        //mobileClubBillingPlan.setLastPaid(new Date());

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

                        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) {
                        }

                    }
                } //END SEcond bilable uesr!=null

            } //END Second Billable     

            if (smsrecord.getLogUnique().equals(id) && smsrecord.getMsgType().equalsIgnoreCase("premium")
            //&& (smsrecord.getMsgCode1().equals("txtdr.jsp") || smsrecord.getMsgCode1().equals("billingITd3"))
                    && smsrecord.getReqType().equals("thirdbillable")) { //Third 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());

                        /*
                         @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.getTotalSuccess(clubUser.getParsedMobile(),
                                    clubUser.getClubUnique());
                            int pendingTickets = 0;
                            int successfrequency = weeks * 3; //We need to use Frequency here... 
                            if (totalSuccess == successfrequency) // User is upto-date 
                            {

                                mobileClubBillingPlan.setServiceDateBillsRemaining(0.0);
                                mobileClubBillingPlan.setLastPaid(new Date());
                            } else if (totalSuccess < successfrequency) { //UnderBill Users

                                pendingTickets = successfrequency - totalSuccess;
                                if (pendingTickets >= 3) {
                                    mobileClubBillingPlan.setServiceDateBillsRemaining(3.0);
                                } else if (pendingTickets < 3 && pendingTickets > 1) {
                                    mobileClubBillingPlan.setServiceDateBillsRemaining(2.0);

                                } else {
                                    mobileClubBillingPlan.setServiceDateBillsRemaining(1.0);
                                }

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

                            System.out.println("weeks IT Billing -- " + clubUser.getParsedMobile() + "-- "
                                    + clubUser.getClubUnique() + "-- " + clubUser.getSubscribed()
                                    + "-- no. of weeks " + weeks + " noofsuccess " + totalSuccess
                                    + " successfrequency " + successfrequency + " 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) {

                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("IT Exception for at line 404 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.getAnyStatusBillingPlanByMsisdnAndClubUnique(msisdn,
                        club.getUnique());
            }
            String biloggednetwork = "unknown";
            try {
                biloggednetwork = mobilenetwork.getMobileNetwork("IT", 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("ITdr", 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());
                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("ipx");
                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(
                            "ITMODR == 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 }
}

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

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods./*from w  ww .  j av  a  2 s .  c om*/
 *
 * @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 

}