Example usage for java.time ZonedDateTime with

List of usage examples for java.time ZonedDateTime with

Introduction

In this page you can find the example usage for java.time ZonedDateTime with.

Prototype

@Override
public ZonedDateTime with(TemporalAdjuster adjuster) 

Source Link

Document

Returns an adjusted copy of this date-time.

Usage

From source file:Main.java

public static void main(String[] args) {
    ZonedDateTime dateTime = ZonedDateTime.now();
    dateTime = dateTime.with(TemporalAdjusters.firstDayOfMonth());
    System.out.println(dateTime);
}

From source file:sg.ncl.MainController.java

@RequestMapping("/admin/usage")
public String adminTeamUsage(Model model, @RequestParam(value = "start", required = false) String start,
        @RequestParam(value = "end", required = false) String end,
        @RequestParam(value = "organizationType", required = false) String organizationType,
        @RequestParam(value = "team", required = false) String team,
        final RedirectAttributes redirectAttributes, HttpSession session)
        throws IOException, WebServiceRuntimeException {
    if (!validateIfAdmin(session)) {
        return NO_PERMISSION_PAGE;
    }//from   w  w  w.j a  v  a2s  .  c o m

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    ZonedDateTime nowDate = ZonedDateTime.now();
    String now = nowDate.format(formatter);
    if (start == null) {
        start = nowDate.with(firstDayOfMonth()).format(formatter);
    }
    if (end == null) {
        end = now;
    }
    if (now.compareTo(start) < 0 || now.compareTo(end) < 0) {
        redirectAttributes.addFlashAttribute(MESSAGE, "Period selected is beyond current date (today).");
        return REDIRECT_TEAM_USAGE;
    }

    // get list of teamids
    HttpEntity<String> request = createHttpEntityHeaderOnly();
    ResponseEntity responseEntity = restTemplate.exchange(properties.getSioTeamsUrl(), HttpMethod.GET, request,
            String.class);
    JSONArray jsonArray = new JSONArray(responseEntity.getBody().toString());

    List<Team2> searchTeams = new ArrayList<>();
    TeamManager2 teamManager2 = new TeamManager2();
    getSearchTeams(organizationType, team, jsonArray, searchTeams, teamManager2);

    if (!searchTeams.isEmpty()) {
        List<String> dates = getDates(start, end, formatter);

        Map<String, List<Long>> teamUsages = new HashMap<>();
        Long totalUsage = 0L;
        for (Team2 team2 : searchTeams) {
            try {
                List<Long> usages = new ArrayList<>();
                totalUsage += getTeamUsageStatistics(team2, start, end, request, usages);
                teamUsages.put(team2.getName(), usages);
            } catch (RestClientException rce) {
                log.warn("Error connecting to sio analytics service for team usage: {}", rce);
                redirectAttributes.addFlashAttribute(MESSAGE, ERR_SERVER_OVERLOAD);
                return REDIRECT_TEAM_USAGE;
            } catch (StartDateAfterEndDateException sde) {
                redirectAttributes.addFlashAttribute(MESSAGE, ERR_START_DATE_AFTER_END_DATE);
                return REDIRECT_TEAM_USAGE;
            }
        }
        model.addAttribute("dates", dates);
        model.addAttribute("teamUsages", teamUsages);
        model.addAttribute("totalUsage", totalUsage);
    }

    List<Team2> allTeams = new ArrayList<>(teamManager2.getTeamMap().values());
    allTeams.sort(Comparator.comparing(Team2::getName, String.CASE_INSENSITIVE_ORDER));
    model.addAttribute(ALL_TEAMS, allTeams);
    model.addAttribute("start", start);
    model.addAttribute("end", end);
    model.addAttribute("organizationType", organizationType);
    model.addAttribute("team", team);
    return "usage_statistics";
}

From source file:sg.ncl.MainController.java

@RequestMapping(value = "/admin/energy", method = RequestMethod.GET)
public String adminEnergy(Model model, @RequestParam(value = "start", required = false) String start,
        @RequestParam(value = "end", required = false) String end, final RedirectAttributes redirectAttributes,
        HttpSession session) throws IOException {

    if (!validateIfAdmin(session)) {
        return NO_PERMISSION_PAGE;
    }//from w ww  .ja  v a  2 s  .co m

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    ZonedDateTime now = ZonedDateTime.now();
    if (start == null) {
        ZonedDateTime startDate = now.with(firstDayOfMonth());
        start = startDate.format(formatter);
    }
    if (end == null) {
        ZonedDateTime endDate = now.with(lastDayOfMonth());
        end = endDate.format(formatter);
    }

    HttpEntity<String> request = createHttpEntityHeaderOnly();

    ResponseEntity responseEntity;
    try {
        responseEntity = restTemplate.exchange(
                properties.getEnergyStatistics("startDate=" + start, "endDate=" + end), HttpMethod.GET, request,
                String.class);
    } catch (RestClientException e) {
        log.warn("Error connecting to sio analytics service for energy usage: {}", e);
        redirectAttributes.addFlashAttribute(MESSAGE, ERR_SERVER_OVERLOAD);
        return REDIRECT_ENERGY_USAGE;
    }

    String responseBody = responseEntity.getBody().toString();
    JSONArray jsonArray = new JSONArray(responseBody);

    // handling exceptions from SIO
    if (RestUtil.isError(responseEntity.getStatusCode())) {
        MyErrorResource error = objectMapper.readValue(responseBody, MyErrorResource.class);
        ExceptionState exceptionState = ExceptionState.parseExceptionState(error.getError());
        switch (exceptionState) {
        case START_DATE_AFTER_END_DATE_EXCEPTION:
            log.warn("Get energy usage : Start date after end date error");
            redirectAttributes.addFlashAttribute(MESSAGE, ERR_START_DATE_AFTER_END_DATE);
            return REDIRECT_ENERGY_USAGE;

        default:
            log.warn("Get energy usage : sio or deterlab adapter connection error");
            redirectAttributes.addFlashAttribute(MESSAGE, ERR_SERVER_OVERLOAD);
            return REDIRECT_ENERGY_USAGE;
        }
    } else {
        log.info("Get energy usage info : {}", responseBody);
    }

    DecimalFormat df2 = new DecimalFormat(".##");

    double sumEnergy = 0.00;
    List<String> listOfDate = new ArrayList<>();
    List<Double> listOfEnergy = new ArrayList<>();
    ZonedDateTime currentZonedDateTime = convertToZonedDateTime(start);
    String currentDate = null;
    for (int i = 0; i < jsonArray.length(); i++) {
        sumEnergy += jsonArray.getDouble(i);

        // add into listOfDate to display graph
        currentDate = currentZonedDateTime.format(formatter);
        listOfDate.add(currentDate);

        // add into listOfEnergy to display graph
        double energy = Double.valueOf(df2.format(jsonArray.getDouble(i)));
        listOfEnergy.add(energy);

        currentZonedDateTime = convertToZonedDateTime(currentDate).plusDays(1);
    }

    sumEnergy = Double.valueOf(df2.format(sumEnergy));
    model.addAttribute("listOfDate", listOfDate);
    model.addAttribute("listOfEnergy", listOfEnergy);
    model.addAttribute("start", start);
    model.addAttribute("end", end);
    model.addAttribute("energy", sumEnergy);
    return "energy_usage";
}