// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.pgsimple.v0_6.impl; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; import org.openstreetmap.osmosis.core.OsmosisRuntimeException; import org.openstreetmap.osmosis.core.domain.v0_6.CommonEntityData; import org.openstreetmap.osmosis.core.domain.v0_6.Relation; /** * Reads and writes relation attributes to jdbc classes. * * @author Brett Henderson */ public class RelationMapper extends EntityMapper<Relation> { /** * {@inheritDoc} */ @Override public String getEntityName() { return "relation"; } /** * {@inheritDoc} */ @Override public ActionDataType getEntityType() { return ActionDataType.RELATION; } /** * {@inheritDoc} */ @Override public Class<Relation> getEntityClass() { return Relation.class; } /** * {@inheritDoc} */ @Override protected String[] getTypeSpecificFieldNames() { return new String[] {}; } /** * {@inheritDoc} */ @Override public Relation parseRecord(ResultSet resultSet) { try { return new Relation( new CommonEntityData( resultSet.getLong("id"), resultSet.getInt("version"), new Date(resultSet.getTimestamp("tstamp").getTime()), buildUser(resultSet), resultSet.getLong("changeset_id") ) ); } catch (SQLException e) { throw new OsmosisRuntimeException("Unable to build a relation from the current recordset row.", e); } } /** * {@inheritDoc} */ @Override public int populateEntityParameters(PreparedStatement statement, int initialIndex, Relation relation) { // Populate the entity level parameters. return populateCommonEntityParameters(statement, initialIndex, relation); } }