// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.pgsnapshot.v0_6.impl;
import java.sql.Array;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Arrays;
import java.util.Map;
/**
* Provides an Array implementation suitable for setting the way nodes column.
*
* @author Brett Henderson
*/
public class WayNodesArray implements Array {
private static String arrayToString(long[] data) {
StringBuilder result;
if (data == null) {
return null;
}
result = new StringBuilder();
result.append('{');
for (int i = 0; i < data.length; i++) {
if (i > 0) {
result.append(',');
}
result.append(data[i]);
}
result.append('}');
return result.toString();
}
private final long[] data;
private final String stringValue;
/**
* Creates a new instance.
*
* @param data
* The array data.
*/
public WayNodesArray(long[] data) {
this.data = data;
this.stringValue = arrayToString(data);
}
/**
* {@inheritDoc}
*/
public String toString() {
return stringValue;
}
/**
* {@inheritDoc}
*/
public Object getArray() throws SQLException {
if (data != null) {
return Arrays.copyOf(data, data.length);
} else {
return null;
}
}
/**
* {@inheritDoc}
*/
public Object getArray(Map<String, Class<?>> map) throws SQLException {
return getArray();
}
/**
* {@inheritDoc}
*/
public Object getArray(long index, int count) throws SQLException {
if (data != null) {
return Arrays.copyOfRange(data, (int) index, (int) index + count);
} else {
return null;
}
}
/**
* {@inheritDoc}
*/
public Object getArray(long index, int count, Map<String, Class<?>> map) throws SQLException {
return getArray(index, count);
}
/**
* {@inheritDoc}
*/
public int getBaseType() throws SQLException {
return Types.BIGINT;
}
/**
* {@inheritDoc}
*/
public String getBaseTypeName() throws SQLException {
return "int8";
}
/**
* {@inheritDoc}
*/
public ResultSet getResultSet() throws SQLException {
throw new UnsupportedOperationException();
}
/**
* {@inheritDoc}
*/
public ResultSet getResultSet(Map<String, Class<?>> map) throws SQLException {
throw new UnsupportedOperationException();
}
/**
* {@inheritDoc}
*/
public ResultSet getResultSet(long index, int count) throws SQLException {
throw new UnsupportedOperationException();
}
/**
* {@inheritDoc}
*/
public ResultSet getResultSet(long index, int count, Map<String, Class<?>> map) throws SQLException {
throw new UnsupportedOperationException();
}
/**
* {@inheritDoc}
*/
public void free() throws SQLException {
}
}