List of usage examples for org.apache.commons.lang.time DateUtils addDays
public static Date addDays(Date date, int amount)
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 }