// $Id: PropertyList.java,v 1.1 2001/11/02 23:48:00 mdean Exp $


package org.daml.java2daml;	// should be org.daml.jena?


/**
 * help translators keep track of properties
 */
public class PropertyList
{
    public java.util.Set datatypeProperties = new java.util.TreeSet();
    public java.util.Set objectProperties = new java.util.TreeSet();
    /**
     * properties for which no toClass Restriction is generated
     */
    public java.util.Set properties = new java.util.TreeSet();

    void addProperties(com.hp.hpl.mesa.rdf.jena.model.Model model)
	throws Exception
    {
	java.util.Set allProperties = new java.util.TreeSet(properties);
	allProperties.addAll(datatypeProperties);
	allProperties.addAll(objectProperties);

	java.util.Iterator iterator = allProperties.iterator();
	while (iterator.hasNext())
	    {
		String propertyURI = (String) iterator.next();

		boolean datatypeProperty = datatypeProperties.contains(propertyURI);
		boolean objectProperty = objectProperties.contains(propertyURI);
		com.hp.hpl.mesa.rdf.jena.model.Resource type;
		if (datatypeProperty && objectProperty)
		    type = com.hp.hpl.mesa.rdf.jena.vocabulary.RDF.Property;
		else if (datatypeProperty)
		    type = DAML.DatatypeProperty;
		else if (objectProperty)
		    type = DAML.ObjectProperty;
		else
		    type = com.hp.hpl.mesa.rdf.jena.vocabulary.RDF.Property;
		
		com.hp.hpl.mesa.rdf.jena.model.Resource property = model.createProperty(propertyURI);
		model.add(property,
			  com.hp.hpl.mesa.rdf.jena.vocabulary.RDF.type,
			  type);
	    }
    }
}
