Package org.openstreetmap.osmosis.pgsimple.v0_6.impl

Source Code of org.openstreetmap.osmosis.pgsimple.v0_6.impl.WayMapper

// 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.ArrayList;
import java.util.Date;
import java.util.List;

import org.openstreetmap.osmosis.core.OsmosisRuntimeException;
import org.openstreetmap.osmosis.core.domain.v0_6.CommonEntityData;
import org.openstreetmap.osmosis.core.domain.v0_6.Way;
import org.postgis.Geometry;
import org.postgis.PGgeometry;


/**
* Reads and writes way attributes to jdbc classes.
*
* @author Brett Henderson
*/
public class WayMapper extends EntityMapper<Way> {
 
  private boolean supportBboxColumn;
  private boolean supportLinestringColumn;
 
 
  /**
   * Creates a new instance.
   */
  public WayMapper() {
    supportBboxColumn = false;
  }


  /**
   * Creates a new instance.
   *
   * @param supportBboxColumn
   *            If true, the bounding box column will be included in updates.
   * @param supportLinestringColumn
   *            If true, the linestring column will be included in updates.
   */
  public WayMapper(boolean supportBboxColumn, boolean supportLinestringColumn) {
    this.supportBboxColumn = supportBboxColumn;
    this.supportLinestringColumn = supportLinestringColumn;
  }
 
 
  /**
   * {@inheritDoc}
   */
  @Override
  public String getEntityName() {
    return "way";
  }
 
 
  /**
   * {@inheritDoc}
   */
  @Override
  public ActionDataType getEntityType() {
    return ActionDataType.WAY;
  }
 
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Class<Way> getEntityClass() {
    return Way.class;
  }
 
 
  /**
   * {@inheritDoc}
   */
  @Override
  protected String[] getTypeSpecificFieldNames() {
    List<String> fieldNames;
   
    fieldNames = new ArrayList<String>();
   
    if (supportBboxColumn) {
      fieldNames.add("bbox");
    }
    if (supportLinestringColumn) {
      fieldNames.add("linestring");
    }
   
    return fieldNames.toArray(new String[]{});
  }
 
 
  /**
   * {@inheritDoc}
   */
  @Override
  public Way parseRecord(ResultSet resultSet) {
    try {
      return new Way(
        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 way from the current recordset row.", e);
    }
  }
 
 
  /**
   * {@inheritDoc}
   */
  @Override
  public int populateEntityParameters(PreparedStatement statement, int initialIndex, Way way) {
    // Populate the entity level parameters.
    return populateCommonEntityParameters(statement, initialIndex, way);
  }
 
 
  /**
   * Sets entity values as bind variable parameters to an entity insert query.
   *
   * @param statement
   *            The prepared statement to add the values to.
   * @param initialIndex
   *            The offset index of the first variable to set.
   * @param way
   *            The entity containing the data to be inserted.
   * @param geometries
   *            The geometries to store against the way.
   * @return The current parameter offset.
   */
  public int populateEntityParameters(
      PreparedStatement statement, int initialIndex, Way way, List<Geometry> geometries) {
    int prmIndex;
   
    prmIndex = populateEntityParameters(statement, initialIndex, way);
   
    try {
      for (int i = 0; i < geometries.size(); i++) {
        statement.setObject(prmIndex++, new PGgeometry(geometries.get(i)));
      }
     
    } catch (SQLException e) {
      throw new OsmosisRuntimeException(
        "Unable to set the bbox for way " + way.getId() + ".",
        e
      );
    }
   
    return prmIndex;
  }
}
TOP

Related Classes of org.openstreetmap.osmosis.pgsimple.v0_6.impl.WayMapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.