// $Id: gendaml.java,v 1.3 2003/08/04 20:34:23 drager Exp $


class gendaml
{
    /**
     * remove all occurances of ch from string
     */
    public static String remove(String string,
				char ch)
    {
	StringBuffer retval = new StringBuffer(string.length());
	for (int i = 0; i < string.length(); i++)
	    {
		char c = string.charAt(i);
		if (c != ch)
		    retval.append(c);
	    }
	
	return retval.toString();
    }

    static java.text.DateFormat isoDateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd");
    static java.text.DateFormat dbDateFormat = new java.text.SimpleDateFormat("MM/dd/yyyy");

    public static void main(String args[])
	throws Exception
    {
	org.daml.html.Tree tree = new org.daml.html.Tree("http://www.nwc.navy.mil/usnhdb/active_fleet.asp");
	//tree.dump(System.out);

	java.util.TreeSet classes = new java.util.TreeSet();

	com.hp.hpl.mesa.rdf.jena.model.Model model = new com.hp.hpl.mesa.rdf.jena.mem.ModelMem();
	for (int i = 2; true; i++)
	    {
		String row = "html/body/table/tr[" + i + "]/";
		String hull = tree.getString(row + "td[1]/font/text()");
		if (hull == null)
		    break;
		hull = hull.trim();
		String name = tree.getString(row + "td[2]/font/text()").trim();
		String cl = tree.getString(row + "td[3]/font/text()").trim();
		String commissioned = tree.getString(row + "td[4]/font/text()").trim();
		String status = tree.getString(row + "td[5]/font/text()").trim();

		com.hp.hpl.mesa.rdf.jena.model.Resource ship = model.createResource("#" + remove(hull, ' '));
		model.add(ship,
			  com.hp.hpl.mesa.rdf.jena.vocabulary.RDF.type,
			  ship_ont.Ship);
		model.add(ship,
			  ship_ont.hullNumber,
			  hull);
		model.add(ship,
			  ship_ont.name,
			  name);
		model.add(ship,
			  ship_ont.class_,
			  model.createResource("#" + remove(cl, ' ')));
		classes.add(cl);
		model.add(ship,
			  ship_ont.commissioned,
			  isoDateFormat.format(dbDateFormat.parse(commissioned)));
		model.add(ship,
			  ship_ont.status,
			  status);
	    }

	// generate classes
	java.util.Iterator iterator = classes.iterator();
	while (iterator.hasNext())
	    {
		String cl = (String) iterator.next();
		model.add(model.createResource("#" + remove(cl, ' ')),
			  com.hp.hpl.mesa.rdf.jena.vocabulary.RDF.type,
			  ship_ont.Class);
	    }

	// serialize model
	// String outfile = "usnavy.daml";
	String outfile = "usnavy.owl";
	java.io.PrintWriter stream = new java.io.PrintWriter(new java.io.FileOutputStream(outfile));
	stream.println("<?xml version='1.0' encoding='ISO-8859-1'?>");
	model.write(stream);
	stream.close();
    }
}
