// License: GPL. Copyright 2007-2008 by Brett Henderson and other contributors.
// Modified by Ruediger Lunde, 2009
package aimax.osm.reader;
import org.xml.sax.Attributes;
import aimax.osm.data.MapBuilder;
/**
* Provides an element processor implementation for an osm element.
* @author Ruediger Lunde
*/
public class OsmElementProcessor extends ElementProcessor {
// private static final Logger LOG = Logger.getLogger("rlu.osm");
private static final String ELEMENT_NAME_BOUND = "bound";
private static final String ELEMENT_NAME_NODE = "node";
private static final String ELEMENT_NAME_WAY = "way";
// private static final String ELEMENT_NAME_RELATION = "relation";
// private static final String ATTRIBUTE_NAME_VERSION = "version";
private BoundElementProcessor boundElementProcessor;
private NodeElementProcessor nodeElementProcessor;
private WayElementProcessor wayElementProcessor;
//private RelationElementProcessor relationElementProcessor;
// private boolean foundBound = false;
// private boolean foundEntities = false;
/**
* Creates a new instance.
*
* @param parentProcessor
* The parent of this element processor.
* @param mdConsumer
* The sink for receiving processed data.
*/
public OsmElementProcessor(ElementProcessor parentProcessor,
MapBuilder mdConsumer) {
super(parentProcessor, mdConsumer);
boundElementProcessor = new BoundElementProcessor(this, getMapBuilder());
nodeElementProcessor = new NodeElementProcessor(this, getMapBuilder());
wayElementProcessor = new WayElementProcessor(this, getMapBuilder());
//relationElementProcessor = new RelationElementProcessor(this, getConsumer());
}
/**
* {@inheritDoc}
*/
public void begin(Attributes attributes) {}
/**
* Retrieves the appropriate child element processor for the newly
* encountered nested element.
*
* @param uri
* The element uri.
* @param localName
* The element localName.
* @param qName
* The element qName.
* @return The appropriate element processor for the nested element.
*/
@Override
public ElementProcessor getChild(String uri, String localName, String qName) {
if (ELEMENT_NAME_BOUND.equals(qName)) {
return boundElementProcessor;
} else if (ELEMENT_NAME_NODE.equals(qName)) {
// foundEntities = true;
return nodeElementProcessor;
} else if (ELEMENT_NAME_WAY.equals(qName)) {
// foundEntities = true;
return wayElementProcessor;
// } else if (ELEMENT_NAME_RELATION.equals(qName)) {
// foundEntities = true;
// return relationElementProcessor;
}
return super.getChild(uri, localName, qName);
}
/**
* {@inheritDoc}
*/
public void end() {}
}