Version Checker Version Checker

This essay does not describe an existing computer program, just one that should exist. This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. I have no source, object, specifications, file layouts or anything else useful to implementing this project.

This project outline is not like the artificial, tidy little problems you are spoon-fed in school, when all the facts you need are included, nothing extraneous is mentioned, the answer is fully specified, along with hints to nudge you toward a single expected canonical solution. This project is much more like the real world of messy problems where it is up to you to fully the define the end point, or a series of ever more difficult versions of this project, and research the information yourself to solve them.

Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; or give you any additional materials. I have too many other projects of my own.

Though I am a programmer, I don’t do people’s homework for them. That just robs them of an education.

You have my full permission to implement this project in any way you please and to keep all the profits from your endeavour.

Please do not email me about this project without reading the disclaimer above.

The Problem

Every program has a different way to find out that a new version has been released. Unfortunately there is no standard way to check. Further, it is very common for updates to go unnoticed or to get lost. Further, many manufacturers will notify you of micro updates, but not of major ones, or of ones for which there is a charge.

The Plan

What we need is a uniform, quick, automated way of discovering if any of your software is out of date. It works like this. You maintain an SQL (Standard Query Language) database on a webserver that contains the following information about each product. For each customer you maintain the following information: The customer then daily runs a little program that does a lookup by ID, and sends him a list of his products that are not current. If the customer does not check in for a few days, you send him an email with that information in human readable form. You could also provide a web interface where the customer must provide an ID and password.

This leaves the question, where does the information for the product versions come from. Here are some possibilities.

Commercial Considerations

The overhead on your server is almost nothing. This means you can service a very large number of clients with just a desktop computer. The customer does a single tiny record update and gets back a single tiny binary record. The process of propagating the knowledge of a new version to all customers that use it can happen in the background as a batch process.

You could finance the plan with Google Adsense ads, or with a small yearly fee.

Alternate Implementation

This is a much simpler approach to the same problem. You write a Java Web Start application. It has no central database. Every user is responsible for configuring his own apps. It displays a JTable with 6 columns:

Vercheck screenshot

  1. The first column is a status indicator using icons.
  2. The second column is the name of the application.
  3. the third column is the current version number.
  4. The fourth column is the URL of a webpage that can be used to test if the version has changed.
  5. The fifth marker column is a string that exists somewhere on a webpage if the version has not changed. It would usually be the version, but it could be date, or some text in a revision. This string can alternatively be a Java regex to search for on the page. It might be necessary to add other criteria such the header date on a file, or the existence of some file.
  6. The sixth column displays the date the version last changed.
Icons Used in VerCheck to Describe Applications
Icon Meaning
empty empty row
invalid invalid, e.g. bad date, bad/missing URL
unknown status not yet determined
checking In the process of contacting and checking this website
brokenlink Could not contact website, or possibly the page is missing. Could indicate a version change.
unchanged Unchanged, released over a year ago
unchanged Unchanged, released in last year
unchanged Unchanged, released in last month
unchanged Unchanged, released in last week
changed Version has recently changed. A new version is available. The marker is out of date.
Icons Used on VerCheck Command Buttons
Icon Meaning
plus add application at the spot selected
minus remove selected application
check Check all websites for new versions
The sound like a golf ball falling into a hole is what VerCheck makes when it has finished checking all the applications and it is saving the results in the registry. This program is primarily an exercise in using JTables. The user can fill in the app name, url and marker, add, delete, revise, sort etc. Then the user hits a button labelled check for new versions. The program then uses an HTTP GET to fetch each page and search it for the string. The program must persist the data between runs, perhaps using the preferences tools or perhaps the new bundled Derby SQL database.

I have written a version of this simpler version I call VerCheck. I use it to maintain the utilities page.

HTTP
Java Web Start
JTable
preferences
regex
Solar Winds Patch Manager
SQL
URL

available on the web at:

http://mindprod.com/project/vercheck.html
ClustrMaps is down

optional Replicator mirror
of mindprod.com
on local hard disk J:

J:\mindprod\project\vercheck.html
logo
Please the feedback from other visitors, or your own feedback about the site.
Contact Roedy.
Blog
IP:[65.110.21.43]
Your face IP:[54.227.62.141]
You are visitor number 11.