// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.xml.v0_6.impl;
import org.openstreetmap.osmosis.core.domain.v0_6.OsmUser;
import org.openstreetmap.osmosis.core.task.v0_6.Sink;
import org.openstreetmap.osmosis.xml.common.BaseElementProcessor;
/**
* Provides common element processor functionality for all entity processors.
*
* @author Brett Henderson
*/
public abstract class EntityElementProcessor extends SourceElementProcessor {
/**
* Creates a new instance.
*
* @param parentProcessor
* The parent of this element processor.
* @param sink
* The sink for receiving processed data.
* @param enableDateParsing
* If true, dates will be parsed from xml data, else the current
* date will be used thus saving parsing time.
*/
public EntityElementProcessor(BaseElementProcessor parentProcessor, Sink sink, boolean enableDateParsing) {
super(parentProcessor, sink, enableDateParsing);
}
/**
* Creates a user instance appropriate to the arguments. This includes
* identifying the case where no user is available.
*
* @param rawUserId
* The value of the user id attribute.
* @param rawUserName
* The value of the user name attribute.
* @return The appropriate user instance.
*/
protected OsmUser buildUser(String rawUserId, String rawUserName) {
if (rawUserId != null) {
int userId;
String userName;
userId = Integer.parseInt(rawUserId);
if (rawUserName == null) {
userName = "";
} else {
userName = rawUserName;
}
return new OsmUser(userId, userName);
} else {
return OsmUser.NONE;
}
}
/**
* Parses a changeset id based on the provided attribute value. If no attribute is available it
* will be defaulted to 0.
*
* @param rawChangesetId
* The raw changeset id attribute value.
* @return The parsed changeset id.
*/
protected long buildChangesetId(String rawChangesetId) {
if (rawChangesetId != null) {
return Long.parseLong(rawChangesetId);
} else {
return 0;
}
}
}