use of org.teiid.core.types.ClobImpl in project teiid by teiid.
the class CouchbaseExecutionFactory method retrieveValue.
public Object retrieveValue(Class<?> columnType, Object value) throws TranslatorException {
if (value == null) {
return null;
}
if (value.getClass().equals(columnType)) {
return value;
}
if (columnType.equals(ClobType.class)) {
boolean json = false;
if (value instanceof JsonValue) {
json = true;
}
ClobImpl clob = new ClobImpl(value.toString());
ClobType result = new ClobType(clob);
result.setType(json ? Type.JSON : Type.TEXT);
return result;
}
if (columnType.equals(BigInteger.class)) {
if (value instanceof BigDecimal) {
return ((BigDecimal) value).toBigInteger();
}
return BigInteger.valueOf(((Number) value).longValue());
}
if (columnType.equals(BigDecimal.class)) {
if (value instanceof BigInteger) {
value = new BigDecimal((BigInteger) value);
} else {
value = BigDecimal.valueOf(((Number) value).doubleValue());
}
}
return value;
}
use of org.teiid.core.types.ClobImpl in project teiid by teiid.
the class ODataSQLBuilder method updateStreamProperty.
public Update updateStreamProperty(EdmProperty edmProperty, final InputStream content) throws TeiidException {
Update update = new Update();
update.setGroup(this.context.getGroupSymbol());
Column column = this.context.getColumnByName(edmProperty.getName());
ElementSymbol symbol = new ElementSymbol(column.getName(), this.context.getGroupSymbol());
update.addChange(symbol, new Reference(0));
Class<?> lobType = DataTypeManager.getDataTypeClass(column.getRuntimeType());
int sqlType = JDBCSQLTypeInfo.getSQLType(column.getRuntimeType());
if (content == null) {
this.params.add(new SQLParameter(null, sqlType));
} else {
Object value = null;
InputStreamFactory isf = new InputStreamFactory() {
@Override
public InputStream getInputStream() throws IOException {
return content;
}
};
if (lobType.isAssignableFrom(SQLXML.class)) {
value = new SQLXMLImpl(isf);
} else if (lobType.isAssignableFrom(ClobType.class)) {
value = new ClobImpl(isf, -1);
} else if (lobType.isAssignableFrom(BlobType.class)) {
value = new BlobImpl(isf);
} else {
throw new TeiidException(ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16031, column.getName()));
}
this.params.add(new SQLParameter(value, sqlType));
}
update.setCriteria(this.context.getCriteria());
return update;
}
use of org.teiid.core.types.ClobImpl in project teiid by teiid.
the class TestJDBCSocketTransport method testGeometryStreaming.
@Test
public void testGeometryStreaming() throws Exception {
StringBuilder geomString = new StringBuilder();
for (int i = 0; i < 600; i++) {
geomString.append("100 100,");
}
geomString.append("100 100");
final GeometryType geo = GeometryUtils.geometryFromClob(new ClobType(new ClobImpl("POLYGON ((" + geomString + "))")));
long length = geo.length();
PreparedStatement s = conn.prepareStatement("select st_geomfrombinary(?)");
s.setBlob(1, new BlobImpl(new InputStreamFactory() {
@Override
public InputStream getInputStream() throws IOException {
try {
return geo.getBinaryStream();
} catch (SQLException e) {
throw new IOException(e);
}
}
}));
ResultSet rs = s.executeQuery();
rs.next();
Blob b = rs.getBlob(1);
assertEquals(length, b.length());
b.getBytes(1, (int) b.length());
toggleInline(false);
rs = s.executeQuery();
rs.next();
b = rs.getBlob(1);
assertEquals(length, b.length());
b.getBytes(1, (int) b.length());
}
Aggregations