Project

General

Profile

« Previous | Next » 

Revision 574

Added by berkley over 23 years ago

replication on insert functionality is now working.

View differences:

MetacatReplication.java
21 21
import java.text.*;
22 22
import javax.servlet.*;
23 23
import javax.servlet.http.*;
24
import oracle.xml.parser.v2.*;
24

  
25 25
import org.xml.sax.*;
26 26

  
27 27
public class MetacatReplication extends HttpServlet implements Runnable
......
73 73
                               HttpServletResponse response) 
74 74
                               throws ServletException, IOException 
75 75
  {
76
System.out.println("in metacatreplication");
77 76
    PrintWriter out = response.getWriter();
78 77
    Hashtable params = new Hashtable();
79 78
    Enumeration paramlist = request.getParameterNames();
......
121 120
      }
122 121
      else if(((String[])params.get("action"))[0].equals("forcereplicate"))
123 122
      {
124
        String server = ((String[])params.get("server"))[0];
125
        int serverCheckCode = 0;
126
        try
127
        {
128
          serverCheckCode = MetacatReplication.getServerCode(server);
129
        }
130
        catch(Exception e)
131
        {
132
          System.out.println("error in metacatReplication.handleUpdateRequest"+
133
                             ": could not get server code");
134
        }
135
        replicationDaemon.schedule(new ReplicationHandler(out, serverCheckCode),
136
                                   2000);
123
        handleForceReplicateRequest(out, params, response);
137 124
      }
138 125
      else if(((String[])params.get("action"))[0].equals("update"))
139 126
      { //request an update list from the server
......
170 157
    }
171 158
  }
172 159
  
160
  private void handleForceReplicateRequest(PrintWriter out, Hashtable params,
161
                                           HttpServletResponse response)
162
  {
163
    System.out.println("in handleforcereplicaterequest");
164
    String server = ((String[])params.get("server"))[0];
165
    String docid = ((String[])params.get("docid"))[0];
166
    try
167
    {
168
      int serverCheckCode = MetacatReplication.getServerCode(server);
169
      URL u = new URL("http://" + server + "?action=read&docid=" + docid);
170
      System.out.println("sending message: " + u.toString());
171
      String xmldoc = MetacatReplication.getURLContent(u);
172
      URL docinfourl = new URL("http://" + server + 
173
                               "?action=getdocumentinfo&docid=" +
174
                               docid);
175
      System.out.println("sending message: " + docinfourl.toString());
176
      String docInfoStr = MetacatReplication.getURLContent(docinfourl);
177
      DocInfoHandler dih = new DocInfoHandler();
178
      XMLReader docinfoParser = ReplicationHandler.initParser(dih);
179
      docinfoParser.parse(new InputSource(new StringReader(docInfoStr)));
180
      Hashtable docinfoHash = dih.getDocInfo();
181
      String user = (String)docinfoHash.get("user_owner");
182
      String group = new String(user);
183
      Connection conn = util.openDBConnection();
184
      DocumentImpl.write(conn, new StringReader(xmldoc), "UPDATE", docid, user,
185
                         group, 1);
186
      conn.close();
187
    }
188
    catch(Exception e)
189
    {
190
      System.out.println("error in metacatReplication.handleForceReplicate" +
191
                         "Request: " + e.getMessage());
192
    }
193
  }
194
  
173 195
  /**
174 196
   * Grants or denies a lock to a requesting host.
175 197
   * The servlet parameters of interrest are:
......
180 202
  private void handleGetLockRequest(PrintWriter out, Hashtable params,
181 203
                                    HttpServletResponse response)
182 204
  {
205
    System.out.println("in handlegetlockrequest");
183 206
    java.util.Date remoteDate = new java.util.Date();
184 207
    java.util.Date localDate = new java.util.Date();
185 208
    try

Also available in: Unified diff