Skip to content

Commit

Permalink
TEIID-5068 updating the retrieval logic
Browse files Browse the repository at this point in the history
  • Loading branch information
shawkins committed Sep 19, 2017
1 parent dcc1709 commit b4b79b5
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
Expand Up @@ -29,6 +29,7 @@

import org.teiid.core.types.ClobImpl;
import org.teiid.core.types.ClobType;
import org.teiid.core.types.ClobType.Type;
import org.teiid.core.util.Assertion;
import org.teiid.couchbase.CouchbaseConnection;
import org.teiid.language.Argument;
Expand All @@ -45,6 +46,7 @@

import com.couchbase.client.java.document.json.JsonArray;
import com.couchbase.client.java.document.json.JsonObject;
import com.couchbase.client.java.document.json.JsonValue;

@Translator(name="couchbase", description="Couchbase Translator, reads and writes the data to Couchbase")
public class CouchbaseExecutionFactory extends ExecutionFactory<ConnectionFactory, CouchbaseConnection> {
Expand Down Expand Up @@ -88,7 +90,7 @@ public List<?> translate(Function function) {
} else if(targetCode == BOOLEAN) {
return Arrays.asList("TOBOOLEAN" + Tokens.LPAREN, param, Tokens.RPAREN);//$NON-NLS-1$
} else {
return Arrays.asList("TOATOM" + Tokens.LPAREN, param, Tokens.RPAREN);//$NON-NLS-1$
return Arrays.asList(param);
}
}});

Expand Down Expand Up @@ -318,8 +320,14 @@ public Object retrieveValue(Class<?> columnType, Object value) throws Translator
}

if(columnType.equals(ClobType.class)) {
boolean json = false;
if (value instanceof JsonValue) {
json = true;
}
ClobImpl clob = new ClobImpl(value.toString());
return new ClobType(clob);
ClobType result = new ClobType(clob);
result.setType(json?Type.JSON:Type.TEXT);
return result;
}

if (columnType.equals(BigInteger.class)) {
Expand Down
Expand Up @@ -17,8 +17,6 @@
*/
package org.teiid.translator.couchbase;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
Expand Down Expand Up @@ -107,7 +105,7 @@ public List<?> next() throws TranslatorException, DataNotAvailableException {
} else if (type == TypeFacility.RUNTIME_TYPES.BIG_DECIMAL) {
value = json.getNumber(columnName);
} else {
value = json.getObject(columnName);
value = json.get(columnName);
}

row.add(this.executionFactory.retrieveValue(type, value));
Expand Down
Expand Up @@ -52,8 +52,8 @@
<entry key="N1QL1102">SELECT TONUMBER(`$cb_c1_attr_string`) FloatNum, TONUMBER(`$cb_c1_attr_string`) LongNum, TONUMBER(`$cb_c1_attr_string`) DoubleNum, TONUMBER(`$cb_c1_attr_string`) ByteNum, TONUMBER(`$cb_c1_attr_string`) ShortValue FROM `T2` `$cb_t1` LET `$cb_c1_attr_string` = `$cb_t1`.`attr_string`</entry>
<entry key="N1QL1103">SELECT TOSTRING(`$cb_c1_attr_integer`) CharValue FROM `T2` `$cb_t1` LET `$cb_c1_attr_integer` = `$cb_t1`.`attr_integer`</entry>
<entry key="N1QL1104">SELECT TONUMBER(`$cb_c1_attr_string`) BigIntegerValue, TONUMBER(`$cb_c1_attr_string`) BigDecimalValue FROM `T2` `$cb_t1` LET `$cb_c1_attr_string` = `$cb_t1`.`attr_string`</entry>
<entry key="N1QL1105">SELECT TOATOM(`$cb_c1_attr_string`) ObjectValue FROM `T2` `$cb_t1` LET `$cb_c1_attr_string` = `$cb_t1`.`attr_string`</entry>
<entry key="N1QL1106">SELECT TOATOM(`$cb_c1_attr_string`) c1, TOATOM(`$cb_c2_attr_integer`) c2, TOATOM(`$cb_c3_attr_boolean`) c3 FROM `T2` `$cb_t1` LET `$cb_c1_attr_string` = `$cb_t1`.`attr_string`, `$cb_c2_attr_integer` = `$cb_t1`.`attr_integer`, `$cb_c3_attr_boolean` = `$cb_t1`.`attr_boolean`</entry>
<entry key="N1QL1105">SELECT `$cb_c1_attr_string` ObjectValue FROM `T2` `$cb_t1` LET `$cb_c1_attr_string` = `$cb_t1`.`attr_string`</entry>
<entry key="N1QL1106">SELECT `$cb_c1_attr_string` c1, `$cb_c2_attr_integer` c2, `$cb_c3_attr_boolean` c3 FROM `T2` `$cb_t1` LET `$cb_c1_attr_string` = `$cb_t1`.`attr_string`, `$cb_c2_attr_integer` = `$cb_t1`.`attr_integer`, `$cb_c3_attr_boolean` = `$cb_t1`.`attr_boolean`</entry>
<entry key="N1QL1107">SELECT STR_TO_UTC(`$cb_c1_attr_string`), STR_TO_UTC(`$cb_c2_attr_string`), STR_TO_UTC(`$cb_c3_attr_string`) FROM `T2` `$cb_t1` LET `$cb_c1_attr_string` = `$cb_t1`.`attr_string`, `$cb_c2_attr_string` = `$cb_t1`.`attr_string`, `$cb_c3_attr_string` = `$cb_t1`.`attr_string`</entry>
<entry key="N1QL0601">SELECT `$cb_c1_Name` c1, `$cb_c2_type` c2 FROM `test` `$cb_t1` LET `$cb_c1_Name` = `$cb_t1`.`Name`, `$cb_c2_type` = `$cb_t1`.`type` WHERE `$cb_c2_type` = 'Customer' ORDER BY `$cb_c1_Name`</entry>
<entry key="N1QL1004">SELECT RANDOM(`$cb_c1_attr_integer`) c1 FROM `T2` `$cb_t1` LET `$cb_c1_attr_integer` = `$cb_t1`.`attr_integer`</entry>
Expand Down

0 comments on commit b4b79b5

Please sign in to comment.