Challenge Overview

SEC Yield is a standardized yield used across the industry to compare the yields of income generating funds. It is calculated daily for the prior day. In order to calculate SEC yield for a mutual fund, the yield of each qualifying security (think stocks) held by the fund and the income of the qualifying securities held by the fund must be computed first. In the initial phase of this project, we’d like to calculate the security level yields and the security level incomes only. No fund level Yield calculation would be required in phase 1.

This architecture will provide the phase 1 application.

This code challenge is responsible for the customer REST API and its implementation, in addition to add new API to export data in CSV format.

Competition Task Overview

- Extensive implementation notes are provided at method documentation on UML Class Diagrams. Please follow them for implementation.
- Please read the whole Application Design Specification first. All the details not mentioned in this specification are provided in that document.

Customer REST API and Implementation

The classes and interfaces shown in TCUML on the Customer REST API and Mock API Implementation diagrams should be implemented in this challenge.

Please check TCUML for details.
- Implement the classes
- Mock the Persistence in MySQL

getCalculatedSecuritySECData and CSV Export API


getCalculatedSecuritySECData logic should be updated to limit returned data to a configurable number of records, i.e. 100 records.

Also, we need to add new api/function - call it “exportCalculatedSecuritySECData” - to SECYieldController to handle exporting SecuritySECData in CSV file format.

This function will pull SecuritySECData same as done in getCalculatedSecuritySECData except that it will include all the data in the exported file.


Tests

Tests will be classified into unit and functional tests separately. You will need to use mocks, but not create too many mock objects, as it is hard to maintain. Some limited level of mocking is acceptable. Use mockito as the preferred library. It is also expected that you will write full functional tests to validate each piece of functionality.

Technology overview

- Java 8

- REST API

- JSON

- Apache HTTP Server

- Tomcat 8

- Spring Framework 4.x http://projects.spring.io/spring-framework/

- Log4j 1.2 http://logging.apache.org/log4j/1.2/

- Joda-Time 2.9 http://www.joda.org/joda-time/installation.html

Getting Started

- Click THIS LINK to join the sancus-community gitlab group.
- Once you join that group, you will see the repositories:
- Architecture: v1.2 (make sure to use the tagged version)
- Backend: 30054916-code

Existing Documents

- Class Diagrams
- Sequence Diagrams
- Application Design Specification
- Assembly Specifications
- UI Specification
- Swagger API definition

 



Final Submission Guidelines

Deliverables

- All source code, tests and scripts that address the requirements.
- Updates to project README files with an updated deployment requirements or steps.
- Updates to postman.json files to demo the API
- The winner will be asked to make a merge request to the repository.
 

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30054916