public synchronized TrustedAuthority getTrustedAuthority(String name)
     throws GTSInternalFault, InvalidTrustedAuthorityFault {
   Connection c = null;
   try {
     c = db.getConnection();
     PreparedStatement s =
         c.prepareStatement(
             "select * from "
                 + TrustedAuthorityTable.TABLE_NAME
                 + " where "
                 + TrustedAuthorityTable.NAME
                 + "= ?");
     s.setString(1, name);
     ResultSet rs = s.executeQuery();
     if (rs.next()) {
       TrustedAuthority ta = new TrustedAuthority();
       ta.setName(rs.getString(TrustedAuthorityTable.NAME));
       ta.setTrustLevels(getTrustLevels(name));
       ta.setStatus(Status.fromValue(rs.getString(TrustedAuthorityTable.STATUS)));
       ta.setIsAuthority(Boolean.valueOf(rs.getBoolean(TrustedAuthorityTable.IS_AUTHORITY)));
       ta.setAuthorityGTS(rs.getString(TrustedAuthorityTable.AUTHORITY_GTS));
       ta.setSourceGTS(rs.getString(TrustedAuthorityTable.SOURCE_GTS));
       ta.setExpires(rs.getLong(TrustedAuthorityTable.EXPIRES));
       ta.setLastUpdated(rs.getLong(TrustedAuthorityTable.LAST_UPDATED));
       ta.setCertificate(
           new gov.nih.nci.cagrid.gts.bean.X509Certificate(
               rs.getString(TrustedAuthorityTable.CERTIFICATE)));
       String crl = rs.getString(TrustedAuthorityTable.CRL);
       if ((crl != null) && (crl.trim().length() > 0)) {
         ta.setCRL(new gov.nih.nci.cagrid.gts.bean.X509CRL(crl));
       }
       return ta;
     }
     rs.close();
     s.close();
   } catch (Exception e) {
     this.log.error(
         "Unexpected database error incurred in obtaining the Trusted Authority, " + name + ":\n",
         e);
     GTSInternalFault fault = new GTSInternalFault();
     fault.setFaultString("Unexpected error obtaining the TrustedAuthority " + name);
     throw fault;
   } finally {
     db.releaseConnection(c);
   }
   InvalidTrustedAuthorityFault fault = new InvalidTrustedAuthorityFault();
   fault.setFaultString("The TrustedAuthority " + name + " does not exist.");
   throw fault;
 }
  public synchronized void removeTrustedAuthority(String name)
      throws GTSInternalFault, InvalidTrustedAuthorityFault {
    if (doesTrustedAuthorityExist(name)) {
      Connection c = null;
      try {
        this.removeTrustedAuthoritysTrustLevels(name);
        c = db.getConnection();
        PreparedStatement s =
            c.prepareStatement(
                "delete FROM "
                    + TrustedAuthorityTable.TABLE_NAME
                    + " where "
                    + TrustedAuthorityTable.NAME
                    + "= ?");
        s.setString(1, name);
        s.execute();
        s.close();

      } catch (Exception e) {
        this.log.error(
            "Unexpected database error incurred in removing the Trusted Authority, "
                + name
                + ", the following statement generated the error: \n",
            e);
        GTSInternalFault fault = new GTSInternalFault();
        fault.setFaultString("Unexpected error removing the TrustedAuthority " + name);
        throw fault;
      } finally {
        db.releaseConnection(c);
      }
    } else {
      InvalidTrustedAuthorityFault fault = new InvalidTrustedAuthorityFault();
      fault.setFaultString("The TrustedAuthority " + name + " does not exist.");
      throw fault;
    }
  }