Last active
December 15, 2015 03:39
-
-
Save matejuh/5196313 to your computer and use it in GitHub Desktop.
Embedded Teiid. The second file is working example.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.ca.teiid; | |
import java.sql.Connection; | |
import java.sql.ResultSet; | |
import java.sql.SQLException; | |
import java.sql.Statement; | |
import javax.resource.cci.ConnectionFactory; | |
import javax.xml.ws.Service.Mode; | |
import org.teiid.adminapi.impl.ModelMetaData; | |
import org.teiid.jdbc.TeiidDriver; | |
import org.teiid.resource.adapter.ws.WSConnectionImpl; | |
import org.teiid.resource.adapter.ws.WSManagedConnectionFactory; | |
import org.teiid.resource.spi.BasicConnectionFactory; | |
import org.teiid.runtime.EmbeddedConfiguration; | |
import org.teiid.runtime.EmbeddedServer; | |
import org.teiid.translator.ws.WSExecutionFactory; | |
import org.teiid.translator.ws.WSExecutionFactory.Binding; | |
public class TeiidEmbeddedPortfolio { | |
private static void buildDeployVDB(EmbeddedServer teiidServer) | |
throws Exception { | |
ModelMetaData xmlModel = new ModelMetaData(); | |
xmlModel.setName("Location"); | |
xmlModel.addSourceMapping("ws-connector", "ws", "source-ws"); | |
teiidServer.deployVDB("Locations", xmlModel); | |
} | |
private static void execute(Connection connection, String sql, | |
boolean closeConn) throws Exception { | |
try { | |
Statement statement = connection.createStatement(); | |
System.out.println("warn1" + statement.getWarnings()); | |
boolean hasResults = statement.execute(sql); | |
System.out.println("warn2" + statement.getWarnings()); | |
if (hasResults) { | |
System.out.println("has result"); | |
ResultSet results = statement.getResultSet(); | |
results.close(); | |
} | |
statement.close(); | |
} catch (SQLException e) { | |
e.printStackTrace(); | |
} finally { | |
if (connection != null && closeConn) { | |
connection.close(); | |
} | |
} | |
} | |
public static void main(String[] args) throws Exception { | |
// now start Teiid in embedded mode | |
EmbeddedConfiguration ec = new EmbeddedConfiguration(); | |
ec.setUseDisk(true); | |
EmbeddedServer teiidServer = new EmbeddedServer(); | |
teiidServer.start(ec); | |
final WSManagedConnectionFactory wsFactory = new WSManagedConnectionFactory(); | |
wsFactory.setEndPointName("http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View"); | |
BasicConnectionFactory<WSConnectionImpl> wsConnection = wsFactory | |
.createConnectionFactory(); | |
teiidServer | |
.addConnectionFactoryProvider( | |
"source-ws", | |
new EmbeddedServer.SimpleConnectionFactoryProvider<ConnectionFactory>( | |
wsConnection)); | |
WSExecutionFactory executionFactory = new WSExecutionFactory(); | |
executionFactory.setDefaultBinding(Binding.HTTP); | |
executionFactory.setDefaultServiceMode(Mode.MESSAGE); | |
teiidServer.addTranslator("ws", executionFactory); | |
buildDeployVDB(teiidServer); | |
// Now query the VDB | |
TeiidDriver td = teiidServer.getDriver(); | |
Connection c = td.connect("jdbc:teiid:Locations", null); | |
execute(c, "select * from Location", true); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.ca.teiid; | |
import java.sql.Connection; | |
import java.sql.ResultSet; | |
import java.sql.ResultSetMetaData; | |
import java.sql.SQLException; | |
import java.sql.Statement; | |
import javax.resource.cci.ConnectionFactory; | |
import javax.xml.ws.Service.Mode; | |
import org.teiid.adminapi.Model.Type; | |
import org.teiid.adminapi.impl.ModelMetaData; | |
import org.teiid.jdbc.TeiidDriver; | |
import org.teiid.metadata.MetadataRepository; | |
import org.teiid.resource.adapter.ws.WSConnectionImpl; | |
import org.teiid.resource.adapter.ws.WSManagedConnectionFactory; | |
import org.teiid.resource.spi.BasicConnectionFactory; | |
import org.teiid.runtime.EmbeddedConfiguration; | |
import org.teiid.runtime.EmbeddedServer; | |
import org.teiid.translator.ws.WSExecutionFactory; | |
import org.teiid.translator.ws.WSExecutionFactory.Binding; | |
public class TeiidEmbeddedPortfolio { | |
private static void buildDeployVDB(EmbeddedServer teiidServer) | |
throws Exception { | |
ModelMetaData xmlModel = new ModelMetaData(); | |
xmlModel.setName("locations"); | |
xmlModel.setSchemaSourceType("native"); | |
xmlModel.addSourceMapping("ws-connector", "ws", "source-ws"); | |
ModelMetaData virt = new ModelMetaData(); | |
virt.setName("locationview"); | |
virt.setModelType(Type.VIRTUAL); | |
virt.setSchemaSourceType("ddl"); | |
virt.setSchemaText( | |
"CREATE view \"virtview\" OPTIONS (UPDATEABLE 'false') as SELECT " + | |
"A.lat AS lat, A.lng AS lng "+ | |
"FROM " + | |
"(EXEC locations.invokeHttp('GET', null, 'http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true')) AS f, " + | |
"XMLTABLE('/GeocodeResponse' PASSING XMLPARSE(DOCUMENT f.result) COLUMNS lat string PATH 'result/geometry/location/lat/text()', lng string PATH 'result/geometry/location/lng/text()') AS A"); | |
teiidServer.deployVDB("Locations", xmlModel, virt); | |
} | |
private static void execute(Connection connection, String sql, | |
boolean closeConn) throws Exception { | |
try { | |
Statement statement = connection.createStatement(); | |
boolean hasResults = statement.execute(sql); | |
if (hasResults) { | |
ResultSet results = statement.getResultSet(); | |
ResultSetMetaData metadata = results.getMetaData(); | |
int columns = metadata.getColumnCount(); | |
System.out.println("Results"); | |
for (int row = 1; results.next(); row++) { | |
System.out.print(row + ": "); | |
for (int i = 0; i < columns; i++) { | |
if (i > 0) { | |
System.out.print(","); | |
} | |
System.out.print(results.getString(i+1)); | |
} | |
System.out.println(); | |
} | |
results.close(); | |
} | |
statement.close(); | |
} catch (SQLException e) { | |
e.printStackTrace(); | |
} finally { | |
if (connection != null && closeConn) { | |
connection.close(); | |
} | |
} | |
} | |
public static void main(String[] args) throws Exception { | |
// now start Teiid in embedded mode | |
EmbeddedConfiguration ec = new EmbeddedConfiguration(); | |
ec.setUseDisk(true); | |
EmbeddedServer teiidServer = new EmbeddedServer(); | |
teiidServer.start(ec); | |
final WSManagedConnectionFactory wsFactory = new WSManagedConnectionFactory(); | |
wsFactory | |
.setEndPointName("https://www.googleapis.com/freebase/v1/search"); | |
BasicConnectionFactory<WSConnectionImpl> wsConnection = wsFactory | |
.createConnectionFactory(); | |
teiidServer | |
.addConnectionFactoryProvider( | |
"source-ws", | |
new EmbeddedServer.SimpleConnectionFactoryProvider<ConnectionFactory>( | |
wsConnection)); | |
WSExecutionFactory executionFactory = new WSExecutionFactory(); | |
executionFactory.setDefaultBinding(Binding.HTTP); | |
executionFactory.setDefaultServiceMode(Mode.MESSAGE); | |
teiidServer.addTranslator("ws", executionFactory); | |
buildDeployVDB(teiidServer); | |
// Now query the VDB | |
TeiidDriver td = teiidServer.getDriver(); | |
Connection c = td.connect("jdbc:teiid:Locations", null); | |
execute(c, "select * from locationview.virtview", true); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment