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);
    }
  }
Esempio n. 3
0
  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();
  }
Esempio n. 4
0
  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;
 }