Changeset 8645


Ignore:
Timestamp:
2004-11-24T10:11:00+13:00 (19 years ago)
Author:
schweer
Message:

talk to alerting service via SOAP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/notifier/NotifierManager.java

    r8633 r8645  
    66import java.net.*;
    77import java.sql.*;
    8 import java.util.Calendar;
     8import java.text.SimpleDateFormat;
     9import java.util.*;
    910import java.util.Date;
    10 import java.text.DateFormat;
    11 import java.text.SimpleDateFormat;
     11import java.util.TreeMap;
    1212
     13import org.apache.soap.Constants;
     14import org.apache.soap.SOAPException;
     15import org.apache.soap.rpc.*;
     16import org.apache.soap.rpc.Call;
     17import org.apache.soap.rpc.Parameter;
    1318import org.greenstone.gsdl3.gs3build.CollectionManager;
    1419import org.greenstone.gsdl3.gs3build.util.GS3SQLConnection;
     
    3035            // AccessionDate >= CollectionLastRebuiltDate
    3136            ResultSet results = statement.executeQuery("SELECT DocID FROM document WHERE DocType != 'GSMETADATA' AND AccessionDate >= " + lastBuild);
    32             notify(collectionName, host, results, collManager.getDatabase());
     37            notify(collectionName, host, results, collManager.getDatabase(), "new_document");
    3338           
    3439            // detect modified documents. A document is modified if and only if
     
    3641            // ModifiedDate >= IndexedDate
    3742            results = statement.executeQuery("SELECT DocID FROM document WHERE DocType != 'GSMETADATA' AND AccessionDate < " + lastBuild + " AND ModifiedDate >= IndexedDate");
    38             notify(collectionName, host, results, collManager.getDatabase());
     43            notify(collectionName, host, results, collManager.getDatabase(), "document_modified");
    3944        } catch (SQLException e) {
    4045            // TODO Auto-generated catch block
     
    4752     * @param hostURL
    4853     * @param results
     54     * @param eventType TODO
    4955     * @throws MalformedURLException
    5056     * @throws IOException
     
    5258     * @throws SQLException
    5359     */
    54     private void notify(String collName, String hostURL, ResultSet results, GS3SQLConnection database) {
     60    private void notify(String collName, String hostURL, ResultSet results, GS3SQLConnection database, String eventType) {
    5561        try {
    56             URL url = new URL("http://localhost:8080/alerting/service?receive");
    57             System.out.println("trying to POST to " + url);
    58             HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    59             conn.setDoOutput(true);
    60             conn.setRequestMethod("POST");
    61             conn.setUseCaches(false);
     62            URL url = new URL(hostURL);
     63            System.out.println("trying to send (via SOAP) to " + url);
     64           
    6265            while(results.next()) {
    6366                System.out.println("new document: " + results.getString("DocID"));
     67                Map event = new TreeMap();
     68               
     69                String documentID = results.getString("DocID");
     70               
     71                event.put("documentID", documentID);
     72                event.put("type", eventType);
     73                event.put("collectionID", collName);
     74                event.put("host_url", hostURL);
     75                event.put("document_title", getDocumentTitle(documentID, database));
     76               
     77                Call call = new Call();
     78                call.setTargetObjectURI("alerting");
     79                call.setMethodName("receiveEvent");
     80                call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
     81                Vector params = new Vector();
     82                params.addElement(new Parameter("event", Map.class, event, null));
     83                call.setParams(params);
    6484                try {
    65                     conn.connect();
    66                     OutputStream toReceiver = conn.getOutputStream();
    67                     OutputStreamWriter writeToReceiver = new OutputStreamWriter(toReceiver);
    68                    
    69                     // TODO HTTP Post -> SOAP
    70                     String documentID = results.getString("DocID");
    71                    
    72                     writeToReceiver.write("type=new_document&");
    73                     writeToReceiver.write("collectionID=" + collName + "&");
    74                     writeToReceiver.write("host_url=" + hostURL + "&");
    75                     writeToReceiver.write("document_title=" + getDocumentTitle(documentID, database) + "&");
    76                     writeToReceiver.write("documentID=" + documentID + "\n");
    77                     writeToReceiver.close();
    78                    
    79                     System.out.println(conn.getResponseCode());
    80                     InputStream fromReceiver = conn.getInputStream();
    81                     int i;
    82                     while ((i = fromReceiver.read()) != -1) System.out.write(i);
    83                     conn.disconnect();
    84                 } catch (IOException e1) {
    85                     // TODO Auto-generated catch block
    86                     System.out.println("Error talking to server.");
    87                     e1.printStackTrace();
    88                 }
     85                    Response resp = call.invoke(url, "");
     86                    if (!resp.generatedFault()) {
     87                        System.out.println("successfully posted event");
     88                        return;
     89                    }
     90                    System.err.println("Posting event was unsuccessful:");
     91                    System.err.println(resp.getFault().getFaultString());
     92                } catch (SOAPException e1) {
     93                    System.err.println("Exception while posting event: ");
     94                    e1.printStackTrace();
     95                }
    8996            }
    9097        } catch (IOException e) {
Note: See TracChangeset for help on using the changeset viewer.