Challenge Overview

 

1.Project Overview

1.1System Description

When a user is created in Google Apps in an organizational unit with Gmail enabled or moved into an organizational unit with Gmail enabled for the first time several messages are automatically generated in the user’s mailbox. The Welcome Message Removal Tool (WMR Tool) will permanently delete these messages as soon as possible from the user’s Gmail inbox.

1.2Competition Task Overview

A complete list of deliverables can be found in the TopCoder Assembly competition Tutorial at:

http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials

Note: Please read the whole Application Design Specification first. All the details not mentioned in this specification are provided in that document.

This assembly is responsible for implementing the frontend of the application and integrate the back end services to make sure all features work as expected.

Any bugs in existing code should be fixed in this challenge.

REPOST NOTE: SCOPE REDUCED

The search logs are not in the scope.

Note: This project has some similar functions as the Gmail SAD Tool Project. We provide the Gmail SAD Tool code for your reference.

But the submitter is responsible for the correctess of all code in the submission.

If you don't have appirio-dev3.com account, please use contact manager to request the account.

1.2.1Scope

This assembly is responsible for the following: (The search logs are not in the scope.)

  • All classes shown on "Frontend Class Diagram"
  • Relevant JSP pages and JavaScript.

Implementation details for Spring MVC Controllers, interceptor and exception resolvers are provided at TCUML method documentations.

1.2.2Spring MVC Controllers, Interceptors, Exception Resolvers

Implementation details for Spring MVC Controllers, interceptor and exception resolvers are provided at TCUML method documentations.

1.2.3AJAX

This application makes extensive use of AJAX technique to avoid full-page refreshes.

The following is a general guideline for working with AJAX in this application:

$.ajax({

    url : "/search/auditRecords",

    type : "GET",

    success : function() {

        // Perform logic after success

        ...

    },

    error : function(request, status, error) {

        ...

    }

});

AJAX operations in specific JSPs are only explained with the URL to request, HTTP method, request data and operations to do after successful AJAX request.

1.2.4JSP Pages

1.2.4.1header.jsp

This is the JSP that defines a page header fragment.

This JSP should be included by all JSP pages except for header.jsp and footer.jsp.

This JSP fragment includes:

  • Branding elements (logo, etc.)
  • Logout link (URL is retrieved from model attribute "logoutURL")

1.2.4.2footer.jsp

This is the JSP that defines a page footer fragment.

This JSP should be included by all JSP pages except for header.jsp and footer.jsp.

This JSP fragment includes static copyright information.

1.2.4.3forbidden.jsp

This JSP page will display an error message indicating current logged in user does not have permission to access this application.

The Spring application should be configured to show this JSP page for 403 Forbidden response (AuthorizationInterceptor will respond with 403 if current user does not have permission).

Implementation Notes:

  • Show a static error message indicating current user does not have permission too access this application.

1.2.4.5listEmailQueries.jsp

This is the JSP that is used to list email queries. This is the JSP view for EmailQueryController#list.

Implementation Notes:

  • The JSP will make AJAX request to "/search/emailQueries" (EmailQueryController#search) in the HTML document's "onload" event handler with an empty search criteria, and upon receiving success response update the table with the search result in the AJAX response.
  • Filter change, page index change, page size change and sorting will make AJAX request to "/search/emailQueries" (EmailQueryController#search) with a search criteria constructed from the user entered criteria, and upon receiving success response update the users table with the search result in the AJAX response.
  • "Create Email Query" button will show an overlay dialog to gather input
    • User may test the query by clicking "Test Query" button, and an AJAX request will be made to GET "/executeEmailQuery" (EmailQueryController.queryEmailMessages), upon receiving success response display the returned email messages.
    • Upon submitting, make AJAX request to POST "/emailQueries" and upon receiving success response redirect to GET "/users" (EmailQueryController#list)

1.2.4.6listExcludedOrganizationUnits.jsp

This is the JSP that is used to list excluded organization units. This is the JSP view for ExcludedOrganizationUnitController#list.

Implementation Notes:

  • The JSP will make AJAX request to "/search/excludedOrganizationUnits" (ExcludedOrganizationUnitController#search) in the HTML document's "onload" event handler with an empty search criteria, and upon receiving success response update the table with the search result in the AJAX response.
  • Filter change, page index change, page size change and sorting will make AJAX request to "/search/excludedOrganizationUnits" (ExcludedOrganizationUnitController#search) with a search criteria constructed from the user entered criteria, and upon receiving success response update the users table with the search result in the AJAX response.
  • "Delete Selected" button will make AJAX request to DELETE "/excludedOrganizationUnits" with "id" request parameter set, and upon receiving success response redirect to GET "/users" (ExcludedOrganizationUnitController#list).
  • "Create Email Query" button will show an overlay dialog to gather input
    • User may want to see available organization units, and an AJAX request will be made to GET "/availableOrganizationUnits" (ExcludedOrganizationUnitController.getAllAvailableOrganizationUnits), upon receiving success response display the returned organization units.
    • Upon submitting, make AJAX request to POST "/excludedOrganizationUnits" and upon receiving success response redirect to GET "/users" (ExcludedOrganizationUnitController#list)

1.2.4.7listAuditRecords.jsp

This is the JSP that is used to list audit records. This is the JSP view for AuditRecordController#list.

Implementation Notes:

  • The JSP will make AJAX request to "/search/auditRecords" (AuditRecordController#search) in the HTML document's "onload" event handler with an empty search criteria, and upon receiving success response update the users table with the search result in the AJAX response.
  • Filter change, page index change, page size change and sorting will make AJAX request to "/search/auditRecords" (AuditRecordController#search) with a search criteria constructed from the user entered criteria, and upon receiving success response update the users table with the search result in the AJAX response.
  • "Export" button will make GET request to "/export/auditRecords?format=<format>" (with the search criteria collected on the page). The <format> should be "PDF", "CSV" or "GOOGLE_SHEET" according to export format chosen by user.

1.3Deliverables

  • Source code and configuration files.
  • Deployment guide to configure and verify the application.

1.4Technology overview



Final Submission Guidelines

  • Source Code
  • Configuration File
  • Deployment Guide
  • Verification Steps

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30048133