worklog logo
Time Tracking Utility  
 
SourceForge logo

Background

I needed a tool to keep track of the time I spend on various clients and projects. Ideally, this tool would also be able to simplify the information retrieval in various ways:

  • First of all, it should be possible to filter the records based on natural periods of time such as months, weeks, ... as well as clients, projects and activities.
  • For more complex tasks, a small report generator should be able to generate and display (and save, of course) HTML-formatted reports.

The entry of work information should be simple and straight-forward without too many restrictions. This means that the records are losely related to each other. For example, a work entry might contain a client name which doesn't exist in the client table. Worklog should merely ask whether or not to add the new client but, regardless of the answer to this question, add the new entry to the work table, anyway.

I dismissed a database-based approach simply because most databases (even the clients) available today consume more memory than a few thousand entries in the work log and are typically much slower. As a positive side-effect, there's no need for 3rd-party software or modules to be installed besides core Java.

All files should be in text format because this way they can be edited with simple text editors for more complex tasks such as regex search-and-replace operations, merging multiple files, conversions into different formats, you name it....

XML was not an issue for me because it's rather hard to read in a text editor and would take more space. Thus, I used a simple text format which uses bracketed section delimiters and comma-separated strings for the individual entries:

[Work]
"2000-03-01","13:00","16:00","00:00","03:00","Client X","Project Y","Activity Z","Setting up the project","Had to install everything from scratch","200"
....

[Clients]
"Client X","","0",""
....