Changeset 1600 for TI01-discovery


Ignore:
Timestamp:
18/10/06 21:36:49 (13 years ago)
Author:
mpritcha
Message:

Updated to reflect new storage structure ndgdoc/doc/payload.

Location:
TI01-discovery/trunk/ws-Discovery2/src/ndg/services/discovery
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery/trunk/ws-Discovery2/src/ndg/services/discovery/DiscoveryServiceSkeleton.java

    r1575 r1600  
    111111                discoveryserviceapi.PresentType requestContent = request.getDoPresent(); 
    112112                PresentAgent agent = new PresentAgent( requestContent.getDocument() ); 
     113                if ( requestContent.isSetFormat() ) 
     114                { 
     115                        agent.setFormat( requestContent.getFormat().toString() ); 
     116                } 
    113117 
    114118                try 
     
    131135        } 
    132136 
    133          
    134 } 
     137        /** 
     138         * Auto generated method signature 
     139          
     140          * @param param2 
     141          
     142         */ 
     143        public  discoveryserviceapi.DoAuthorSearchReturnDocument doAuthorSearch 
     144                  (discoveryserviceapi.DoAuthorSearchDocument param2 ) 
     145          
     146           { 
     147                //Todo fill this with the necessary business logic 
     148                throw new  java.lang.UnsupportedOperationException(); 
     149        } 
     150      
     151                  
     152        /** 
     153         * Auto generated method signature 
     154          
     155          * @param param4 
     156          
     157         */ 
     158        public  discoveryserviceapi.DoParameterSearchReturnDocument doParameterSearch 
     159                  (discoveryserviceapi.DoParameterSearchDocument param4 ) 
     160          
     161           { 
     162                //Todo fill this with the necessary business logic 
     163                throw new  java.lang.UnsupportedOperationException(); 
     164        } 
     165      
     166                  
     167        /** 
     168         * Auto generated method signature 
     169          
     170          * @param param6 
     171          
     172         */ 
     173        public  discoveryserviceapi.DoSpatioTemporalSearchReturnDocument doSpatioTemporalSearch 
     174                  (discoveryserviceapi.DoSpatioTemporalSearchDocument param6 ) 
     175          
     176           { 
     177                //Todo fill this with the necessary business logic 
     178                throw new  java.lang.UnsupportedOperationException(); 
     179        } 
     180        } 
    135181     
  • TI01-discovery/trunk/ws-Discovery2/src/ndg/services/discovery/PresentAgent.java

    r1558 r1600  
    66import java.util.Properties; 
    77 
    8 import java.io.BufferedReader; 
    9 import java.io.InputStreamReader; 
    10 import java.io.IOException; 
     8import java.io.*; 
    119 
    1210import org.apache.xmlrpc.XmlRpc; 
    1311import org.apache.xmlrpc.XmlRpcClient; 
     12 
     13import javax.xml.parsers.DocumentBuilderFactory; 
     14import javax.xml.parsers.DocumentBuilder; 
     15import org.xml.sax.InputSource; 
     16import org.w3c.dom.*; 
     17import org.apache.xml.serialize.OutputFormat; 
     18import org.apache.xml.serialize.XMLSerializer; 
     19 
     20 
    1421 
    1522/** 
     
    2431        // Input parameters 
    2532        String documentName; 
     33        String format = "payload"; //default 
    2634 
    2735        /** 
     
    4957 
    5058        /** 
     59         * Sets the format in which to present the document 
     60         * @param s String containing format (eg. payload, ndgdoc, dc) 
     61         */ 
     62        public void setFormat(String s) 
     63        { 
     64                this.format = s; 
     65        } 
     66 
     67        /** 
    5168         * Executes the remote getDocumentAsString method and returns document as a String 
    5269         * @return String containing XML document 
     
    5774                PresentSummary result = new PresentSummary(); 
    5875 
    59                 String returnDoc = null; 
     76                byte[] returnDoc = null; 
    6077                XmlRpc.setEncoding("UTF-8"); 
    6178 
     
    83100 
    84101                        //1. Execute the remote getDocumentAsString()  
    85                         System.out.println( "before : returnDoc is " + returnDoc ); 
    86102                        Vector getDocumentAsStringParams = new Vector(); 
    87103                        getDocumentAsStringParams.addElement( this.documentName ); 
    88104                        getDocumentAsStringParams.addElement( options ); 
    89                         returnDoc = (String)xmlrpc.execute( "getDocumentAsString", getDocumentAsStringParams ); 
     105                        returnDoc = (byte[])xmlrpc.execute( "getDocument", getDocumentAsStringParams ); 
    90106 
    91107                        if (returnDoc != null) 
     
    93109                                result.setStatus( true ); 
    94110                                result.setStatusMessage( "Success" ); 
    95                                 result.setDocument( returnDoc ); 
     111 
     112                                if ( this.format.equals("payload") ) 
     113                                { 
     114                                        // Return the payload, i.e. the contents of the first "doc" element 
     115                                        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     116                                        DocumentBuilder builder = factory.newDocumentBuilder(); 
     117                                        Document root = builder.parse(  
     118                                                new InputSource ( 
     119                                                        new ByteArrayInputStream( 
     120                                                                returnDoc 
     121                                                        ) 
     122                                                ) 
     123                                        ); 
     124 
     125                                        NodeList docNodes = root.getElementsByTagName("doc"); 
     126                                        // Assuming payload is contained within 1st doc element... 
     127                                        Element docElem = (Element)docNodes.item(0); 
     128                                        NodeList payloadNodes = docElem.getChildNodes(); 
     129                                        // Could be text nodes too, so need to test for type = Element 
     130                                        for (int i=0; i<payloadNodes.getLength(); i++) 
     131                                        { 
     132                                                Node thisNode = payloadNodes.item(i); 
     133                                                if ( thisNode.getNodeType() == Node.ELEMENT_NODE ) 
     134                                                { 
     135                                                        // Serialize it 
     136                                                        OutputFormat format = new OutputFormat( root ); 
     137                                                        format.setOmitXMLDeclaration( true ); 
     138                                                        StringWriter writer = new StringWriter(); 
     139                                                        XMLSerializer output = new XMLSerializer(writer, format); 
     140                                                        output.serialize( (Element)thisNode ); 
     141                                                        result.setDocument( writer.toString() ); 
     142                                                } 
     143                                        } 
     144                                } 
     145                                else if ( this.format.equals("ndgdoc") ) 
     146                                { 
     147                                        result.setDocument( new String( returnDoc ) ); 
     148                                } 
     149                                else 
     150                                { 
     151                                        throw new Exception("Format " + this.format + " not implemented."); 
     152                                } 
    96153                        } 
    97154                        else { 
Note: See TracChangeset for help on using the changeset viewer.