You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2007/03/26 18:17:42 UTC

svn commit: r522563 - in /incubator/tuscany/sandbox/lresende/ajaxDAS/src/main: java/org/apache/tuscany/samples/das/util/XmlUtil.java java/org/apache/tuscany/samples/web/CommandServlet.java webapp/WEB-INF/web.xml webapp/index.jsp webapp/js/ajax.js

Author: lresende
Date: Mon Mar 26 09:17:40 2007
New Revision: 522563

URL: http://svn.apache.org/viewvc?view=rev&rev=522563
Log:
Updating with contents of Amita's patch for Tuscany-800.

Modified:
    incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/das/util/XmlUtil.java
    incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/web/CommandServlet.java
    incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/WEB-INF/web.xml
    incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/index.jsp
    incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/js/ajax.js

Modified: incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/das/util/XmlUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/das/util/XmlUtil.java?view=diff&rev=522563&r1=522562&r2=522563
==============================================================================
--- incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/das/util/XmlUtil.java (original)
+++ incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/das/util/XmlUtil.java Mon Mar 26 09:17:40 2007
@@ -41,7 +41,13 @@
             posEndElement += + xmlEndElement.length();
         
         //return xml contents for the requested element
-        return xmlString.substring(posStartElement, posEndElement);
+        String result = 
+        "<?xml version='1.0' encoding='ISO-8859-1' ?> \n"+
+        "<root  xmlns:das='http://org.apache.tuscany.das.rdb/config.xsd' \n"+ 
+        "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'> \n"+
+        xmlString.substring(posStartElement, posEndElement)+"\n"+
+        " </root>";
+        return result;
     }
 
 }

Modified: incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/web/CommandServlet.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/web/CommandServlet.java?view=diff&rev=522563&r1=522562&r2=522563
==============================================================================
--- incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/web/CommandServlet.java (original)
+++ incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/java/org/apache/tuscany/samples/web/CommandServlet.java Mon Mar 26 09:17:40 2007
@@ -26,10 +26,14 @@
 import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 import java.io.PrintWriter;
+import java.io.StringReader;
+import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Properties;
 
+import javax.servlet.http.HttpServlet;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -37,7 +41,6 @@
 
 import org.apache.tuscany.das.rdb.Command;
 import org.apache.tuscany.das.rdb.DAS;
-import org.apache.tuscany.samples.das.Constants;
 import org.apache.tuscany.samples.das.util.XmlUtil;
 
 import commonj.sdo.DataGraph;
@@ -48,10 +51,9 @@
  * @author lresende
  *
  */
-public class CommandServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
-    private static final long serialVersionUID = 4153201214773140451L;
-
-    /*
+public class CommandServlet extends HttpServlet {
+    
+	/*
      * (non-Java-doc)
      * 
      * @see javax.servlet.http.HttpServlet#HttpServlet()
@@ -59,7 +61,7 @@
     public CommandServlet() {
         super();
     }
-
+    
     /*
      * (non-Java-doc)
      * 
@@ -80,43 +82,102 @@
         doTask(request, response);
     }
 
-
-    protected void doTask(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        String command = request.getParameter(Constants.COMMAND);
-        if (command == null || command.trim().length() == 0) {
-            //doError(request, response, "Invalid Command URL -> COMMAND is NULL", null);
+	public void doTask(HttpServletRequest req, HttpServletResponse resp)
+		throws ServletException, IOException {
+		String qry = null;
+		String command = null;
+
+		qry = req.getParameter("sqlQuery");
+		command = req.getParameter("DasCommand");
+	
+        if ((command == null || command.trim().length() == 0)&&
+        		(qry == null || qry.trim().length() == 0)){
+            writeResponse(resp, "Invalid Command URL -> COMMAND is NULL");
         }
         
-        
-        if (command.equalsIgnoreCase(Constants.COMMAND_EXECUTE_QUERY)) {
-            doSQL_Query(request, response);
-        } else {
-            //doError(request, response, "Invalid Command : '" + command + "'", null);
-        }
-    }
-    
-    private InputStream getConfig(String fileName) {
+		if (qry != null) {
+			String status = null;
+			InputStream xslStr = getXSL(qry);
+			try{
+				status = transformDOM(this.getResult(qry, "query"), xslStr);
+			}catch(Exception e){
+				status = e.getMessage();
+			}
+		    
+			this.writeResponse(resp, status);
+		}
+		
+		if (command != null) {
+			String status = null;
+			InputStream xslStr = getXSL(command);
+			try{
+				status = transformDOM(this.getResult(command, "command"), xslStr); 
+			}catch(Exception e){
+				status = e.getMessage();
+			}
+		    
+			this.writeResponse(resp, status);
+		}			
+	}
+	
+	private InputStream getConfig(String fileName) {
         return getClass().getClassLoader().getResourceAsStream(fileName);
     }
-    
-    private String getPostContent(HttpServletRequest request)throws IOException {
-        StringBuffer postContents = new StringBuffer(request.getContentLength());
+	
+	private InputStream getXSL(String qryKey) throws IOException{
+		Properties xslProps = new Properties();
+		xslProps.load(getClass().getClassLoader().getResourceAsStream("QueryXSLMapping.properties"));
+		String xslFileName = (String)xslProps.get(qryKey);
+		System.out.println("xsl File Name:"+xslFileName);
+		
+		return getClass().getClassLoader().getResourceAsStream(xslFileName);
+    }
+	
+	public static String transformDOM(String xmlStr, InputStream xslStr) throws javax.xml.transform.TransformerException{	 
+	    javax.xml.transform.Source xmlSource =
+	        new javax.xml.transform.stream.StreamSource(new StringReader(xmlStr));
+	    javax.xml.transform.Source xsltSource =
+	        new javax.xml.transform.stream.StreamSource(xslStr);
+	    StringWriter xmlStrWrtr = new StringWriter();
+	    javax.xml.transform.Result result =
+	    	new javax.xml.transform.stream.StreamResult(xmlStrWrtr);
+	 
+	    // create an instance of TransformerFactory
+	    javax.xml.transform.TransformerFactory transFact =
+	        javax.xml.transform.TransformerFactory.newInstance( );
+	 
+	    javax.xml.transform.Transformer trans =
+	        transFact.newTransformer(xsltSource);
+	 
+	    trans.transform(xmlSource, result);
+	    
+	    System.out.println("result:"+xmlStrWrtr.toString());
+	    return xmlStrWrtr.toString();
+	 }
+
+	public void writeResponse(HttpServletResponse resp, String output) throws IOException {
+		resp.setContentType("text/text");
+		resp.setHeader("Cache-Control", "no-cache");
+		resp.getWriter().write(output);
+	}
+	
+    protected String getResult(String qry, String qryOrCommand) throws Exception {
+        System.out.println("Query: " + qry);
         
-        BufferedReader in = new BufferedReader(new InputStreamReader(request.getInputStream()));
-        postContents.append(in.readLine());
-                
-        return postContents.toString();
+        DAS das = DAS.FACTORY.createDAS(getConfig("DasConfig.xml"));
+        Command read = null;
+        DataObject root = null;
+        DataGraph graph = null;
         
-    }
-    
-    protected void doSQL_Query(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        String query = getPostContent(request);
-        System.out.println("Query: " + query);
+        if(qryOrCommand.equals("query")){
+	        read = das.createCommand(qry);
+        }
+        if(qryOrCommand.equals("command")){
+	        read = das.getCommand(qry);
+        }
         
-        DAS das = DAS.FACTORY.createDAS(getConfig("DasConfig.xml"));
-        Command read = das.createCommand(query);
-        DataObject root = read.executeQuery();
-        DataGraph graph = root.getDataGraph();
+        root = read.executeQuery();
+        graph = root.getDataGraph();
 
         OutputStream out = new ByteArrayOutputStream();
         ObjectOutputStream oos = new ObjectOutputStream(out);
@@ -125,25 +186,10 @@
         
         String xmlSerializationContent = out.toString();
         String xmlContent = XmlUtil.getXmlContents(xmlSerializationContent, "<das:DataGraphRoot>", "</das:DataGraphRoot>");
-        //int xmlStart = xmlSerializationContent.indexOf("<?xml"); 
-        
-        //String xmlContent = xmlSerializationContent.substring(xmlStart); 
-        
-        PrintWriter writer=response.getWriter();
-        writer.write(xmlContent);
-        
-        
-        System.out.print(xmlContent);
         
-        List allCompanies = new ArrayList(root.getList("COMPANY"));
-        Iterator iCompanies = allCompanies.iterator();
-        while( iCompanies.hasNext()){
-            DataObject company = (DataObject) iCompanies.next();
-            System.out.println(company.getString("NAME"));
-        }
-        
-    }
-
+        System.out.println(xmlContent);
+        return xmlContent;
+    }	
     
     // Utility methods
 
@@ -163,5 +209,5 @@
         RequestDispatcher dispatch = getServletContext().getRequestDispatcher(url);
         dispatch.forward(request, response);
     }
-
-}
\ No newline at end of file
+    
+}

Modified: incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/WEB-INF/web.xml?view=diff&rev=522563&r1=522562&r2=522563
==============================================================================
--- incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/WEB-INF/web.xml (original)
+++ incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/WEB-INF/web.xml Mon Mar 26 09:17:40 2007
@@ -17,25 +17,22 @@
 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
 Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
 
-<web-app>
-    <display-name>Tuscany DAS Features</display-name>
-
+<web-app id="WebApp">
+	<display-name>Tuscany DAS Features</display-name>
     <welcome-file-list id="WelcomeFileList">
         <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
-    
    	<!-- Command Servlet -->
 	<servlet>
 		<display-name>CommandServlet</display-name>
 		<servlet-name>CommandServlet</servlet-name>
 		<servlet-class>org.apache.tuscany.samples.web.CommandServlet</servlet-class>
 	</servlet>
-
 	<servlet-mapping>
 		<servlet-name>CommandServlet</servlet-name>
 		<url-pattern>/CommandServlet</url-pattern>
 	</servlet-mapping>
-
+	
 	<!-- JSTL Tag Library Descriptors -->
         <taglib>
 		<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
@@ -44,6 +41,5 @@
 	<taglib>
 		<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
 		<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
-	</taglib>
-
+	</taglib>	
 </web-app>

Modified: incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/index.jsp
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/index.jsp?view=diff&rev=522563&r1=522562&r2=522563
==============================================================================
--- incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/index.jsp (original)
+++ incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/index.jsp Mon Mar 26 09:17:40 2007
@@ -21,66 +21,74 @@
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
 
 <html>
+
 <head>
 <title>DAS Features</title>
-
 <link href="default.css" rel="stylesheet" type="text/css">
-<script src="js/ajax.js"></script>
-
-<script type="text/javascript">
-function executeQuery(){
-   var url = "CommandServlet?COMMAND=EXECUTE_QUERY";
-   var query = document.getElementById("sqlQuery").value;
-   
-   doPost(url, query);
-}
-
+<script type="text/javascript" src="/sample-ajax-das-1.0-incubator-SNAPSHOT/js/ajax.js" >
 </script>
 </head>
 
-<body bgcolor="#ffffff">
+<body onload="startup()">
+<%@ page import="java.util.*" %>
+
+<font face="Arial,Helvetica,Verdana" size="3">
 
    <table width="90%" border="0" align="center">
       <tr><td><b><i>Tuscany DAS</i></b></td></tr>
    </table>
    <hr width="90%" size="1">
    
-
-   <table width="90%" border="0" align="center" cellspacing="0" cellpadding="2">
-       <tr><td><b>Database SQL Query:</b></td></tr>
-   </table>
-
    <br>
    <br>
-   <table width="90%" border="0" align="center" cellspacing="0" cellpadding="2">
-      <tr> 
-          <td width="50%">SQL Query</td> 
-      </tr>
-      <tr>
-          <td width="100%">
-             <textarea style="width:100%;height:100%" id="sqlQuery">select * from COMPANY</textarea>
-          </td> 
-      </tr>
-      <tr> 
-          <td>
-            <a href="javascript:executeQuery()")>Execute</a>
-         </td> 
-      </tr>
-      <tr>
-          <td>&nbsp;</td> 
-      </tr>
-      <tr>
-      	<td width="50%">Query Results</td>
-      </tr>
-      <tr>
-         <td>
-            <div id="content"></div>
-         </td>
-      </tr>
       
+<form name="DasForm" action="/sample-ajax-das-1.0-incubator-SNAPSHOT/CommandServlet">
+<b>Adhoc SQL Query: </b>
+<input type="text" id="sqlQuery" name="sqlQuery" value="select * from company"
+	onclick="this.form.queryButton.disabled=false;
+			this.form.commandButton.disabled=true;">
+</input> 
+&nbsp; &nbsp;
+<input type="button" name="queryButton" value="ExecuteQuery" 
+	onclick="executeQuery(this.form);
+	msg.innerHTML = 'Retreiving result..please wait' " 
+	disabled>
+</input>
+<hr>
+
+<b>DAS Command: </b>
+
+<select id="DasCommand" name="DasCommand" 	
+	onfocus="this.form.queryButton.disabled=true;
+			this.form.commandButton.disabled=false;">
+<option value="NullCommand"></option>
+<option value="all companies">all companies</option>
+<option value="all companies and departments">all companies and departments</option>
+</select>
+
+<input type="button" name="commandButton" value="ExecuteCommand" 
+	onclick="executeCommand(this.form);
+		msg.innerHTML = 'Retreiving result..please wait' " 
+	disabled>
+</input>	
+
+<table height="300" width="600" border="1">
+<tr>
+<td valign="top" width="40%">
+
+<!-- Font for Status Message -->
+<font face="Arial,Helvetica,Verdana" size="2" color="#FF0000">
+<b id="msg"></b>
+</font>
+<!--  Font End -->
+
+</td>
+</tr>
+</table>
+<hr>
+</form>
 
-   </table>
-
+</font>
 
 </body>
 </html>

Modified: incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/js/ajax.js
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/js/ajax.js?view=diff&rev=522563&r1=522562&r2=522563
==============================================================================
--- incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/js/ajax.js (original)
+++ incubator/tuscany/sandbox/lresende/ajaxDAS/src/main/webapp/js/ajax.js Mon Mar 26 09:17:40 2007
@@ -1,79 +1,42 @@
-function doPost(sourceURL, content){
-    var xmlhttp = null;
-    var doc = null;
-
-    xmlhttp = getXmlHttpObject();
-    
-    if (xmlhttp)
-    {
-      	xmlhttp.open('POST', sourceURL, false);
-  	    xmlhttp.send(content);
-
-	if( xmlhttp.responseText )
-	    alert(xmlhttp.responseText);
-      	document.getElementById("content").innerHTML=xmlhttp.responseText;
-    }
-    else
-    {
-		alert("No XMLHttpRequest object available!");
-    }
+var req;
+var url;
 
+function startup() {
+	document.forms[0].sqlQuery.focus = true;
 }
 
-function getPage(url) {
-	xmlHttp=getXmlHttpObject()
-	if (xmlHttp==null) {
-		alert ("Browser does not support HTTP Request")
-		return
-	} 
-	xmlHttp.onreadystatechange=stateChanged 
-	xmlHttp.open("GET",url)
-	xmlHttp.send(null)
+function init() {
+	if (window.XMLHttpRequest) {
+		req = new XMLHttpRequest();
+	} else if (window.ActiveXObject) {
+		req = new ActiveXObject("Microsoft.XMLHTTP");
+	}
+	var url = "/sample-ajax-das-1.0-incubator-SNAPSHOT/CommandServlet";
+	req.open("POST", url, true);
+	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 }
 
-function stateChanged() { 
-	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
-		//document.getElementById("content").innerHTML=xmlHttp.responseText 
-		document.getElementById("content").innerHTML=transformXML(xmlHttp.responseText, "sdoDataGraph.xsl");
-	} 
-} 
-
-function getXmlHttpObject() { 
-	var objXMLHttp=null
-	if (window.XMLHttpRequest){
-		objXMLHttp=new XMLHttpRequest()
-	}
-	else if (window.ActiveXObject){
-		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
-	}
-	return objXMLHttp
+function executeQuery(formObj) {
+	init();
+	req.onreadystatechange = resultHandler;
+	req.send("sqlQuery=" + formObj.sqlQuery.value);
 }
 
-function transformXML(source, styleSource){
+function executeCommand(formObj) {
+	init();
+	req.onreadystatechange = resultHandler;
+	req.send("DasCommand="+ formObj.DasCommand.value);
+}
 
-    if( window.XSLTProcessor ) {
-		var oXSLTProcessor = new XSLTProcessor();
-		oXSLTProcessor.importStylesheet( w.goXsl.xmlHttp.responseXML );
-		var oTransformed = oXSLT.transformToFragment(oHttpReq.responseXML,w.document);
-		oListDiv.appendChild( oTransformed );
-	} else {
-		oListDiv.innerHTML = oHttpReq.responseXML.transformNode(w.goXsl.xmlHttp.responseXML);
+function resultHandler() {
+	if (req.readystate == 4) {
+		if (req.status == 200) {
+			var message = req.responseText;
+			
+			//alert(message);
+			msg.innerHTML = message
+		}
 	}
-
-
-
-// Load XML 
-var xml = new ActiveXObject("Microsoft.XMLDOM")
-xml.async = false
-xml.load("cdcatalog.xml")
-
-// Load XSL
-var xsl = new ActiveXObject("Microsoft.XMLDOM")
-xsl.async = false
-xsl.load("cdcatalog.xsl")
-
-// Transform
-document.write(xml.transformNode(xsl))
 }
 
- 
\ No newline at end of file
+



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org