Challenge Overview
1.0 Project Overview
The client wants to create a Google Drive Legal Hold Time Capsule Management Tool. The purpose of this tool is to create an application with a web frontend to allow better management of the Google Drive contents of a Google Apps User once an account has been suspended.
This architecture update will add some additional Admin functionality as outlined in the ARS.
Please refer to the provided updated ARS as well as the original client requirements document.
2.0 Challenge Details
This module will provide the necessary elements of the update including any new data models, exceptions, backend services, frontend controllers/intercepts and HTML/JS.
2.1 Model Classes, ERD and JPA Mapping
You will need to follow the existing Module Architecture and update it with the new requirements. Make sure to follow the same patterns and conventions.
When necessary make sure to provide JPA entities that will be persisted in SQL Server 2012 database, make sure also to include any additions to the database schema and JPA mappings.
2.2 Business Services and Exceptions
Please add any new services and exceptions needed to fulfill the new requirements. Make sure to follow the existing design conventions and patterns.
2.3 REST APIs
You will also need to provide REST APIs for browser/client-side JavaScript to consume, and it is expected that the REST APIs will be implemented using Spring MVC framework.
Please provide the updates for the REST APIs in the accompanied REST_API_Specification.docx. Please follow the conventions used there.
2.4 Frontend UI
The frontend pages will be constructed with HTML5 (with Polymer elements), JavaScript, AJAX and Spring MVC technologies. The frontend Spring MVC controllers are used to handle user requests (in particular REST APIs), HTML5 (with Polymer elements) and JavaScript are used to show the data and interact with user.
Most of the UI should be implemented using Polymer framework (in particular Core elements and Paper elements):
- paper-tabs and paper-tab can be used to implement the tabs
- paper-toast can be used to show info/error messages
- paper-progress can be used to show progress bars
- paper-menu-button can be used to show the action buttons (Download, Download Revision etc.)
- paper-input can be used to implement the simple text input field
- paper-dropdown can be used to implement dropdown list
- paper-dialog can be used to implement popover dialogs
- paper-button can be used to implement buttons
- paper-checkbox can be used to implement check boxes
- core-list can be used to implement tables
- core-ajax can be used to make AJAX requests to call REST APIs.
In general, client-side JavaScript will call REST APIs using Polymer core-ajax and various other Polymer core and paper elements will display data obtained from REST APIs using Polymer data-binding.
As part of your update you will need to provide the controllers and necessary UI elements as done in the previous Module Architecture
Note: Ensure that the Front-End is abstracted out well enough that we could switch to another set of HTML5 elements.
2.5 Parallel execution of document transfer jobs
We want to ensure that when a document transfer jobs is executed we get a scalable solution in terms of how the jobs are run. Please refer consult how the Module Archiecture does its indexing jobs at this time and follow that pattern for scalability.
2.6 Architecture Document update from current BackEnd/REST assembly
During the last Back-End assmebly some changes were done and some of the code does not follow the current architecture. You should also check the REST Assembly for any changes.
Part of your task will be to update the architecture to sync it with the existing back-end assembly. Please show all such updates using a PURPLE color.
3.0 Provided Materials
You will have access to the following support materials (listed in order of importance):
- System Architecture (reference only)
- Module Architecture (you will update this)
- Updated ARS
- Back-End/REST-API Assemblies (you will update sync the Architecture with this code)
- Completed POC with source code and deployment guide (reference only)
- Original Prototype (reference only)
- New Client Document.
Final Submission Guidelines
Your deliverable will consist of a single zip containing:
- Application Design Specification [Updated]
- Assembly Diagram [Updated]
- Class Diagrams [Updated]
- Sequence Diagrams [Updated]
- Assembly Specifications (This is straight to development effort)
- ERD [Updated]
- JPA Mappings [Updated]
- REST Documentation [Updated]
���NOTE: please follow the convention of documenting new additions in RED and updates in BLUE.