diff options
Diffstat (limited to 'java/rasj/clientcommhttp')
-rw-r--r-- | java/rasj/clientcommhttp/Makefile | 62 | ||||
-rw-r--r-- | java/rasj/clientcommhttp/Makefile.dep | 0 | ||||
-rw-r--r-- | java/rasj/clientcommhttp/RasCommDefs.class | bin | 753 -> 0 bytes | |||
-rw-r--r-- | java/rasj/clientcommhttp/RasCommDefs.java | 54 | ||||
-rw-r--r-- | java/rasj/clientcommhttp/RasHttpRequest.class | bin | 12597 -> 0 bytes | |||
-rw-r--r-- | java/rasj/clientcommhttp/RasHttpRequest.java | 805 | ||||
-rw-r--r-- | java/rasj/clientcommhttp/RasUtils.class | bin | 1586 -> 0 bytes | |||
-rw-r--r-- | java/rasj/clientcommhttp/RasUtils.java | 110 |
8 files changed, 0 insertions, 1031 deletions
diff --git a/java/rasj/clientcommhttp/Makefile b/java/rasj/clientcommhttp/Makefile deleted file mode 100644 index 7c9dc43..0000000 --- a/java/rasj/clientcommhttp/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -# -*-Makefile-*- (for Emacs) -# -# This file is part of rasdaman community. -# -# Rasdaman community is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Rasdaman community is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with rasdaman community. If not, see <http://www.gnu.org/licenses/>. -# -# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / -# rasdaman GmbH. -# -# For more information please see <http://www.rasdaman.org> -# or contact Peter Baumann via <baumann@rasdaman.com>. # Top Level makefile. This points to the various modules that have to be build -# and/or deployed -# -# MAKEFILE FOR: -# package rasj/clientcommhttp -# -# COMMENTS: -# -################################################################## -######################### Definitions ############################ - -# standard include with general options -include $(RMANBASE)/Makefile.inc - -# directory where HTML documentation is created -DOCDIR := $(DOCBASE)/rasdaman/java/rasj/clientcommhttp - -SRCS = RasCommDefs.java RasHttpRequest.java RasUtils.java -OBJS = ${SRCS:%.java=%.class} -MISCCLEAN = *.class - -########################### Targets ############################## - -# compile everything -.PHONY : all -all: $(OBJS) - -# HTML docu -docj: - -rm -rf $(DOCDIR)/rasj/clientcommhttp - $(JAVADOC) -author -d $(DOCDIR) rasj/clientcommhttp - -# delete all object files -clean: - -rm -f $(MISCCLEAN) - -############################ Dependencies ####################### -# general rules -# FIXME: should not be used here (only for relational adapter modules in rel*/), but is needed for Java targets -include $(RMANBASE)/Makefile.rel - diff --git a/java/rasj/clientcommhttp/Makefile.dep b/java/rasj/clientcommhttp/Makefile.dep deleted file mode 100644 index e69de29..0000000 --- a/java/rasj/clientcommhttp/Makefile.dep +++ /dev/null diff --git a/java/rasj/clientcommhttp/RasCommDefs.class b/java/rasj/clientcommhttp/RasCommDefs.class Binary files differdeleted file mode 100644 index 19067da..0000000 --- a/java/rasj/clientcommhttp/RasCommDefs.class +++ /dev/null diff --git a/java/rasj/clientcommhttp/RasCommDefs.java b/java/rasj/clientcommhttp/RasCommDefs.java deleted file mode 100644 index f08fae3..0000000 --- a/java/rasj/clientcommhttp/RasCommDefs.java +++ /dev/null @@ -1,54 +0,0 @@ -/* -* This file is part of rasdaman community. -* -* Rasdaman community is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* Rasdaman community is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>. -* -* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / -rasdaman GmbH. -* -* For more information please see <http://www.rasdaman.org> -* or contact Peter Baumann via <baumann@rasdaman.com>. -*/ -/** *********************************************************** - * <pre> - * - * PURPOSE: - * - * - * - * COMMENTS: - * - * </pre> - *********************************************************** */ - -package rasj.clientcommhttp; - -public interface RasCommDefs -{ - static final String rcsid = "@(#)Package rasj.clientcommhttp, class RasCommDefs: $Header: /home/rasdev/CVS-repository/rasdaman/java/rasj/clientcommhttp/RasCommDefs.java,v 1.5 2003/12/10 21:04:26 rasdev Exp $"; - - final public byte RASCLIENT = 1; - final public byte BROWSER = 2; - - final public byte RESPONSE_ERROR = 0; - final public byte RESPONSE_MDDS = 1; - final public byte RESPONSE_SKALARS = 2; - final public byte RESPONSE_INT = 3; - final public byte RESPONSE_OID = 4; - final static byte RESPONSE_OK_NEGATIVE = 98; - final public byte RESPONSE_OK = 99; - - final public byte BIG_ENDIAN = 0; - final public byte LITTLE_ENDIAN = 1; -} diff --git a/java/rasj/clientcommhttp/RasHttpRequest.class b/java/rasj/clientcommhttp/RasHttpRequest.class Binary files differdeleted file mode 100644 index 43ecc52..0000000 --- a/java/rasj/clientcommhttp/RasHttpRequest.class +++ /dev/null diff --git a/java/rasj/clientcommhttp/RasHttpRequest.java b/java/rasj/clientcommhttp/RasHttpRequest.java deleted file mode 100644 index f80a2ca..0000000 --- a/java/rasj/clientcommhttp/RasHttpRequest.java +++ /dev/null @@ -1,805 +0,0 @@ -/* -* This file is part of rasdaman community. -* -* Rasdaman community is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* Rasdaman community is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>. -* -* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / -rasdaman GmbH. -* -* For more information please see <http://www.rasdaman.org> -* or contact Peter Baumann via <baumann@rasdaman.com>. -*/ -/************************************************************* - * <pre> - * - * PURPOSE: - * - * - * COMMENTS: - * - return type complex not yet supported. - * </pre> - *********************************************************** */ - -package rasj.clientcommhttp; - -import rasj.*; -import org.odmg.*; -import rasj.odmg.*; -import rasj.global.*; - -import java.io.*; -import java.net.*; -import java.lang.*; -import java.util.*; - -/** - * This class handles a HTTP-request to the RasDaMan server. - * The specified RasDaMan server is contacted, the specified command is sent to - * the server, and the result of the query is retrieved and stored in a byte array. - * The specification of the communication protocol is given below. - * <P> - * - * @version $Revision: 1.35 $ - * - * </UL><P> - * <B>Request structure</B><P><UL> - * The rasj HTTP request to the rasdaman server uses the HTTP POST-Format with the following - * parameters: - * <P> - * <TABLE BORDER=1 WIDTH=100%> - * <TR><TH>Parameter:</TH><TH>Description:</TH><TH>Required for</TH></TR> - * <TR><TD>Command</TD> - * <TD>Integer value specifying the desired action (e.g. OpenDB, BT, CT, CloseDB ...)</TD> - * <TD>all requests</TD></TR> - * <TR><TD>Database</TD> - * <TD>String value specifying the database</TD> - * <TD>OpenDB, CloseDB</TD></TR> - * <TR><TD>ClientType</TD> - * <TD>Integer value defining the type of the client (at the moment always RasClient)</TD> - * <TD>all requests</TD></TR> - * <TR><TD>ClientID</TD> - * <TD>Integer value specifying the ClientID (currently set to 1 for every client)</TD> - * <TD>all requests</TD></TR> - * <TR><TD>QueryString</TD> - * <TD>String value containing the RasQL query</TD> - * <TD>executeQuery</TD></TR> - * <TR><TD>Endianess</TD> - * <TD>Integer value containing the Client Endianess</TD> - * <TD>only insert queries</TD></TR> - * <TR><TD>NumberOfQueryParameters</TD> - * <TD>Integer value specifying the number of query parameters</TD> - * <TD>only insert queries</TD></TR> - * <TR><TD>QueryParameters</TD> - * <TD>Byte Array containing the query parameters (MDDs) using the following format:<BR> - * <TABLE BORDER=1> - * <TR><TH>Integer</TH><TH>String</TH><TH>String</TH><TH>Integer</TH><TH>String</TH><TH>String</TH> - * <TH>String</TH><TH>Long</TH><TH>Byte[]</TH> - * </TR> - * <TR><TD>objectType</TD><TD>objectTypeName</TD><TD>typeStructure</TD><TD>typeLength</TD> - * <TD>domain</TD><TD>storageLayout</TD><TD>OID</TD><TD>dataSize</TD><TD>binary data</TD></TR> - * </TABLE> - *</TD> - * <TD>only insert queries</TD></TR> - * </TABLE> - * </P> - * </UL><P> - * - * <B>Result formats / internal representation:</B><P><UL> - * The result of a HTTP request has one of the following forms:<P> - * MDD Collections:<BR> - * <TABLE BORDER=1><TR><TH ROWSPAN=2>Byte</TH><TH ROWSPAN=2>Byte</TH> - * <TH ROWSPAN=2>String</TH><TH ROWSPAN=2>Long(4Bytes)</TH> - * <TH COLSPAN=5>resultElement 1</TH><TH ROWSPAN=3> ... </TH></TR> - * <TR><TD>String</TD><TD>String</TD><TD>String</TD><TD>Long(4Bytes)</TD><TD>Byte[]</TD></TR> - * <TR><TD>Result type<P>1=MDDCollection</TD> - * <TD>Endianess</TD> - * <TD>Collection type</TD> - * <TD>Number of results</TD> - * <TD>BaseType description</TD> - * <TD>Spatial domain</TD> - * <TD>OID</TD> - * <TD>Size of the Binary Data Block</TD> - * <TD>Binary Data Block</TD></TR> - * </TABLE><P> - * - * Skalar Collections:<BR> - * <TABLE BORDER=1><TR><TH ROWSPAN=2>Byte</TH><TH ROWSPAN=2>Byte</TH> - * <TH ROWSPAN=2>String</TH><TH ROWSPAN=2>Long(4Bytes)</TH> - * <TH COLSPAN=4>resultElement 1</TH><TH ROWSPAN=3> ... </TH></TR> - * <TR><TD>String</TD><TD>Long(4Bytes)</TD><TD>Byte[]</TD></TR> - * <TR><TD>Result type<P>2=SkalarCollection</TD> - * <TD>Endianess</TD> - * <TD>Collection type</TD> - * <TD>Number of results</TD> - * <TD>ElementType description</TD> - * <TD>Size of the Binary Data Block</TD> - * <TD>Binary Data Block</TD></TR> - * </TABLE><P> - * - * Errors:<BR> - * <TABLE BORDER=1><TR><TH>Byte</TH><TH>Byte</TH> - * <TH>Long(4Bytes)</TH><TH>Long(4Bytes)</TH><TH>Long(4Bytes)</TH> - * <TH>String</TH></TR> - * <TR><TD>Result type<P>0=Error</TD> - * <TD>Endianess</TD> - * <TD>Error number</TD> - * <TD>Line number</TD> - * <TD>Column number</TD> - * <TD>Token</TD> - * </TABLE><P> - * - * Single Integer Value:<BR> - * <TABLE BORDER=1><TR><TH>Byte</TH><TH>Integer</TH></TR> - * <TR><TD>Result type<P>3=Integer</TD><TD>Value</TD></TR> - * </TABLE><P> - * - * OID:<BR> - * <TABLE BORDER=1><TR><TH>Byte</TH><TH>String</TH><TH>String</TH><TH>Double</TH></TR> - * <TR><TD>Result type<P>4=OID</TD><TD>system</TD><TD>basename</TD><TD>localOID</TD></TR> - * </TABLE><P> - * - * Acknowledgement:<BR> - * <TABLE BORDER=1><TR><TH>Byte</TH></TR> - * <TR><TD>Result type<P>99=OK</TD></TR> - * </TABLE><P> - * - * </UL> - * - */ - -public class RasHttpRequest implements RasCommDefs, RasGlobalDefs -{ - - static final String rcsid = "@(#)Package rasj.clientcommhttp, class RasRequest: $Header: /home/rasdev/CVS-repository/rasdaman/java/rasj/clientcommhttp/RasHttpRequest.java,v 1.35 2003/12/19 15:36:43 rasdev Exp $"; - -/** - * The type of this client */ - private String client = "RASCLIENT"; - -/** - * The result type ( MDD Collection, Skalar Collection, Error, Integer ). This field is set - * automatically when a query has been executed, so there's no setResultType method. - */ - private byte resultType = 0; - -/** - * The result of the query -**/ - private Object result = null; - -/** - * This method sends a query to the RasDaMan Server and retrieves the results. - * - * @param con server connection - * @param parameters the parameters for the request as name/value pairs (for example "clientID=4354351&queryString=select img from test") - */ - public void execute( String serverURL, String parameters ) - throws RasQueryExecutionFailedException, RasConnectionFailedException - { - Debug.enterVerbose( "RasHttpRequest.execute: start. serverURL=" + serverURL + ", parameters=" + parameters ); - - BenchmarkTimer httpTimer = new BenchmarkTimer("httpRequest"); - BenchmarkTimer rcvTimer = new BenchmarkTimer("receive"); - - try - { - URL url = new URL( serverURL ); - - Debug.talkVerbose( "RasHttpRequest.execute: sending to " + url + " POST request=" + parameters ); - - httpTimer.startTimer(); - - BenchmarkTimer sendTimer = new BenchmarkTimer("send"); - sendTimer.startTimer(); - - // Send the query - HttpURLConnection con = (HttpURLConnection) url.openConnection(); - con.setRequestProperty("Content-type","application/octet-stream"); - con.setRequestProperty("User-Agent","RasDaMan Java Client"); - con.setRequestProperty("Version","1.0"); - con.setRequestMethod("POST"); - con.setDoInput(true); - con.setDoOutput(true); - con.setUseCaches(false); - - OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream(),"8859_1"); - out.write(parameters,0,parameters.length()); - out.flush(); - out.close(); - - sendTimer.stopTimer(); - sendTimer.print(); - - rcvTimer.startTimer(); - - // Read response - BenchmarkTimer getInputTimer = new BenchmarkTimer("getInputStream"); - getInputTimer.startTimer(); - DataInputStream in = new DataInputStream(con.getInputStream()); - // int BuffSize = con.getContentLength(); // not used -- PB 2003-jun-14 - // Debug.talkVerbose("RasHttpRequest.execute: buffSize=" + BuffSize); - getInputTimer.stopTimer(); - getInputTimer.print(); - - - /* variables for later use */ - byte[] b1 = new byte[1]; - byte[] b4 = new byte[4]; - byte endianess = 0; - String collType = null; - int numberOfResults = 0; - int dataSize = 0; - byte[] binData = null; - int readBytes = 0; - int readBytesTmp = 0; - DBag resultBag; - RasGMArray res = null; - - in.read(b1); - - resultType = b1[0]; - Debug.talkVerbose("RasHttpRequest.execute: resultType=" + resultType ); - switch( resultType ) - { - case RESPONSE_OK: - case RESPONSE_OK_NEGATIVE: - //Nothing todo - break; - - // +++++++++++++++++++++++++++++++++++++++++++++++++ - case RESPONSE_MDDS: - Debug.talkVerbose("RasHttpRequest.execute: result type is MDD." ); - // read Endianess - while(in.read(b1) == 0) - ; - endianess = b1[0]; - - // read Collection Type - collType = RasUtils.readString(in); - Debug.talkVerbose("RasHttpRequest.execute: colltype=" + collType); - - // read NumberOfResults - while(in.available() < 4) - ; - in.read(b4); - numberOfResults = RasUtils.ubytesToInt(b4,endianess); - Debug.talkVerbose("RasHttpRequest.execute: number of results: " + numberOfResults); - - // Initialize return-set and parameters - resultBag = new RasBag(); - String mddBaseType = null; - String domain = null; - String oid = ""; - RasOID roid = null; - - // do this for each result - for(int x = 0; x < numberOfResults; x++) - { - Debug.talkVerbose("RasHttpRequest.execute: handling result #" + (x+1) ); - //read mddBaseType - mddBaseType = RasUtils.readString(in); - - // read spatialDomain - domain = RasUtils.readString(in); - - // read OID - oid = RasUtils.readString(in); - //System.err.println("OID is " + oid); - roid = new RasOID(oid); - - // read size of binData - while(in.available() < 4) - ; - in.read(b4); - - dataSize = RasUtils.ubytesToInt(b4,endianess); - - Debug.talkVerbose("RasHttpRequest.execute: mddBaseType is " + mddBaseType + ", spatialDomain=" + domain + ", size of BinData=" + dataSize ); - - // read binData - binData = new byte[dataSize]; - readBytes = 0; - readBytesTmp = 0; - - while( (readBytesTmp != -1) && (readBytes < dataSize) ) - { - readBytesTmp = in.read(binData,readBytes,dataSize-readBytes); - readBytes += readBytesTmp; - } - - Debug.talkVerbose("RasHttpRequest.execute: read " + readBytes + " bytes."); - - RasType rType = RasType.getAnyType(mddBaseType); - //System.out.println(rType); - RasBaseType rb = null; - - if(rType.getClass().getName().equals("rasj.RasMArrayType")) - { - RasMArrayType tmp = (RasMArrayType)rType; - rb = tmp.getBaseType(); - } - else - { - Debug.talkCritical("RasHttpRequest.execute: exception: element of MDD Collection is no MArray" ); - throw new RasClientInternalException("RasHttpRequest","execute()","element of MDD Collection is no MArray"); - } - - if(rb.isBaseType()) - { - if(rb.isStructType()) - { - // It is a structType - //System.err.println("It is a structType"); - RasStructureType sType = (RasStructureType)rb; - //System.out.println(sType); - res = new RasGMArray(new RasMInterval(domain), 0); - res.setTypeLength(rb.getSize()); - res.setArraySize(dataSize); - res.setArray(binData); - //insert into result set - resultBag.add(res); - break; - - } else - { - // It is a primitiveType - RasPrimitiveType pType = (RasPrimitiveType)rb; - - //System.err.println("It's a primitive type: " + pType); - switch(pType.getTypeID()) - { - case RAS_BOOLEAN: - case RAS_BYTE: - case RAS_CHAR: - //System.err.println("It's a byte array!"); - res = new RasMArrayByte(new RasMInterval(domain)); - break; - case RAS_SHORT: - //System.err.println("It's a short array!"); - res = new RasMArrayShort(new RasMInterval(domain)); - break; - - case RAS_USHORT: - //System.err.println("It's a ushort array!"); - byte[] tmData = new byte[dataSize*2]; - for(int i=0;i<dataSize*2;) - { - tmData[i] = 0; - tmData[i+1] = 0; - tmData[i+2] = binData[i/2]; - tmData[i+3] = binData[i/2+1]; - i = i+SIZE_OF_INTEGER; - } - binData = tmData; - res = new RasMArrayInteger(new RasMInterval(domain)); - break; - - case RAS_INT: - case RAS_LONG: - //System.err.println("It's a integer array!"); - res = new RasMArrayInteger(new RasMInterval(domain)); - break; - case RAS_ULONG: - //System.err.println("It's a ulong array!"); - byte[] tmpData = new byte[dataSize*2]; - for(int i=0;i<dataSize*2;) - { - tmpData[i] = 0; - tmpData[i+1] = 0; - tmpData[i+2] = 0; - tmpData[i+3] = 0; - tmpData[i+4] = binData[i/2]; - tmpData[i+5] = binData[i/2+1]; - tmpData[i+6] = binData[i/2+2]; - tmpData[i+7] = binData[i/2+3]; - i = i+SIZE_OF_LONG; - } - binData = tmpData; - res = new RasMArrayLong(new RasMInterval(domain)); - break; - case RAS_FLOAT: - //System.err.println("It's a float array!"); - res = new RasMArrayFloat(new RasMInterval(domain)); - break; - case RAS_DOUBLE: - //System.err.println("It's a double array!"); - res = new RasMArrayDouble(new RasMInterval(domain)); - break; - default: - //System.err.println("It's a GMArray!"); - res = new RasGMArray(new RasMInterval(domain), pType.getSize()); - //throw new RasTypeNotSupportedException(pType.getName()); - } - // set array data - res.setArray(binData); - // set oid - res.setOID(roid); - //insert into result set - resultBag.add(res); - } - - } - else throw new RasClientInternalException("RasHttpRequest","execute()","Type of MDD is no Base Type"); - } - - result = resultBag; - - // close stream - in.close(); - - break; - - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - case RESPONSE_SKALARS: - //System.err.println("Skalar = 2"); - // read Endianess - while(in.read(b1) == 0); - endianess = b1[0]; - - // read Collection Type - collType = RasUtils.readString(in); - RasType rt = new RasType(); - try - { - rt = rt.getAnyType(collType); - //System.err.println("Colltype is " + rt); - } - catch(Exception e) - { - throw new RasTypeNotSupportedException(rt + " as RasCollectionType"); - } - if(rt.getTypeID()!=RasGlobalDefs.RAS_COLLECTION) - throw new RasTypeNotSupportedException(rt + " as RasCollectionType"); - - // read NumberOfResults - while(in.available() < 4); - in.read(b4); - numberOfResults = RasUtils.ubytesToInt(b4,endianess); - //System.err.println("Number of results: " + numberOfResults); - - // Initailize return-list - resultBag = new RasBag(); - - // do this for each result - for(int x = 0; x < numberOfResults; x++) - { - // read elementType - String elementType = RasUtils.readString(in); - RasType et = new RasType(); - et = ((RasCollectionType)rt).getElementType(); - //System.err.println("ElementType is " + et); - - // read size of binData - while(in.available() < 4); - in.read(b4); - dataSize = RasUtils.ubytesToInt(b4,endianess); - //System.err.print("Size of BinData: "); - //System.err.println(dataSize); - - // read binData - binData = new byte[dataSize]; - readBytes = 0; - readBytesTmp = 0; - while( (readBytesTmp != -1) && (readBytes < dataSize) ) - { - readBytesTmp = in.read(binData,readBytes,dataSize-readBytes); - readBytes += readBytesTmp; - /* - System.err.println("Read " + readBytesTmp +" Bytes (" - + readBytes + " Bytes overall)"); - */ - } - //System.err.println("Füge ein ..." + new String(binData)); - - ByteArrayInputStream bis = new ByteArrayInputStream(binData); - DataInputStream dis = new DataInputStream(bis); - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - switch(et.getTypeID()) - { - case RasGlobalDefs.RAS_MINTERVAL: - resultBag.add(new RasMInterval(new String(binData))); - break; - case RasGlobalDefs.RAS_SINTERVAL: - resultBag.add(new RasSInterval(new String(binData))); - break; - case RasGlobalDefs.RAS_POINT: - resultBag.add(new RasPoint(new String(binData))); - break; - case RasGlobalDefs.RAS_OID: - resultBag.add(new RasOID(new String(binData))); - break; - case RAS_BOOLEAN: - case RAS_BYTE: - case RAS_CHAR: - byte b = binData[0]; - resultBag.add(new Byte(b)); - break; - case RAS_DOUBLE: - double d = dis.readDouble(); - resultBag.add(new Double(d)); - break; - case RAS_FLOAT: - float f = dis.readFloat(); - resultBag.add(new Float(f)); - break; - case RAS_ULONG: - byte[] bu = new byte[8]; - bu[0] = 0; - bu[1] = 0; - bu[2] = 0; - bu[3] = 0; - bu[4] = dis.readByte(); - bu[5] = dis.readByte(); - bu[6] = dis.readByte(); - bu[7] = dis.readByte(); - ByteArrayInputStream bis2 = new ByteArrayInputStream(bu); - DataInputStream dis2 = new DataInputStream(bis2); - long ul = dis2.readLong(); - resultBag.add(new Long(ul)); - break; - case RAS_LONG: - case RAS_INT: - int i = dis.readInt(); - resultBag.add(new Integer(i)); - break; - case RAS_USHORT: - int j = dis.readUnsignedShort(); - resultBag.add(new Integer(j)); - break; - case RAS_SHORT: - short s = dis.readShort(); - resultBag.add(new Short(s)); - break; - default: - throw new RasTypeNotSupportedException(et + " as ElementType "); - } - } - result = resultBag; - - // close stream - in.close(); - break; - - //++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - case RESPONSE_ERROR: - Debug.talkCritical("RasHttpRequest.execute: execution failed. Error = 0"); - - // read Endianess - while(in.read(b1) == 0) - ; - endianess = b1[0]; - - // read Error Number - while(in.available() < 4) - ; - in.read(b4); - int errNo = RasUtils.ubytesToInt(b4,endianess); - - // read Line Number - while(in.available() < 4) - ; - in.read(b4); - int lineNo = RasUtils.ubytesToInt(b4,endianess); - - // read Column Number - while(in.available() < 4) - ; - in.read(b4); - int colNo = RasUtils.ubytesToInt(b4,endianess); - - // read token - String token = RasUtils.readString(in); - - Debug.talkCritical("RasHttpRequest.execute: Errno=" + errNo + ", lineNo=" + lineNo + ", colNo=" + colNo + ", Token=" + token); - - throw new RasQueryExecutionFailedException(errNo,lineNo,colNo,token); - //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - case RESPONSE_INT: - // read Integer Value - //System.err.println("Now reading integer value..."); - while(in.available() < 4); - in.read(b4); - result = new Integer(RasUtils.ubytesToInt(b4,endianess)); - //System.err.println("Int Value is : " + result.getInt()); - break; - - //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - case RESPONSE_OID: - // read Values - String sys = RasUtils.readString(in); - String base = RasUtils.readString(in); - double d = in.readDouble(); - //System.out.println(sys+base+"localOID als double = " + d); - resultBag = new RasBag(); - resultBag.add(new RasOID(sys, base, d)); - result = resultBag; - // close stream - in.close(); - break; - default: - Debug.talkCritical( "RasHttpRequest.execute: illegal response type: " + resultType ); - break; - - } - - con.disconnect(); // close connection to server -- PB 2003-jun-15 - } - catch( MalformedURLException e ) - { - Debug.leaveCritical( "RasHttpRequest.execute: leave. malformed URL: " + e.getMessage() ); - throw new RasConnectionFailedException(MANAGER_CONN_FAILED, serverURL ); - } - catch( IOException e ) - { - Debug.leaveCritical( "RasHttpRequest.execute: leave. IO exception: " + e.getMessage() ); - throw new RasClientInternalException("RasHttpRequest","execute()",e.getMessage()); - } - catch( RasResultIsNoIntervalException e ) - { - Debug.leaveCritical( "RasHttpRequest.execute: leave. result no interval: " + e.getMessage() ); - throw new RasClientInternalException("RasHttpRequest","execute()",e.getMessage()); - } - - rcvTimer.stopTimer(); - rcvTimer.print(); - - httpTimer.stopTimer(); - httpTimer.print(); - - Debug.leaveVerbose( "RasHttpRequest.execute: leave. resultType=" + resultType ); - } // execute() - - -/** - * returns the result type (MDDColl, SkalarColl, Error, Integer) - */ - public byte getResultType() - { - return resultType; - } - -/** - * returns the result of the query - */ - public Object getResult() - { - return result; - } - -/** - * returns the result of the query as an Integer - */ - public int getIntegerResult() - { - if (result != null) - { - Integer myInt = (Integer)result; - return myInt.intValue(); - } - else - return 0; - } - -/** - * returns the result of the query as a DCollection - */ - public DCollection getDCollection() - { - return (DCollection)result; - } - -/** - * returns the result of the query as a DBag - */ - public DBag getDBag() - { - return (DBag)result; - } - -/** - * This method specifies the type of the client. The clientType determines - * how the results are coded - * and returned by the server. Default type and the only type supported right now - * is "RASCLIENT". The results are sent back using the "application/octet-stream" - * mime type and are coded as a byte stream as described in the class documentation. - * <P> - * Future versions will support other types like, for example, "BROWSER", where the - * results will be coded as standard HTTP-responses of certain mime types (for example - * "image/gif"). - * - * @param clientType currently only "RASCLIENT" supported - */ - public void setClientType ( String clientType ) - { - client = clientType; - } - -/** - * main program for testing purposes - */ - -/* BEGIN experimental *********************** - public static void main( String[] args ) - { - String server = "localhost"; - String port = "7001"; - String base = "RASBASE"; - String user = "rasguest"; - String passwd = "rasguest"; - String query = "select r from RAS_COLLECTIONNAMES as r"; - int count = 1; - - System.out.println( "Query test started." ); - - for (int i=args.length-1; i>=0; i--) - { - if (args[i].equals("--server")) - server = args[i+1]; - if (args[i].equals("--port")) - port = args[i+1]; - if (args[i].equals("--database")) - base = args[i+1]; - if (args[i].equals("--user")) - user = args[i+1]; - if (args[i].equals("--passwd")) - passwd = args[i+1]; - if (args[i].equals("--query")) - query = args[i+1]; - if (args[i].equals("--count")) - count = Integer.parseInt(args[i+1]); - } - - try - { - RasImplementation myApp = new RasImplementation("http://"+server+":"+port); - myApp.setUserIdentification(user, passwd); - - System.out.println( "opening database..." ); - Database myDb = myApp.newDatabase(); - myDb.open( base, Database.OPEN_READ_ONLY ); - - System.out.println( "starting transaction..." ); - Transaction myTa = myApp.newTransaction(); - myTa.begin(); - - String parameters = "Command=8&ClientID=1&QueryString=" + query; - String serverUrl = "http://" + server + ":" + 7102; // port; - - for (int i = 0; i < count; i++) - { - System.out.println( "sending query #" + i + "..." ); - execute( serverUrl, parameters ); - } - - System.out.println( "closing transaction..." ); - myTa.abort(); - - System.out.println( "closing database..." ); - myDb.close(); - System.out.println( "all done." ); - - } - catch(Exception e) - { - System.err.println( e.getMessage() ); - } - - System.out.println( "Query test done." ); - - } // main() -END experimental ***********************/ -} - - - diff --git a/java/rasj/clientcommhttp/RasUtils.class b/java/rasj/clientcommhttp/RasUtils.class Binary files differdeleted file mode 100644 index 33c59a3..0000000 --- a/java/rasj/clientcommhttp/RasUtils.class +++ /dev/null diff --git a/java/rasj/clientcommhttp/RasUtils.java b/java/rasj/clientcommhttp/RasUtils.java deleted file mode 100644 index 1ffa049..0000000 --- a/java/rasj/clientcommhttp/RasUtils.java +++ /dev/null @@ -1,110 +0,0 @@ -/* -* This file is part of rasdaman community. -* -* Rasdaman community is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* Rasdaman community is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>. -* -* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / -rasdaman GmbH. -* -* For more information please see <http://www.rasdaman.org> -* or contact Peter Baumann via <baumann@rasdaman.com>. -*/ -/** *********************************************************** - * <pre> - * - * PURPOSE: - * - * - * - * COMMENTS: - * - * </pre> - *********************************************************** */ - -package rasj.clientcommhttp; - -import java.io.*; -import java.net.*; -import java.lang.*; - -/** - * - * This class provides some useful methods for reading binary data from a stream - * or converting objects to a byte array for transmission. - * - */ -public final class RasUtils implements RasCommDefs -{ - static final String rcsid = "@(#)Package rasj.clientcommhttp, class RasUtils: $Header: /home/rasdev/CVS-repository/rasdaman/java/rasj/clientcommhttp/RasUtils.java,v 1.5 2003/12/10 21:04:26 rasdev Exp $"; - - public RasUtils() - { - } - - /** - * This method is used for turning up to 4 unsigned bytes into signed integers. - * - * @param uBytes one to four Bytes which are interpreted as an unsigned Integer - * @param endianess determines the order of the bytes: 0 = bigendian, 1 = little endian - */ - public static int ubytesToInt( byte[] uBytes, byte endianess ) - { - int tmpi; - byte tmpb; - int retval = 0; - - for( int i = 0; i < uBytes.length; i++ ) - { - if( endianess == BIG_ENDIAN ) - tmpb = uBytes[uBytes.length-i-1]; - else - tmpb = uBytes[i]; - - tmpi = 0; - /* Byte < 0 */ - if( (int)tmpb < 0 ) - tmpi = 256 + tmpb; - else - tmpi = tmpb; - - tmpi <<= (i*8); - retval += tmpi; - } - return retval; - } - - /** - * Reads characters from a stream until a '\0' character is reached. - * - * @param in BufferedInputStream to be read from ( must have been initialized before! ) - */ - public static String readString( InputStream in ) - throws IOException - { - byte b = (byte) '\0'; - byte[] b1 = new byte[1]; - String retval = ""; - - while(in.read(b1) == 0); - while(b1[0] != b) - { - retval =retval + (char)b1[0]; - while(in.read(b1) == 0); - } - return retval; - } - - - -} |