Betsy Rolland
LIS 545 -- Programming for Information Systems

Course Website
Winter 2006

brolland{at}u.washington.edu

Our project opens with a main screen displaying the records in the current default XML data storage file. This default is maintained in an XML file containing the current default, as well as the four most recently used default storage files. At this point, the user has several options. First, he can browse the entries, clicking the "display full record" button to see the entire record. Though our database query retrieves all 5 columns from the database, only three are shown in the data grid, the ID is always hidden, and the whole text fragment is displayed with the click of the display full record button. Figuring out how to display only certain records from the dataset was a challenge. As we discussed in class, if the user sorts by one of the fields in the datagrid, the indexes get out of order and displaying the full record doesn't work.

The user can enter a new text fragment by using the menu item. A new form pops up and allows the user to paste in their data, select which fields to index, grabs the data from the system clock and submits this info to the database. At this point, the information is only in the database, not in the XML storage file. Another major challenge was figuring out how to close this window after the user clicked the submit button. The solution was this.hide;.

In order to view the new piece of data in the datagrid, the user can click the "reload data" button. This was another major challenge, as each time that button was clicked, duplicate records would show up in the grid. After researching the issue, we found that the id/primary key column from the database needed to be included in our query in order to eliminate duplicate records. This became even more challenging as we tried to update all the queries throughout the project!

The user can change the default XML storage file name using a menu and either select an existing file or create a new file. Reloading the datagrid after changing the storage file was another challenge, as we overloaded the "reload data" button to work both for reloading after a new text entry and after a change of storage file name. One requires simply re-querying the database; the other requires reading into the database from a new file, then reloading the datagrid. It is still not working flawlessly, but it is close. Creating a new file, clearing the database and displaying an empty datagrid is still not working well, either. The database gets cleared out, but the datagrid won't update as we'd like.

After the user has finished working with their data, they select "exit and write XML file," which dumps all the data from the database into a file using the name the user has set for their default storage file. The application then exits. If the file already exists, all data is overwritten in the file.

We have a lot of duplicate code in our various classes. Each class has its own copy of the "writeDefaultXMLToFile," for example. It would be more efficient and more "object-oriented" to maintain one copy and share it among the classes.

Another feature we would have liked to implement is a search function. While a user can sort by last name, date or book title, it would also be useful to be able to search the text fragment itself, or even the book title. Also unfinished is our "edit" function, whereby the user could edit an existing fragment. This would simply be a matter of updating the functionality that adds a new row to the database to just update the existing row. We would also like to have added a check on exit to remind the user to save the information to their XML file.

Screenshots:

Files: