View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Team Mouse Trap - M6

Problem

For M6, we were asked to give out genealogy program an ability to save and load family trees in GEDCOM format. Specifically:


About GEDCOM

GEDCOM is a file format used to store information about family trees. For more information please select one of the links below.


Our Approach

We divided the problem into following parts. One person did the UI for the save and load that included a Squeak built-in file browser. The information on how to open, close, and browse files was copied from the Squeak interface source code of file browser. Another person wrote the save functions that translate the list of Person objects currently in the GenealogyMap into GEDCOM format. Finally, the two remaining members wrote code on how to translate the loaded GEDCOM file into Person objects and load them into GenealogyMap.

UI

As mentioned above, the UI for the GEDCOM interface was modeled after the file browser and used built-in Squeak file abilities.

Save

The process of saving was separated into two parts. In the first part, each individual Person from the person list would have its characteristics analyzed and written in GEDCOM format. Second, each Person would be placed into a family object with other relationships of that person. This was done using the lists of Person objects are the mates and the children of that Person which is gotten from the Person class. When recording the final GEDCOM file, first all the individuals will be translated while at the same time, a family search for each individual would reveal all the families that individual Person is member of. Afterwards, the families would be written into the GEDCOM file. All saving was some in a separate objects that created objects to hold individuals and families as required. In order to make sure that all the relationships were set up correctly in the GEDCOM file, the Check method from M2 was ran on each Person to connect all the relationships.

Load

The loading of the GEDCOM file was done entirely in the GenealogyMap object. It also was subdivided into two parts. In the first part, the GEDCOM file was scanned and parsed, using Squeak code, for tokens and all individuals were separated. In the second part, each individualís relationship would be detected and the Check method would be ran to connect that individual to other Person objects in the family and vise versa.

Outside Software

The saved GEDCOM files are compatible with the program - GED2HTML (http://www.gendex.com/ged2html/) for PC. It translates a GEDCOM file into a number of HTML files for each family and individual person.

Conclusion

Both our design and our implementation of the GEDCOM features were successful. During testing, a minor problem was found with the GED2HTML program not being able to recognize the format used for the storage of an individualís name; however, this was quickly remedied and the format changed. Furthermore, the reuse of the Check feature from M2 for both save and load functions demonstrated good programming style.

Files

UML class diagram [NOTE: remove ".x" from end of filename]
CRC cards
Scenarios
Test Plan
Squeak .st source files