use of org.talend.components.api.component.runtime.Result in project components by Talend.
the class SalesforceTestBase method doWriteRows.
// Returns the rows written (having been re-read so they have their Ids)
protected static void doWriteRows(SalesforceConnectionModuleProperties props, List<IndexedRecord> outputRows) throws Exception {
SalesforceSink salesforceSink = new SalesforceSink();
salesforceSink.initialize(adaptor, props);
salesforceSink.validate(adaptor);
SalesforceWriteOperation writeOperation = salesforceSink.createWriteOperation();
Writer<Result> saleforceWriter = writeOperation.createWriter(adaptor);
writeRows(saleforceWriter, outputRows);
}
use of org.talend.components.api.component.runtime.Result in project components by Talend.
the class CouchbaseReader method getReturnValues.
@Override
public Map<String, Object> getReturnValues() {
Result result = new Result();
result.totalCount = recordCount;
return result.toMap();
}
use of org.talend.components.api.component.runtime.Result in project components by Talend.
the class JDBCInputReader method start.
@Override
public boolean start() throws IOException {
if (container != null) {
container.setComponentData(container.getCurrentComponentId(), CommonUtils.getStudioNameFromProperty(ComponentConstants.RETURN_QUERY), setting.getSql());
}
result = new Result();
try {
conn = source.getConnection(container);
String driverClass = setting.getDriverClass();
if (driverClass != null && driverClass.toLowerCase().contains("mysql")) {
statement = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
Class clazz = statement.getClass();
try {
Method method = clazz.getMethod("enableStreamingResults");
if (method != null) {
// have to use reflect here
method.invoke(statement);
}
} catch (Exception e) {
// ignore anything
}
} else {
statement = conn.createStatement();
}
if (setting.getUseCursor()) {
statement.setFetchSize(setting.getCursor());
}
resultSet = statement.executeQuery(setting.getSql());
return haveNext();
} catch (SQLException e) {
throw CommonUtils.newComponentException(JdbcComponentErrorsCode.SQL_ERROR, e);
} catch (Exception e) {
throw CommonUtils.newComponentException(e);
}
}
use of org.talend.components.api.component.runtime.Result in project components by Talend.
the class SnowflakeRowWriterTest method testWriteWithPreparedStatement.
@Test
public void testWriteWithPreparedStatement() throws IOException, SQLException {
Result result = null;
rowProperties.usePreparedStatement.setValue(true);
Schema schema = SchemaBuilder.builder().record("record").fields().requiredInt("id").requiredString("name").requiredInt("age").endRecord();
rowProperties.table.main.schema.setValue(schema);
rowProperties.afterMainSchema();
Mockito.when(sink.getRuntimeSchema(null)).thenReturn(schema);
rowProperties.preparedStatementTable.indexes.setValue(new ArrayList<Integer>());
IndexedRecord record = Mockito.mock(IndexedRecord.class);
Mockito.when(record.getSchema()).thenReturn(schema);
Mockito.when(record.get(Mockito.anyInt())).thenReturn(1, "nameValue", 46);
PreparedStatement preparedStatement = Mockito.mock(PreparedStatement.class);
Mockito.when(connection.prepareStatement(query)).thenReturn(preparedStatement);
Mockito.when(preparedStatement.executeQuery()).thenReturn(rs).thenThrow(new SQLException("second query failed"));
ResultSetMetaData rsMetadata = Mockito.mock(ResultSetMetaData.class);
Mockito.when(rs.getMetaData()).thenReturn(rsMetadata);
Mockito.when(rsMetadata.getColumnCount()).thenReturn(schema.getFields().size());
// First call is for checking insert/update delete result set column names.
Mockito.when(rsMetadata.getColumnName(Mockito.anyInt())).thenReturn("id", "id", "name", "age");
Mockito.when(rs.next()).thenReturn(true, true, false);
try {
writer.open("id");
writer.write(record);
writer.write(record);
} finally {
result = writer.close();
}
Assert.assertEquals(3, result.totalCount);
Assert.assertEquals(2, result.successCount);
Assert.assertEquals(1, result.rejectCount);
}
use of org.talend.components.api.component.runtime.Result in project components by Talend.
the class SnowflakeRowWriterTest method testWriteWithoutPreparedStatement.
@Test
public void testWriteWithoutPreparedStatement() throws IOException, SQLException {
Result result = null;
Schema schema = SchemaBuilder.builder().record("record").fields().requiredInt("id").requiredString("name").requiredInt("age").endRecord();
rowProperties.table.main.schema.setValue(schema);
rowProperties.usePreparedStatement.setValue(false);
Mockito.when(sink.getRuntimeSchema(null)).thenReturn(schema);
IndexedRecord record = new GenericData.Record(schema);
record.put(0, 1);
record.put(1, "name");
record.put(2, 44);
Statement statement = Mockito.mock(Statement.class);
Mockito.when(connection.createStatement()).thenReturn(statement);
ResultSet rs = Mockito.mock(ResultSet.class);
Mockito.when(statement.executeQuery(query)).thenReturn(rs);
ResultSetMetaData rsMetadata = Mockito.mock(ResultSetMetaData.class);
Mockito.when(rs.getMetaData()).thenReturn(rsMetadata);
Mockito.when(rsMetadata.getColumnName(1)).thenReturn("number of rows inserted");
try {
writer.open("id");
writer.write(record);
} finally {
result = writer.close();
}
Assert.assertEquals(1, result.totalCount);
Assert.assertEquals(1, result.successCount);
Assert.assertEquals(0, result.rejectCount);
}
Aggregations