Example usage for org.joda.time MutableDateTime weekOfWeekyear

List of usage examples for org.joda.time MutableDateTime weekOfWeekyear

Introduction

In this page you can find the example usage for org.joda.time MutableDateTime weekOfWeekyear.

Prototype

public Property weekOfWeekyear() 

Source Link

Document

Get the week of a week based year property.

Usage

From source file:controllers.api.DashboardsApiController.java

License:Open Source License

private void floorToBeginningOfInterval(String interval, MutableDateTime currentTime) {
    switch (interval) {
    case "minute":
        currentTime.minuteOfDay().roundFloor();
        break;/*w w w .  j  av a2s.  com*/
    case "hour":
        currentTime.hourOfDay().roundFloor();
        break;
    case "day":
        currentTime.dayOfMonth().roundFloor();
        break;
    case "week":
        currentTime.weekOfWeekyear().roundFloor();
        break;
    case "month":
        currentTime.monthOfYear().roundFloor();
        break;
    case "quarter":
        // set the month to the beginning of the quarter
        int currentQuarter = ((currentTime.getMonthOfYear() - 1) / 3);
        int startOfQuarter = (currentQuarter * 3) + 1;
        currentTime.setMonthOfYear(startOfQuarter);
        currentTime.monthOfYear().roundFloor();
        break;
    case "year":
        currentTime.yearOfCentury().roundFloor();
        break;
    default:
        throw new IllegalArgumentException("Invalid duration specified: " + interval);
    }
}

From source file:org.codelibs.elasticsearch.common.joda.DateMathParser.java

License:Apache License

private long parseMath(String mathString, long time, boolean roundUp, DateTimeZone timeZone)
        throws ElasticsearchParseException {
    if (timeZone == null) {
        timeZone = DateTimeZone.UTC;/*w  ww .j  a v  a2 s  .  c o m*/
    }
    MutableDateTime dateTime = new MutableDateTime(time, timeZone);
    for (int i = 0; i < mathString.length();) {
        char c = mathString.charAt(i++);
        final boolean round;
        final int sign;
        if (c == '/') {
            round = true;
            sign = 1;
        } else {
            round = false;
            if (c == '+') {
                sign = 1;
            } else if (c == '-') {
                sign = -1;
            } else {
                throw new ElasticsearchParseException("operator not supported for date math [{}]", mathString);
            }
        }

        if (i >= mathString.length()) {
            throw new ElasticsearchParseException("truncated date math [{}]", mathString);
        }

        final int num;
        if (!Character.isDigit(mathString.charAt(i))) {
            num = 1;
        } else {
            int numFrom = i;
            while (i < mathString.length() && Character.isDigit(mathString.charAt(i))) {
                i++;
            }
            if (i >= mathString.length()) {
                throw new ElasticsearchParseException("truncated date math [{}]", mathString);
            }
            num = Integer.parseInt(mathString.substring(numFrom, i));
        }
        if (round) {
            if (num != 1) {
                throw new ElasticsearchParseException("rounding `/` can only be used on single unit types [{}]",
                        mathString);
            }
        }
        char unit = mathString.charAt(i++);
        MutableDateTime.Property propertyToRound = null;
        switch (unit) {
        case 'y':
            if (round) {
                propertyToRound = dateTime.yearOfCentury();
            } else {
                dateTime.addYears(sign * num);
            }
            break;
        case 'M':
            if (round) {
                propertyToRound = dateTime.monthOfYear();
            } else {
                dateTime.addMonths(sign * num);
            }
            break;
        case 'w':
            if (round) {
                propertyToRound = dateTime.weekOfWeekyear();
            } else {
                dateTime.addWeeks(sign * num);
            }
            break;
        case 'd':
            if (round) {
                propertyToRound = dateTime.dayOfMonth();
            } else {
                dateTime.addDays(sign * num);
            }
            break;
        case 'h':
        case 'H':
            if (round) {
                propertyToRound = dateTime.hourOfDay();
            } else {
                dateTime.addHours(sign * num);
            }
            break;
        case 'm':
            if (round) {
                propertyToRound = dateTime.minuteOfHour();
            } else {
                dateTime.addMinutes(sign * num);
            }
            break;
        case 's':
            if (round) {
                propertyToRound = dateTime.secondOfMinute();
            } else {
                dateTime.addSeconds(sign * num);
            }
            break;
        default:
            throw new ElasticsearchParseException("unit [{}] not supported for date math [{}]", unit,
                    mathString);
        }
        if (propertyToRound != null) {
            if (roundUp) {
                // we want to go up to the next whole value, even if we are already on a rounded value
                propertyToRound.add(1);
                propertyToRound.roundFloor();
                dateTime.addMillis(-1); // subtract 1 millisecond to get the largest inclusive value
            } else {
                propertyToRound.roundFloor();
            }
        }
    }
    return dateTime.getMillis();
}

From source file:org.elasticsearch.common.joda.DateMathParser.java

License:Apache License

private long parseMath(String mathString, long time, boolean roundUp) throws ElasticsearchParseException {
    MutableDateTime dateTime = new MutableDateTime(time, DateTimeZone.UTC);
    try {/*from  w w  w  .  j  av a 2 s .  c o  m*/
        for (int i = 0; i < mathString.length();) {
            char c = mathString.charAt(i++);
            int type;
            if (c == '/') {
                type = 0;
            } else if (c == '+') {
                type = 1;
            } else if (c == '-') {
                type = 2;
            } else {
                throw new ElasticsearchParseException(
                        "operator not supported for date math [" + mathString + "]");
            }

            int num;
            if (!Character.isDigit(mathString.charAt(i))) {
                num = 1;
            } else {
                int numFrom = i;
                while (Character.isDigit(mathString.charAt(i))) {
                    i++;
                }
                num = Integer.parseInt(mathString.substring(numFrom, i));
            }
            if (type == 0) {
                // rounding is only allowed on whole numbers
                if (num != 1) {
                    throw new ElasticsearchParseException(
                            "rounding `/` can only be used on single unit types [" + mathString + "]");
                }
            }
            char unit = mathString.charAt(i++);
            switch (unit) {
            case 'y':
                if (type == 0) {
                    if (roundUp) {
                        dateTime.yearOfCentury().roundCeiling();
                    } else {
                        dateTime.yearOfCentury().roundFloor();
                    }
                } else if (type == 1) {
                    dateTime.addYears(num);
                } else if (type == 2) {
                    dateTime.addYears(-num);
                }
                break;
            case 'M':
                if (type == 0) {
                    if (roundUp) {
                        dateTime.monthOfYear().roundCeiling();
                    } else {
                        dateTime.monthOfYear().roundFloor();
                    }
                } else if (type == 1) {
                    dateTime.addMonths(num);
                } else if (type == 2) {
                    dateTime.addMonths(-num);
                }
                break;
            case 'w':
                if (type == 0) {
                    if (roundUp) {
                        dateTime.weekOfWeekyear().roundCeiling();
                    } else {
                        dateTime.weekOfWeekyear().roundFloor();
                    }
                } else if (type == 1) {
                    dateTime.addWeeks(num);
                } else if (type == 2) {
                    dateTime.addWeeks(-num);
                }
                break;
            case 'd':
                if (type == 0) {
                    if (roundUp) {
                        dateTime.dayOfMonth().roundCeiling();
                    } else {
                        dateTime.dayOfMonth().roundFloor();
                    }
                } else if (type == 1) {
                    dateTime.addDays(num);
                } else if (type == 2) {
                    dateTime.addDays(-num);
                }
                break;
            case 'h':
            case 'H':
                if (type == 0) {
                    if (roundUp) {
                        dateTime.hourOfDay().roundCeiling();
                    } else {
                        dateTime.hourOfDay().roundFloor();
                    }
                } else if (type == 1) {
                    dateTime.addHours(num);
                } else if (type == 2) {
                    dateTime.addHours(-num);
                }
                break;
            case 'm':
                if (type == 0) {
                    if (roundUp) {
                        dateTime.minuteOfHour().roundCeiling();
                    } else {
                        dateTime.minuteOfHour().roundFloor();
                    }
                } else if (type == 1) {
                    dateTime.addMinutes(num);
                } else if (type == 2) {
                    dateTime.addMinutes(-num);
                }
                break;
            case 's':
                if (type == 0) {
                    if (roundUp) {
                        dateTime.secondOfMinute().roundCeiling();
                    } else {
                        dateTime.secondOfMinute().roundFloor();
                    }
                } else if (type == 1) {
                    dateTime.addSeconds(num);
                } else if (type == 2) {
                    dateTime.addSeconds(-num);
                }
                break;
            default:
                throw new ElasticsearchParseException(
                        "unit [" + unit + "] not supported for date math [" + mathString + "]");
            }
        }
    } catch (Exception e) {
        if (e instanceof ElasticsearchParseException) {
            throw (ElasticsearchParseException) e;
        }
        throw new ElasticsearchParseException("failed to parse date math [" + mathString + "]");
    }
    return dateTime.getMillis();
}

From source file:se.streamsource.streamflow.web.context.crystal.CrystalContext.java

License:Apache License

public TableValue motionchart() {
    final TableBuilder tableBuilder = new TableBuilder(module.valueBuilderFactory());
    tableBuilder.column("CaseType", "Case type", "string").column("Week", "Week", "string")
            .column("Variation", "Variation", "number").column("Duration", "Duration", "number")
            .column("CaseCount", "Case count", "number").column("CasetypeOwner", "Casetype owner", "string");

    final Logger logger = LoggerFactory.getLogger(getClass());
    try {//from w  w  w  .j  a v a2  s .co  m
        final String weekFormat = "yyyy'W'ww";

        DateTime[] range = findRange();
        logger.info(
                "Full range from " + range[0].toString(weekFormat) + " to " + range[1].toString(weekFormat));

        // Find cases for each week
        Databases databases = new Databases(source.get());

        final MutableDateTime from = new MutableDateTime(range[0]).dayOfWeek().set(1);

        while (from.isBefore(range[1])) {

            final MutableDateTime minWeek = from.copy();

            databases.query(sql.getString("motionchart"), new Databases.StatementVisitor() {
                public void visit(PreparedStatement preparedStatement) throws SQLException {
                    String fromWeek = from.toString(weekFormat);

                    preparedStatement.setTimestamp(1, new Timestamp(from.toDate().getTime()));
                    from.addWeeks(1);
                    preparedStatement.setTimestamp(2, new Timestamp(from.toDate().getTime()));
                    String toWeek = from.toString(weekFormat);

                    logger.info("From " + fromWeek + " to " + toWeek);
                }
            }, new Databases.ResultSetVisitor() {
                public boolean visit(ResultSet visited) throws SQLException {
                    tableBuilder.row().cell(visited.getString("casetype"), null)
                            .cell(minWeek.toString(weekFormat), "v" + minWeek.weekOfWeekyear().get())
                            .cell(visited.getString("variationpct"), null)
                            .cell((visited.getLong("average") / (1000 * 60 * 60)) + "", null)
                            .cell(visited.getString("count"), null)
                            .cell(visited.getString("casetype_owner"), null);

                    return true;
                }
            });
        }

    } catch (SQLException e) {
        logger.warn("Could not get statistics", e);
    }

    return tableBuilder.newTable();
}