Challenge Overview
Project Overview
As you might have already known, TopCoder is now part of Appirio, creating the world's largest professional development and design commuity. TopCoder and CloudSpokes will eventually be merged together, and one of the very first steps is to merge the user accounts of two platforms.
For this contest, we are going to implement a loader that will load CloudSpokes contest data into TopCoder's contest related tables.
Competition Task Overview
The purpose of this contest is to implement a loader to load CloudSpokes contest data into TopCoder's contest related tables.
Source & Destination
The source from which to load CloudSpokes contest data will be an Excel spreadsheet. The destination should be TopCoder's contest related tables, we provided mapping file from their data to TC's data but you still need to analyze the provided references to figure out which exact tables to insert data to. We'll also provide sample contest data from CloudSpokes.
Notes:
1. Columns not in the mapping file can be ignored.
2. We don't need any billing related setting on contest or project.
3. We have user_permission_grant which is used for project permission, so if a contest has a project (TC Direct Project), and when we add resources (manager/observer), we need to add them to project (give full access).
Scope
For this contest, we'll also load data into the the project related tables and thus complete the loader so it correctly loads data into all tables involved.
You should start with the part 1 loader and add logic to load data into other tables too. If part 1 has bugs these need to be fixed too.
The mappings file contains good level of details regarding which tables to load data into and you should carefully review that document.
Also in case you're not sure, the easist way to find out which exact tables are affected is to create a new contest in your VM, and then check for new records in all tables. You must make sure all project related tables are correctly populated by this contest.
Existing Loaders
This new loader needs to follow the existing loader (such as https://coder.topcoder.com/internal/web_module/trunk/src/main/com/topcoder/utilities/dwload/TCLoadTCS.java), which has a script and xml config file.
More existing loaders can be found at: https://coder.topcoder.com/internal/web_module/trunk/scripts/dwload
Errors
Unexpected errors should not cause the whole loading process to fail, instead rows/records that caused errors should be logged and the loader should continue with the remaining records.
Transaction
Do NOT use one big transaction for all data, commit a transation for every 50 contests.
Progress
While loading the data, the tool should show some progress (in console).
Report
After the loader is done with loading the data, we need to see a report of the results (for example: how many records are imported, how many fail and which exact ones fail, etc...)
Logging
The tool should log detailed debug/warn/error info during the load process.
Command Line
The same command line options used in part 1 should be followed.
References
In the past studio related data were in a different set of tables, and this is the loader we wrote to migrate the data. It's a little old, but hope to help as how/what to insert some the tables, just a reference, as things have been changed after that.
Method public FullProjectData createProject(Project projectHeader, com.topcoder.project.phases.Project projectPhases, Resource[] projectResources, String operator) calls project manager (project/project_info), phase manager (project_phase/phase_criteria/phase_dependency), and resource manager (resource/resource_info).
3. http://community.topcoder.com/tc?module=ProjectDetail&pj=30036102
This is the spec for part 1 contest.
SVN
Please email support@topcoder.com to request access to direct trunk and any other SVN paths listed above and below, please include the contest title/link and your user name in the email.
Trunk: https://coder.topcoder.com/internal/web_module/trunk/src/main/com/topcoder/utilities/dwload/cloudspokes
DB Trunk: https://coder.topcoder.com/internal/database/scripts/trunk
TC Web: https://coder.topcoder.com/internal/web_module/trunk
VM
VM specific information is found here: http://www.topcoder.com/wiki/display/docs/VM+Image+2.5.
Upon registration as a submitter or reviewer you will need to request a VM based on the new TopCoder Cockpit/Direct image. To request your image, please use the forum.
Before requesting your VM, you need to ensure that you have an SSH key created and in your member profile. Instructions to do so are here:http://www.topcoder.com/wiki/display/projects/Generate+SSH+Key, and instructions to connect afterwards are here: http://www.topcoder.com/wiki/display/projects/Connect+Using+SSH+Key.
There is a TC Site Resource page that contains documentation / instructions for the VM instance you will be issued upon request. It is located here:http://www.topcoder.com/wiki/display/projects/Cockpit%2CDirect+VM
Technology Overview
- Java 1.5
- Excel
- Apache POI
- JSP
- Struts 2
- Redhat Linux
- JBoss 4.0.2
- Informix 11
Final Submission Guidelines
Submission Deliverables
- Source code which are necessary to meet all the requirements stated above.
- The competitor should provide a deployment document. This document should include a step-by-step guide on how to use and verify the tool.
- Test data to verify your submission.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.