Package org.meb.spdwldr

Source Code of org.meb.spdwldr.EventSourceController

package org.meb.spdwldr;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

import javax.servlet.http.HttpServletRequest;

import org.meb.spdwldr.core.SortOrder;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/event")
public class EventSourceController {

  private EventsListFilter filter;
  private SortOrder defaultSortOrder;

  public EventSourceController() {
    defaultSortOrder = new SortOrder();
    defaultSortOrder.desc("eventDate");
    defaultSortOrder.asc("eventGroup");
    defaultSortOrder.asc("eventTime");
    defaultSortOrder.asc("eventName");
  }

  private static final SimpleDateFormat outFmt = new SimpleDateFormat("dd.MM.");
  private static TimeZone timeZone = TimeZone.getTimeZone("CET");

  @InitBinder
  public void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) {
    binder.registerCustomEditor(Date.class, "eventDate", new CustomDateEditor(
        new SimpleDateFormat("yyyyMMddHHmm"), false));
  }

  @RequestMapping(value = "/put", method = RequestMethod.POST, params = "batch")
  public @ResponseBody
  String putBatch(EventSource eventSource, BindingResult result) {
    if (result.hasErrors()) {
      return "ERROR";
    }

    String uri = eventSource.getEventUri();
    if (uri == null) {
      return "ERROR: uri missing";
    }
    String name = eventSource.getEventName();
    if (name == null) {
      return "ERROR: name missing";
    }
    String group = eventSource.getEventGroup();
    if (group == null) {
      return "ERROR: group missing";
    }
    Date date = eventSource.getEventDate();
    if (date == null) {
      return "ERROR: date missing";
    }

    EventSource source = new EventSourceDao().find(uri);
    if (source == null) {
      source = new EventSource();
    }
    source.setEventUri(uri);
    source.setEventName(name);
    source.setEventGroup(group);
    source.setEventDate(date);
    boolean insert = source.getId() == null;
    new EventSourceDao().merge(source);

    return "OK: " + (insert ? "insert" : "update") + ": " + eventSource.toString();
  }

  @RequestMapping(value = "/put", method = RequestMethod.POST)
  public ModelAndView put(EventSource eventSource, BindingResult result) {
    return getEventSources();
  }

  // @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
  // public String deleteEventSource(@PathVariable("id") Long id) {
  // new EventSourceDao().delete(id);
  // return "redirect:/event/list";
  // }

  @RequestMapping("/list")
  public ModelAndView getEventSources() {
    EventSourceQuery query = new EventSourceQuery();
    query.setSortOrder(defaultSortOrder);
    List<EventSource> eventSources = new EventSourceDao().find(query);
    ModelAndView mav = new ModelAndView("events");
    mav.addObject("eventSources", eventSources);
    mav.addObject("timeZone", timeZone);
    return mav;
  }

  @RequestMapping(value = "/list", params = "grp")
  public ModelAndView getEventSourceGroups() {
    EventSourceQuery query = new EventSourceQuery();
    query.setSortOrder(defaultSortOrder);
    ArrayList<Group> groups = new ArrayList<Group>();
    List<EventSource> sources = new EventSourceDao().find(query);
    String name = null;
    Group group = null;
    for (EventSource source : sources) {
      outFmt.setTimeZone(timeZone);
      if (source.getEventDate() == null) {
        name = "(DATE MISSING) " + source.getEventGroup();
      } else {
        name = outFmt.format(source.getEventDate()) + " " + source.getEventGroup();
      }
      if (group == null || !name.equals(group.getName())) {
        group = new Group();
        group.setName(name);
        group.setEventSources(new ArrayList<EventSource>());
        groups.add(group);
      }
      group.getEventSources().add(source);
    }

    ModelAndView mav = new ModelAndView("eventsgrp");
    mav.addObject("eventSourceGroups", groups);
    mav.addObject("timeZone", timeZone);
    return mav;
  }

  public void setFilter(EventsListFilter filter) {
    this.filter = filter;
  }
}
TOP

Related Classes of org.meb.spdwldr.EventSourceController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.