// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.pgsnapshot.v0_6.impl;
import java.util.Map;
import org.openstreetmap.osmosis.core.database.DbOrderedFeature;
import org.openstreetmap.osmosis.core.domain.v0_6.WayNode;
import org.springframework.jdbc.core.RowMapper;
/**
* Reads and writes way nodes to jdbc classes.
*
* @author Brett Henderson
*/
public class WayNodeMapper extends EntityFeatureMapper<DbOrderedFeature<WayNode>> {
/**
* {@inheritDoc}
*/
@Override
public String getParentEntityName() {
return "way";
}
/**
* {@inheritDoc}
*/
@Override
public String getEntityName() {
return "way_nodes";
}
/**
* {@inheritDoc}
*/
@Override
public String getSqlSelect(String tablePrefix, boolean filterByEntityId, boolean orderBy) {
StringBuilder resultSql;
resultSql = new StringBuilder();
resultSql.append("SELECT way_id AS entity_id, node_id, sequence_id FROM ");
resultSql.append("way_nodes f");
if (!tablePrefix.isEmpty()) {
resultSql.append(" INNER JOIN ").append(tablePrefix).append(getParentEntityName())
.append("s e ON f.").append(getParentEntityName()).append("_id = e.id");
}
if (filterByEntityId) {
resultSql.append(" WHERE way_id = ?");
}
if (orderBy) {
resultSql.append(getSqlDefaultOrderBy());
}
return resultSql.toString();
}
/**
* {@inheritDoc}
*/
@Override
public String getSqlDefaultOrderBy() {
return super.getSqlDefaultOrderBy() + ", sequence_id";
}
/**
* {@inheritDoc}
*/
@Override
public String getSqlInsert(int rowCount) {
StringBuilder resultSql;
resultSql = new StringBuilder();
resultSql.append("INSERT INTO way_nodes (");
resultSql.append("way_id, node_id, sequence_id) VALUES ");
for (int row = 0; row < rowCount; row++) {
if (row > 0) {
resultSql.append(", ");
}
resultSql.append("(:wayId, :nodeId, :sequenceId)");
}
return resultSql.toString();
}
/**
* {@inheritDoc}
*/
@Override
public String getSqlDelete(boolean filterByEntityId) {
StringBuilder resultSql;
resultSql = new StringBuilder();
resultSql.append("DELETE FROM way_nodes");
if (filterByEntityId) {
resultSql.append(" WHERE ").append("way_id = ?");
}
return resultSql.toString();
}
/**
* {@inheritDoc}
*/
@Override
public void populateParameters(Map<String, Object> args, DbOrderedFeature<WayNode> feature) {
args.put("wayId", feature.getEntityId());
args.put("nodeId", feature.getFeature().getNodeId());
args.put("sequenceId", feature.getSequenceId());
}
/**
* {@inheritDoc}
*/
@Override
public RowMapper<DbOrderedFeature<WayNode>> getRowMapper() {
return new WayNodeRowMapper();
}
}