Package com.google.appengine.codelab

Source Code of com.google.appengine.codelab.UserStory11Servlet

package com.google.appengine.codelab;

import static com.google.appengine.api.datastore.FetchOptions.Builder.withLimit;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.PreparedQuery;
import com.google.appengine.api.datastore.Query;
import com.google.appengine.api.datastore.Query.CompositeFilterOperator;
import com.google.appengine.api.datastore.Query.Filter;
import com.google.appengine.api.datastore.Query.FilterOperator;
import com.google.appengine.api.datastore.Query.FilterPredicate;

@SuppressWarnings("serial")
public class UserStory11Servlet extends BaseServlet {
   
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
      super.doGet(req, resp);
      insertEntities();
      PrintWriter out = resp.getWriter();
      if (req.getParameter("q").equals("q1")) {
        out.println(SearchByNav());   
      }
        return;
    }

  public static long countFraudesByNavegador(String nav_nome,
      String nav_versao) {
    DatastoreService ds = Util.getDatastoreServiceInstance();
    List<Filter> filter = new ArrayList<Filter>();
    long count = 0;
    Query query = new Query("Navegador");
    if (nav_nome != "") {
      filter.add(new FilterPredicate("nav_nome", FilterOperator.EQUAL,
          nav_nome));
    }
    if (nav_versao != "") {
      filter.add(new FilterPredicate("nav_versao", FilterOperator.EQUAL,
          nav_versao));
    }
    if (filter.size() > 0) {
      query.setFilter(filter.size() == 1 ? filter.get(0)
          : CompositeFilterOperator.and(filter));
    }
    for (Entity sis : ds.prepare(query).asIterable()) {
      for (Entity ses : new Sessao().getByNavId(sis.getKey().getId())
          .asIterable()) {
        for (Entity tra : getTransacaoBySesId(ses.getKey().getId())
            .asIterable()) {
          count += getFraudeByTransId(tra.getKey().getName())
              .countEntities(withLimit(10000));
        }
      }
    }
    return count;
  }

  public static PreparedQuery getByFilter(String kind, Filter filter) {
    DatastoreService ds = Util.getDatastoreServiceInstance();
    Query query = new Query(kind);
    query.setFilter(filter);
    return ds.prepare(query);
  }

  public static PreparedQuery getFraudeByTransId(String trans_id) {
    Filter filter = new FilterPredicate("trans_id", FilterOperator.EQUAL,
        trans_id);
    return getByFilter("Fraude", filter);
  }

  public static PreparedQuery getTransacaoBySesId(long ses_id) {
    Filter filter = new FilterPredicate("ses_id", FilterOperator.EQUAL,
        ses_id);
    return getByFilter("Transacao", filter);
  }

  public static String SearchByNav() {
    long total = countFraudesByNavegador("", "");
    StringBuilder sb = new StringBuilder();
    sb.append("{\"data\": [");
    for (Entity sis : new Navegador().getAll().asIterable()) {
      String nav_nome = sis.getProperty("nav_nome").toString();
      String nav_versao = sis.getProperty("nav_versao").toString();
     
      long count = countFraudesByNavegador(nav_nome, nav_versao);
      sb.append("{\"name\":");
      sb.append("\"" + nav_nome + "\"");
      sb.append(",\"version\":");
      sb.append("\"" + nav_versao + "\"");
      sb.append(",\"count\":");
      sb.append("\"" + count + "\"");
      sb.append(",\"percentage\":");
      sb.append("\"" + String.format("%.2f%%", new Float((count * 100) / (double) total))
          + "\"");
      sb.append("},");
    }
    sb.deleteCharAt(sb.lastIndexOf(","));
    sb.append("]}");
    return sb.toString();
  }
 
 
  private void insertEntities() {
    Localidade.createOrUpdateLocalidade("1", new Float(-13.58), new Float(-51.85), "", "", "", "", "");
    Localidade.createOrUpdateLocalidade("2", new Float(-15.78), new Float(-47.92), "", "", "", "", "");
   
    Cliente.createOrUpdateCliente("1", "joao", "Joao", "Costa", "", "", "", "1");
    Cliente.createOrUpdateCliente("2", "jose", "JOSE", "SILVA", "", "", "", "1");
    Cliente.createOrUpdateCliente("3", "maria", "MARIA", "BENEDITA", "", "", "", "1");
   
    Estabelecimento.createOrUpdateEstabelecimento("1", "", "ESTABELECIMENTO1", "1");
    Estabelecimento.createOrUpdateEstabelecimento("2", "", "ESTABELECIMENTO2", "2");
   
    Midia.createOrUpdateMidia("1", "MIDIA", "", "", "", "1");
    Midia.createOrUpdateMidia("2", "MIDIA", "", "", "", "2");
    Midia.createOrUpdateMidia("3", "MIDIA", "", "", "", "3");
   
    Transacao.createOrUpdateTransacao("1", "", new Double(10), "20130602", "", "1", "1", "1", "1");
    Transacao.createOrUpdateTransacao("2", "", new Double(10), "20130602", "", "1", "2", "2", "1");
    Transacao.createOrUpdateTransacao("3", "", new Double(500.1), "20130602", "", "1", "2", "2", "1");
    Transacao.createOrUpdateTransacao("4", "", new Double(25), "20130602", "", "1", "2", "2", "1");
    Transacao.createOrUpdateTransacao("5", "", new Double(80), "20130602", "", "1", "3", "3", "1");
    Transacao.createOrUpdateTransacao("6", "", new Double(500), "20130602", "", "1", "3", "3", "2");
    Transacao.createOrUpdateTransacao("7", "", new Double(50), "20130602", "", "1", "3", "3", "2");
    Transacao.createOrUpdateTransacao("8", "", new Double(50), "20130602", "", "1", "3", "3", "2");
    Transacao.createOrUpdateTransacao("9", "", new Double(30), "20130602", "", "1", "3", "3", "2");
    Transacao.createOrUpdateTransacao("10", "", new Double(100), "20130602", "", "1", "2", "3", "2");
    Transacao.createOrUpdateTransacao("11", "", new Double(15), "20130602", "", "1", "2", "3", "2");
    Transacao.createOrUpdateTransacao("12", "", new Double(120), "20130602", "", "1", "1", "3", "2");
   
    Fraude.createOrUpdateFraude("1", "FRAUDE1", "TIPO1", "", "09/06/2013", "2");
    Fraude.createOrUpdateFraude("2", "FRAUDE2", "TIPO1", "", "09/06/2013", "3");
    Fraude.createOrUpdateFraude("3", "FRAUDE3", "TIPO1", "", "09/06/2013", "6");
    Fraude.createOrUpdateFraude("4", "FRAUDE4", "TIPO1", "", "09/06/2013", "7");
    Fraude.createOrUpdateFraude("5", "FRAUDE5", "TIPO1", "", "09/06/2013", "10");
    Fraude.createOrUpdateFraude("6", "FRAUDE6", "TIPO1", "", "09/06/2013", "12");
   
    SistemaOperacional sis = new SistemaOperacional();
    sis.createOrUpdate(1, "Windows XP", "5.1", "0");
    sis.createOrUpdate(2, "Windows 7", "6.1", "0");
    sis.createOrUpdate(3, "Ubuntu", "12.04", "0");
    sis.createOrUpdate(4, "Android", "4.1", "1");
    sis.createOrUpdate(5, "Android", "4.2", "1");
    sis.createOrUpdate(6, "iOS", "6.0", "1");
   
    Navegador nav = new Navegador();
    nav.createOrUpdate(1, "Chrome", "27.0");
    nav.createOrUpdate(2, "Firefox", "21.0");
    nav.createOrUpdate(3, "Internet Explorer", "9.0");
   
    Sessao ses = new Sessao();
    ses.createOrUpdate(1, "1", 3, 1, "20130606", "19:30:00");
    ses.createOrUpdate(2, "2", 1, 2, "20130606", "19:31:00");
    ses.createOrUpdate(3, "3", 5, 1, "20130606", "19:32:00");
    ses.createOrUpdate(4, "3", 2, 3, "20130606", "19:35:00");
    ses.createOrUpdate(5, "1", 4, 1, "20130609", "08:31:00");
   
    Transacao.updateSessao("2", 2);
    Transacao.updateSessao("3", 4);
    Transacao.updateSessao("10", 2);
    Transacao.updateSessao("12", 5);
  }



}
TOP

Related Classes of com.google.appengine.codelab.UserStory11Servlet

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.