Package com.codecademy.eventhub.web.commands

Source Code of com.codecademy.eventhub.web.commands.EventFunnel

package com.codecademy.eventhub.web.commands;

import com.codecademy.eventhub.EventHub;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.codecademy.eventhub.storage.filter.Filter;

import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@Path("/events/funnel")
public class EventFunnel extends Command {
  private final Gson gson;
  private final EventHub eventHub;

  @Inject
  public EventFunnel(Gson gson, EventHub eventHub) {
    this.gson = gson;
    this.eventHub = eventHub;
  }

  @Override
  public synchronized void execute(final HttpServletRequest request,
      final HttpServletResponse response) throws IOException {
    String[] funnelSteps = request.getParameterValues("funnel_steps[]");
    List<Filter> eventFilters = Lists.newArrayList();
    for (int i = 0; i < funnelSteps.length; i++) {
      Filter filter = getFilter(
          merge(request.getParameterValues("efk[]"), request.getParameterValues("efk" + i + "[]")),
          merge(request.getParameterValues("efk[]"), request.getParameterValues("efv" + i + "[]")));
      eventFilters.add(filter);
    }
    Filter userFilter = getFilter(request.getParameterValues("ufk[]"),
        request.getParameterValues("ufv[]"));

    int[] funnelCounts = eventHub.getFunnelCounts(
        request.getParameter("start_date"),
        request.getParameter("end_date"),
        funnelSteps,
        Integer.parseInt(request.getParameter("num_days_to_complete_funnel")),
        eventFilters,
        userFilter);
    response.getWriter().println(gson.toJson(funnelCounts));
  }

}
TOP

Related Classes of com.codecademy.eventhub.web.commands.EventFunnel

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.