Challenge Overview

Project Overview

We have an existing application that we'd like to convert to to be able to run on Windows and OSX.  To do this we are thinking of migrating to Java.  Once the prototype is complete then we will like to add additinal features that don't exist today to the application.

This project will be a stand alone app that will assist users in mapping source/target fields across different types of data sources (i.e. CSV, SQL Server, Oracle, Salesforce.com)

Challenge Task Overview

This challenge should design the Java architecture for this Migration Mapper Tool.

The Java GUI is already built by Prototype Assembly Challenge by SWT. This architecture should focus on how to create services and integrate the services with Java GUI.

Full workable .NET execution file and all source files will be provided (but no .NET architecture document).

The Java App should have same functions with the existing .NET application.

Key Points

  1. Automate the retrieval of Fields from various sources (Salesforce, Sql Server DB table, MySql DB table, CSV file, field list pasted-in as delimited text, and manual entry), to populate Field object. Architecture should be designed to be easy to add more sources in the future (more kinds of database, more kinds of data files, other cloud/web services).
  2. Map source/target fields to each other and edit them, with transformations and details stored in Mapping object.
  3. Output/export from the tool of Field Lists and Mappings, in a variety of formats.
  4. Save whole project to a (xml?) file that can be opened again later to resume working.

Existing Object Model Introduction:

  • PROJECT
    • the overall container for mappings, source fields, and target fields; plus other properties of the currently-open project.
    • Each Project has these children:  MappingCollection, Source FieldCollection, Target FieldCollection.
  • MAPPINGCOLLECTION -- a strongly typed collection of Mappings.
  • MAPPING
    • a container for the fact that source field(s) should map to target field(s); plus data around Transformation to perform and Comments.
    • Each Mapping has these children:  Source FieldCollection, Target FieldCollection.
  • FIELDCOLLECTION -- a strongly typed collection of Fields.
  • FIELD -- the lowest level object, which represents a field and describes it, such as name, label, datatype, description.
Hierarchy:
  • Project
    • Mappings (MappingCollection)
      • Source Fields (FieldColection)
      • Target Fields (FieldCollection)
    • Source Fields (FieldCollection)
    • Target Fields (FieldCollection)
The reason Mappings have source/target field collections rather than just source/target fields, is to facilitate the mapping of multiple sources to the same target (for example, if you want to concatenate Address Line1 + Line2 + Line3 into single BillingStreet).
 
To simplify things, we could restrict each mapping to allow only 1 Source Field and 1 Target Field.
 

Testing

Please provide manual verification steps in deployment guide.

Technology Overview

  • Java
  • SWT


Final Submission Guidelines

  • Application Design Specification
  • TCUML
  • Assembly Challenge Requirement Specification

ELIGIBLE EVENTS:

2014 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30042100