**Project Name**: Contacts Import from Yahoo Mail
**Required**: Contacts importer in java.
We need a java class/library to import contacts from Yahoo mail account. The importer class will have a method that accepts credentials of XXX and returns an object graph description in the form of maps and arrays.
The implementation can rely on open source commercially free libraries (with licenses such as BSD, LGPL) which should be supplied with the delivery. Import operations should be efficient and fast, for example, large XML processing based on DOM will not work. Part of the delivery should be a detailed/graphical description of the general object graph.
## Deliverables
**Details**:
1. Input: User credentials, user + pwd
2. Output: List describing the object graph.
3. Entries should be logically grouped together, i.e. if a contact has several sub-sections, entries in each section should be in a seperate map. For example: Contact: { Home: { phone , email } , Work { phone , work } }. On the other hand, if the entry contains home_phone, work_phone, email_1 , email_2 , they all appear in one Object (map).
4. If there are multiple sub-sections, the primary one should be marked.
5. The grabbing method should throw a detailed, explanatory exception if it fails. Preferably an existing java run time exception.
6. The implementation should support java 1.5 and 1.6 (6). Full source code should be supplied.
7. To facilitate our usage of the library, a diagram of the object graph should be supplied. This is a research/revernse engineering job exploring how Yahoo model the data (hierarchies etc.).
8. If the service (Yahoo in this case) supports photo/logos, they should be made available to download. For example, if they are available at a public url, it should be specified. If this url is not public and requires authentication, the authentication procedure must be documented.
9. All available contact details should be imported.
10. The library should gracefully handle all encoding and in no case yield errors due to encoding issues. This includes asian/arabic/hebrew/complex encoding and all UTF.
**Example**:
Class XXXImporter {
.
.
.
(static?) public List<Map<String,String>> getContacts( String user , String pwd ) throws Exception {
}
.
.
.
}
**Result example**:
List --> {
Map --> { first:John, last:Doe , Phone:5551212 , email: <jd@[login to view URL]> , company:cisco , job description:account manager, picture: http:\\yahoo\[login to view URL] } ,
Map --> { first:Bill , last:Marr , phone:5552323 , [email:bill@[login to view URL]][1] } ,
Map --> { first:Martina , middle:van , last:Dirk , List --> {
Map --> { type:Work , [email:martina@[login to view URL]][2] , position:regional sales manager } ,
Map --> { type:Home , [email:[login to view URL]@gmail.<wbr />com][3] , phone:(212)5555656 }
Map --> { type:general, picture:http:\\yahoo\[login to view URL], Birthday: 10-Nov-1990, URL:http:\\[login to view URL]}
}
}
**More
**The library can be used by any program. In our case it is a web server that runs this library and sends the information to a web client.
The buyer owns the web server which activates this code. The code is activated when a web client (user) activates a function on the web browser.
**Deliverable Prior to start development**:
1. list the tasks with a related effort attached i.e, learning the API 1 day, writing the class 3 days,.....and so on
**Deliverable**:
1. Working source code
2. List of required external libraries and their license type
3. Diagram of the returned object graph
4. Unit testing suite to test the code is highly desirable.
5. Test procedure document and test results including:
1. At least 15 Yahoo Mail accounts tested
2. At least 3 accounts over 1000 contacts
3. At least 3 accounts over 2000 contacts
4. Average response time
<!-- -->
1. At least 15 Yahoo Mail accounts tested
2. At least 3 accounts over 1000 contacts
3. At least 3 accounts over 2000 contacts
4. Average response time
6. Known issues or bugs
**Commitments**:
1. The Coder commit to fix bugs submitted during 4 weeks after code was ccepted by the Buyer