public static String calculateName(DateIntervalType intervalType, Date d) { if (d == null) return null; Locale l = Locale.getDefault(); if (MILLENIUM.equals(intervalType) || CENTURY.equals(intervalType) || DECADE.equals(intervalType) || YEAR.equals(intervalType)) { SimpleDateFormat format = new SimpleDateFormat("yyyy", l); return format.format(d); } if (QUARTER.equals(intervalType) || MONTH.equals(intervalType)) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM", l); return format.format(d); } if (WEEK.equals(intervalType) || DAY.equals(intervalType) || DAY_OF_WEEK.equals(intervalType)) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); return format.format(d); } if (HOUR.equals(intervalType)) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH"); return format.format(d); } if (MINUTE.equals(intervalType)) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); return format.format(d); } if (SECOND.equals(intervalType)) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return format.format(d); } return format.format(d); }
protected void nextIntervalDate(Calendar c, DateIntervalType intervalType, int intervals) { if (MILLENIUM.equals(intervalType)) { c.add(Calendar.YEAR, 1000 * intervals); } else if (CENTURY.equals(intervalType)) { c.add(Calendar.YEAR, 100 * intervals); } else if (DECADE.equals(intervalType)) { c.add(Calendar.YEAR, 10 * intervals); } else if (YEAR.equals(intervalType)) { c.add(Calendar.YEAR, intervals); } else if (QUARTER.equals(intervalType)) { c.add(Calendar.MONTH, 3 * intervals); } else if (MONTH.equals(intervalType)) { c.add(Calendar.MONTH, intervals); } else if (WEEK.equals(intervalType)) { c.add(Calendar.DAY_OF_MONTH, 7 * intervals); } else if (DAY.equals(intervalType) || DAY_OF_WEEK.equals(intervalType)) { c.add(Calendar.DAY_OF_MONTH, intervals); } else if (HOUR.equals(intervalType)) { c.add(Calendar.HOUR_OF_DAY, intervals); } else if (MINUTE.equals(intervalType)) { c.add(Calendar.MINUTE, intervals); } else if (SECOND.equals(intervalType)) { c.add(Calendar.SECOND, intervals); } else { // Default to year to avoid infinite loops c.add(Calendar.YEAR, intervals); } }
public static String getQuartzParametersByFormula(String quartzExpr) { Map<String, String> resMap = new HashMap<String, String>(); String arrayStrings[] = quartzExpr.split("\\s+"); if (arrayStrings.length == 6) { String hours = arrayStrings[2]; String interval = arrayStrings[1]; String startHour = StringUtils.substringBefore(hours, "-"); String endHour = StringUtils.substringAfter(hours, "-"); String startMinute = StringUtils.substringBefore(interval, "/"); String endMinute = "00"; StringBuilder sb = new StringBuilder(); sb.append(startHour) .append(":") .append(startMinute) .append("-") .append(endHour) .append(":") .append(endMinute); resMap.put("sRegionTime", sb.toString()); String weekDays = arrayStrings[5].indexOf("\"") > 0 ? StringUtils.substringBefore(arrayStrings[5], "\"") : arrayStrings[5]; for (DAY_OF_WEEK b : DAY_OF_WEEK.values()) { weekDays = StringUtils.replace(weekDays, b.getQuartzStr(), b.getInternalStr()); } resMap.put("saRegionWeekDay", weekDays); resMap.put("nLen", StringUtils.substringAfter(interval, "/")); } JSONObject res = new JSONObject(resMap); return res.toString(); }
public static String getQuartzFormulaByParameters( String sRegionTime, String saRegionWeekDay, Integer nLen) { // sRegionTime is in format HH:MM-HH:MM // saRegionWeekDay is in format "mo,tu,we,th,fr,sa". Need to convert to MON, TUE, WED, THU, FRI, // SAT, SUN String startTime = StringUtils.substringBefore(sRegionTime, "-"); String endTime = StringUtils.substringAfter(sRegionTime, "-"); String startHour = StringUtils.substringBefore(startTime, ":"); String startMinute = StringUtils.substringAfter(startTime, ":"); String endHour = StringUtils.substringBefore(endTime, ":"); for (DAY_OF_WEEK b : DAY_OF_WEEK.values()) { saRegionWeekDay = saRegionWeekDay.replace(b.getInternalStr(), b.getQuartzStr()); } String res = StringUtils.replace(QUARTZ_FORMAT, "[INTERVAL]", nLen.toString()); res = StringUtils.replace(res, "[START_MINUTE]", startMinute); res = StringUtils.replace(res, "[HOURS_PERIOD]", startHour + "-" + endHour); res = StringUtils.replace(res, "[DAYS]", saRegionWeekDay); return res; }
protected Calendar firstIntervalDate( DateIntervalType intervalType, Date minDate, ColumnGroup columnGroup) { Calendar c = GregorianCalendar.getInstance(); c.setLenient(false); c.setTime(minDate); if (YEAR.equals(intervalType)) { c.set(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH, 1); c.set(Calendar.HOUR, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); } if (QUARTER.equals(intervalType)) { int currentMonth = c.get(Calendar.MONTH); int firstMonthYear = columnGroup.getFirstMonthOfYear().getIndex(); int rest = Quarter.getPositionInQuarter(firstMonthYear, currentMonth + 1); c.add(Calendar.MONTH, rest * -1); c.set(Calendar.DAY_OF_MONTH, 1); c.set(Calendar.HOUR, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); } if (MONTH.equals(intervalType)) { c.set(Calendar.DAY_OF_MONTH, 1); c.set(Calendar.HOUR, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); } if (DAY.equals(intervalType) || DAY_OF_WEEK.equals(intervalType) || WEEK.equals(intervalType)) { c.set(Calendar.HOUR, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); } if (HOUR.equals(intervalType)) { c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); } if (MINUTE.equals(intervalType)) { c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); } if (SECOND.equals(intervalType)) { c.set(Calendar.MILLISECOND, 0); } return c; }