From OpenLaszlo
Here is the two jsp. Because Oracle XSU deals with elements, in Laszlo we convert every tablerow-elements
into nodes with attributes and vica-versa.
This is the ToOracle jsp:
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ page language="java" import="java.util.*"%>
<%@ page language="java" import="java.lang.*"%>
<%@ page language="java" import="java.sql.*"%>
<%@ page language="java" import="oracle.xml.sql.dml.OracleXMLSave"%>
<%
// Create connection
Connection connection = null;
String xmlString = "";
try {
String action = request.getParameter("action");
int actionInt = 0;
if (action.equals("update"))
{
actionInt = 1;
}
if (action.equals("delete"))
{
actionInt = 2;
}
String tableName = request.getParameter("tableName");
String tableKeys = request.getParameter("tableKeys");
String curXML = request.getParameter("curXML");
String oraHostName = request.getParameter("oraHostName");
String dbName = request.getParameter("dbName");
String usrName = request.getParameter("usrName");
String usrPwd = request.getParameter("usrPwd");
if (oraHostName == null || oraHostName == "") {
oraHostName = "Hostname";
}
if (dbName == null || dbName == ""){
dbName = "DataBaseName";
}
if (usrName == null || usrName == ""){
usrName = "UserName";
}
if (usrPwd == null || usrPwd == ""){
usrPwd = "Password";
}
Class.forName("oracle.jdbc.driver.OracleDriver");
String conStr = "jdbc:oracle:thin:@" + oraHostName + ":1521:"+ dbName;
connection = DriverManager.getConnection(conStr, usrName, usrPwd);
if (curXML != null && curXML != "")
{
// curXML = "<?xml version='1.0' encoding='utf-8'?>"+ "\n" + curXML;
System.out.println("curXML: " + curXML);
OracleXMLSave sav = new OracleXMLSave(connection, tableName);
// load columns of compound key into array keyColumns
// from string tableKeys with format: key1 key2 key3 ... keyN
// ...start
String[] keyColumns;
int rows=0;
int pStart = 0;
int pEnd = 0;
boolean ok = true;
while( (tableKeys.length()> 0) && ok)
{
pEnd = tableKeys.indexOf(" ", pStart);
if (pEnd < 0)
{
ok = false;
}
pStart = pEnd + 1;
rows++;
}
keyColumns = new String[rows];
ok = true;
rows = 0;
pStart = 0;
while( (tableKeys.length()> 0) && ok)
{
pEnd = tableKeys.indexOf(" ", pStart);
if (pEnd < 0)
{
ok = false;
pEnd = tableKeys.length();
}
String sor = tableKeys.substring(pStart, pEnd);
pStart = pEnd + 1;
keyColumns[rows] = sor;
rows++;
}
// ...end
switch (actionInt)
{
case 0:
sav.insertXML(curXML);
break;
case 1:
sav.setKeyColumnList(keyColumns);
sav.updateXML(curXML);
break;
case 2:
sav.setKeyColumnList(keyColumns);
sav.deleteXML(curXML);
break;
default:
}
xmlString = "<ROWSET><ROW>OK</ROW></ROWSET>";
}
}
catch (SQLException se) {
se.printStackTrace();
xmlString = "<ROWSET><ROW><![CDATA[" + se.getMessage()+ "]]></ROW></ROWSET>";
}
catch (Exception e) {
e.printStackTrace();
xmlString = "<ROWSET><ROW><![CDATA[" + e.getMessage()+ "]]></ROW></ROWSET>";
} finally {
try {
connection.close();
} catch (SQLException e) {
}
}
%>
<%=xmlString%>
This is the FromOracle jsp
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ page language="java" import="java.util.*"%>
<%@ page language="java" import="java.io.*" %>
<%@ page language="java" import="java.lang.*"%>
<%@ page language="java" import="java.sql.*" %>
<%@ page language="java" import="oracle.xml.sql.query.OracleXMLQuery" %>
<%
// Create connection
Connection connection = null;
String xmlString = "";
try {
request.setCharacterEncoding("UTF-8");
String querySrc = request.getParameter("sqlQuerySrc"); // get an sql statement used as a parameter to OracleXMLQuery
String oraHostName = request.getParameter("oraHostName");
String tableName = request.getParameter("tableName");
String dbName = request.getParameter("dbName");
String usrName = request.getParameter("usrName");
String usrPwd = request.getParameter("usrPwd");
if (oraHostName == null || oraHostName == "") {
oraHostName = "HostName";
}
if (dbName == null || dbName == ""){
dbName = "DatabaseName";
}
if (usrName == null || usrName == ""){
usrName = "UserName";
}
if (usrPwd == null || usrPwd == ""){
usrPwd = "Password";
}
Class.forName("oracle.jdbc.driver.OracleDriver"); // get Connection to the Oracle database
String conStr = "jdbc:oracle:thin:@" + oraHostName + ":1521:"+ dbName;
connection = DriverManager.getConnection(conStr, usrName, usrPwd);
OracleXMLQuery qry = new OracleXMLQuery(connection, querySrc);
qry.setEncoding("UTF-8");
qry.setRowIdAttrName("");
xmlString = qry.getXMLString();
int xml_sor_vege = xmlString.indexOf("?>");
if (xml_sor_vege != -1)
xmlString = xmlString.substring(xml_sor_vege+2, xmlString.length());
}
catch (Exception e) {
xmlString = "ERROR: " + e.getMessage();
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
}
}
%>
<%=xmlString%>