summaryrefslogtreecommitdiff
path: root/src/main/java/com/android/vts/servlet/DashboardMainServlet.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android/vts/servlet/DashboardMainServlet.java')
-rw-r--r--src/main/java/com/android/vts/servlet/DashboardMainServlet.java259
1 files changed, 0 insertions, 259 deletions
diff --git a/src/main/java/com/android/vts/servlet/DashboardMainServlet.java b/src/main/java/com/android/vts/servlet/DashboardMainServlet.java
deleted file mode 100644
index 73a7287..0000000
--- a/src/main/java/com/android/vts/servlet/DashboardMainServlet.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright (c) 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may
- * obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-
-package com.android.vts.servlet;
-
-import com.android.vts.entity.TestEntity;
-import com.android.vts.entity.TestStatusEntity;
-import com.android.vts.entity.UserFavoriteEntity;
-import com.google.appengine.api.datastore.DatastoreService;
-import com.google.appengine.api.datastore.DatastoreServiceFactory;
-import com.google.appengine.api.datastore.Entity;
-import com.google.appengine.api.datastore.Key;
-import com.google.appengine.api.datastore.KeyFactory;
-import com.google.appengine.api.datastore.PropertyProjection;
-import com.google.appengine.api.datastore.Query;
-import com.google.appengine.api.datastore.Query.Filter;
-import com.google.appengine.api.datastore.Query.FilterOperator;
-import com.google.appengine.api.datastore.Query.FilterPredicate;
-import com.google.appengine.api.users.User;
-import com.google.appengine.api.users.UserService;
-import com.google.appengine.api.users.UserServiceFactory;
-import com.google.gson.Gson;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.stream.Collectors;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import static com.googlecode.objectify.ObjectifyService.ofy;
-
-/** Represents the servlet that is invoked on loading the first page of dashboard. */
-public class DashboardMainServlet extends BaseServlet {
- private static final String DASHBOARD_MAIN_JSP = "WEB-INF/jsp/dashboard_main.jsp";
- private static final String NO_TESTS_ERROR = "No test results available.";
-
- @Override
- public PageType getNavParentType() {
- return PageType.TOT;
- }
-
- @Override
- public List<Page> getBreadcrumbLinks(HttpServletRequest request) {
- return null;
- }
-
- /** Helper class for displaying test entries on the main dashboard. */
- public class TestDisplay implements Comparable<TestDisplay> {
- private final Key testKey;
- private final int passCount;
- private final int failCount;
- private boolean muteNotifications;
- private boolean isFavorite;
-
- /**
- * Test display constructor.
- *
- * @param testKey The key of the test.
- * @param passCount The number of tests passing.
- * @param failCount The number of tests failing.
- * @param muteNotifications The flag for user notification in case of test failure.
- * @param isFavorite The flag for showing favorite mark on All Tests Tab page.
- */
- public TestDisplay(
- Key testKey,
- int passCount,
- int failCount,
- boolean muteNotifications,
- boolean isFavorite) {
- this.testKey = testKey;
- this.passCount = passCount;
- this.failCount = failCount;
- this.muteNotifications = muteNotifications;
- this.isFavorite = isFavorite;
- }
-
- /**
- * Get the key of the test.
- *
- * @return The key of the test.
- */
- public String getName() {
- return this.testKey.getName();
- }
-
- /**
- * Get the number of passing test cases.
- *
- * @return The number of passing test cases.
- */
- public int getPassCount() {
- return this.passCount;
- }
-
- /**
- * Get the number of failing test cases.
- *
- * @return The number of failing test cases.
- */
- public int getFailCount() {
- return this.failCount;
- }
-
- /**
- * Get the notification mute status.
- *
- * @return True if the subscriber has muted notifications, false otherwise.
- */
- public boolean getMuteNotifications() {
- return this.muteNotifications;
- }
-
- /** Set the notification mute status. */
- public void setMuteNotifications(boolean muteNotifications) {
- this.muteNotifications = muteNotifications;
- }
-
- /**
- * Get the favorate status.
- *
- * @return True if an user set favorate for the test, false otherwise.
- */
- public boolean getIsFavorite() {
- return this.isFavorite;
- }
-
- /** Set the favorite status. */
- public void setIsFavorite(boolean isFavorite) {
- this.isFavorite = isFavorite;
- }
-
- @Override
- public int compareTo(TestDisplay test) {
- return this.testKey.getName().compareTo(test.getName());
- }
- }
-
- @Override
- public void doGetHandler(HttpServletRequest request, HttpServletResponse response)
- throws IOException {
- UserService userService = UserServiceFactory.getUserService();
- User currentUser = userService.getCurrentUser();
- RequestDispatcher dispatcher = null;
- DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
- HttpSession session = request.getSession(true);
- PageType referTo = PageType.TREE;
- if (session.getAttribute("treeDefault") != null) {
- boolean treeDefault = (boolean) session.getAttribute("treeDefault");
- if (!treeDefault) {
- referTo = PageType.TABLE;
- }
- }
-
- List<TestDisplay> displayedTests = new ArrayList<>();
- List<Key> unprocessedTestKeys = new ArrayList<>();
-
- Map<Key, TestDisplay> testMap = new HashMap<>(); // map from table key to TestDisplay
- Map<String, String> subscriptionMap = new HashMap<>();
-
- boolean showAll = request.getParameter("showAll") != null;
- String error = null;
-
- List<String> allTestNames = TestEntity.getAllTestNames();
-
- List<Key> favoriteKeyList = new ArrayList<Key>();
- Filter userFilter =
- new FilterPredicate(UserFavoriteEntity.USER, FilterOperator.EQUAL, currentUser);
- Query filterQuery = new Query(UserFavoriteEntity.KIND).setFilter(userFilter);
- Iterable<Entity> favoriteIter = datastore.prepare(filterQuery).asIterable();
- favoriteIter.forEach(
- fe -> {
- Key testKey = UserFavoriteEntity.fromEntity(fe).testKey;
- favoriteKeyList.add(testKey);
- subscriptionMap.put(testKey.getName(), KeyFactory.keyToString(fe.getKey()));
- });
-
- Query query =
- new Query(TestStatusEntity.KIND)
- .addProjection(
- new PropertyProjection(TestStatusEntity.PASS_COUNT, Long.class))
- .addProjection(
- new PropertyProjection(TestStatusEntity.FAIL_COUNT, Long.class));
- for (Entity status : datastore.prepare(query).asIterable()) {
- TestStatusEntity statusEntity = TestStatusEntity.fromEntity(status);
- if (statusEntity == null) continue;
- Key testKey = KeyFactory.createKey(TestEntity.KIND, statusEntity.getTestName());
- boolean isFavorite = favoriteKeyList.contains(testKey);
- TestDisplay display = new TestDisplay(testKey, -1, -1, false, isFavorite);
- if (!unprocessedTestKeys.contains(testKey)) {
- display =
- new TestDisplay(
- testKey,
- statusEntity.getPassCount(),
- statusEntity.getFailCount(),
- false,
- isFavorite);
- }
- testMap.put(testKey, display);
- }
-
- if (testMap.size() == 0) {
- error = NO_TESTS_ERROR;
- }
-
- if (showAll) {
- for (Key testKey : testMap.keySet()) {
- displayedTests.add(testMap.get(testKey));
- }
- } else {
- if (testMap.size() > 0) {
- for (Entity favoriteEntity : favoriteIter) {
- UserFavoriteEntity favorite = UserFavoriteEntity.fromEntity(favoriteEntity);
- Key testKey = favorite.testKey;
- if (!testMap.containsKey(testKey)) {
- continue;
- }
- TestDisplay display = testMap.get(testKey);
- display.setMuteNotifications(favorite.muteNotifications);
- displayedTests.add(display);
- }
- }
- }
- displayedTests.sort(Comparator.naturalOrder());
-
- response.setStatus(HttpServletResponse.SC_OK);
- request.setAttribute("allTestsJson", new Gson().toJson(allTestNames));
- request.setAttribute("subscriptionMapJson", new Gson().toJson(subscriptionMap));
- request.setAttribute("testNames", displayedTests);
- request.setAttribute("showAll", showAll);
- request.setAttribute("error", error);
- request.setAttribute("resultsUrl", referTo.defaultUrl);
- dispatcher = request.getRequestDispatcher(DASHBOARD_MAIN_JSP);
- try {
- dispatcher.forward(request, response);
- } catch (ServletException e) {
- logger.log(Level.SEVERE, "Servlet Excpetion caught : ", e);
- }
- }
-}