Project

General

Profile

« Previous | Next » 

Revision 629

Added by berkley over 23 years ago

added support for one way replication

View differences:

MetacatReplication.java
180 180
      PreparedStatement pstmt;
181 181
      if(subaction.equals("add"))
182 182
      {
183
        String replicate = ((String[])params.get("replicate"))[0];
183 184
        String server = ((String[])params.get("server"))[0];
184 185
        pstmt = conn.prepareStatement("insert into xml_replication (server, " +
185
                "last_checked) values ('" + server + "', to_date(" +
186
                "'01/01/00', 'MM/DD/YY'))");
186
                "last_checked, replicate) values ('" + server + "', to_date(" +
187
                "'01/01/00', 'MM/DD/YY'), '" + replicate + "')");
187 188
        pstmt.execute();
188
        out.println("server " + server + " added");
189
        out.println("server " + server + " added"); 
189 190
      }
190 191
      else if(subaction.equals("delete"))
191 192
      {
......
199 200
      {
200 201
        response.setContentType("text/html");
201 202
        out.println("<html><body><table border=\"1\">");
202
        out.println("<tr><td><b>server</b></td><td><b>last_checked</b></td></tr>");
203
        out.println("<tr><td><b>server</b></td><td><b>last_checked</b></td><td>");
204
        out.println("<b>replicate</b></td></tr>");
203 205
        pstmt = conn.prepareStatement("select * from xml_replication");
204 206
        pstmt.execute();
205 207
        ResultSet rs = pstmt.getResultSet();
......
207 209
        while(tablehasrows)
208 210
        {
209 211
          out.println("<tr><td>" + rs.getString(2) + "</td><td>");
210
          out.println(rs.getString(3) + "</td></tr>");
212
          out.println(rs.getString(3) + "</td><td>");
213
          out.println(rs.getString(4) + "</td></tr>");
211 214
          tablehasrows = rs.next();
212 215
        }
213 216
        out.println("</table></body></html>");
......
231 234
  {
232 235
    //System.out.println("in handleforcereplicaterequest");
233 236
    String server = ((String[])params.get("server"))[0];
237
    if(!(replToServer(server)))
238
    { //do not get the server's new document if we are not replicating from there
239
      return;
240
    }
241
    
234 242
    //the server that the request came from
235 243
    String docid = ((String[])params.get("docid"))[0];
236 244
    //the docid of the document to get
......
734 742
      //e.printStackTrace(System.out);
735 743
    }
736 744
  }
745
  
746
  /**
747
   * Returns true if the replicate field for server in xml_replication is 1.
748
   * Returns false otherwise
749
   */
750
  public static boolean replToServer(String server)
751
  {
752
    try
753
    {
754
      Connection conn = util.openDBConnection();
755
      PreparedStatement pstmt = conn.prepareStatement("select replicate from " + 
756
                                "xml_replication where server like '" +
757
                                server + "'");
758
      pstmt.execute();
759
      ResultSet rs = pstmt.getResultSet();
760
      boolean tablehasrows = rs.next();
761
      if(tablehasrows)
762
      {
763
        int i = rs.getInt(1);
764
        if(i == 1)
765
        {
766
          return true;
767
        }
768
        else
769
        {
770
          return false;
771
        }
772
      }
773
    }
774
    catch(Exception e)
775
    {
776
      System.out.println("error in replToServer: " + e.getMessage());
777
    }
778
    return false;
779
    //the default if this server does not exist is to not replicate to it.
780
  }
737 781
}

Also available in: Unified diff