Home | History | Annotate | Download | only in servlet
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License"); you
      5  * may not use this file except in compliance with the License. You may
      6  * obtain a copy of the License at
      7  *
      8  *     http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
     13  * implied. See the License for the specific language governing
     14  * permissions and limitations under the License.
     15  */
     16 
     17 package com.android.vts.servlet;
     18 
     19 import com.android.vts.entity.TestEntity;
     20 import com.google.appengine.api.datastore.DatastoreService;
     21 import com.google.appengine.api.datastore.DatastoreServiceFactory;
     22 import com.google.appengine.api.datastore.Entity;
     23 import com.google.appengine.api.datastore.Query;
     24 import java.io.IOException;
     25 import java.util.ArrayList;
     26 import java.util.Comparator;
     27 import java.util.HashSet;
     28 import java.util.List;
     29 import java.util.Set;
     30 import java.util.logging.Level;
     31 import javax.servlet.RequestDispatcher;
     32 import javax.servlet.ServletException;
     33 import javax.servlet.http.HttpServletRequest;
     34 import javax.servlet.http.HttpServletResponse;
     35 
     36 /** Servlet for handling requests to display profiling tests. */
     37 public class ShowProfilingListServlet extends BaseServlet {
     38     private static final String PROFILING_LIST_JSP = "WEB-INF/jsp/show_profiling_list.jsp";
     39 
     40     @Override
     41     public PageType getNavParentType() {
     42         return PageType.PROFILING_LIST;
     43     }
     44 
     45     @Override
     46     public List<Page> getBreadcrumbLinks(HttpServletRequest request) {
     47         return null;
     48     }
     49 
     50     @Override
     51     public void doGetHandler(HttpServletRequest request, HttpServletResponse response)
     52             throws IOException {
     53         DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
     54         Query.Filter profilingFilter = new Query.FilterPredicate(
     55                 TestEntity.HAS_PROFILING_DATA, Query.FilterOperator.EQUAL, true);
     56         Query query = new Query(TestEntity.KIND)
     57                             .setFilter(profilingFilter)
     58                             .setKeysOnly();
     59         Set<String> profilingTests = new HashSet<>();
     60         for (Entity test : datastore.prepare(query).asIterable()) {
     61             profilingTests.add(test.getKey().getName());
     62         }
     63 
     64         List<String> tests = new ArrayList<>(profilingTests);
     65         tests.sort(Comparator.naturalOrder());
     66 
     67         response.setStatus(HttpServletResponse.SC_OK);
     68         request.setAttribute("testNames", tests);
     69         RequestDispatcher dispatcher = request.getRequestDispatcher(PROFILING_LIST_JSP);
     70         try {
     71             dispatcher.forward(request, response);
     72         } catch (ServletException e) {
     73             logger.log(Level.SEVERE, "Servlet Excpetion caught : ", e);
     74         }
     75     }
     76 }
     77