@Override
  public boolean equals(Object aThat) {
    if (this == aThat) {
      return true;
    }

    if (!(aThat instanceof HPCCECLDirectClient)) {
      return false;
    }

    HPCCECLDirectClient that = (HPCCECLDirectClient) aThat;
    EclDirectServiceSoapProxy thatSoapProxy;
    try {
      thatSoapProxy = that.getSoapProxy();
    } catch (Exception e) {
      thatSoapProxy = null;
    }

    return EqualsUtil.areEqual(
            wsEclDirectServiceSoapProxy.getEndpoint(), thatSoapProxy.getEndpoint())
        && EqualsUtil.areEqual(
            ((Stub) wsEclDirectServiceSoapProxy.getEclDirectServiceSoap()).getUsername(),
            ((Stub) thatSoapProxy.getEclDirectServiceSoap()).getUsername())
        && EqualsUtil.areEqual(
            ((Stub) wsEclDirectServiceSoapProxy.getEclDirectServiceSoap()).getPassword(),
            ((Stub) thatSoapProxy.getEclDirectServiceSoap()).getPassword());
  }
  /**
   * Submits the given ECL to compile/execute on the targetclust and returns WUID to track the
   * query.
   *
   * @param ecl - The ECL query to compile and execute
   * @param targetcluster - The cluster on which this query should be compiled and ran
   * @param resultLimit - Directive to limit the resulting set
   * @param maxwait - Maxwait in millis
   * @return - If successful, the resulting WUID, which can be used to query info, including results
   */
  public String submitECLandGetWUID(WorkunitInfo wu) {
    String WUID = null;

    try {
      HPCCECLDirectClient eclDirectClient = getEclDirectClient();
      if (eclDirectClient != null) WUID = eclDirectClient.submitECL(wu);
      else throw new Exception("Could not initialize HPCC EclDirect Client");
    } catch (Exception e) {
      System.out.println("Error submitting ECL: " + e.getLocalizedMessage());
      e.printStackTrace();
    }

    return WUID;
  }
 /**
  * @return provides HPCCECLDirectClient for direct method execution
  * @throws Exception
  */
 public HPCCECLDirectClient getEclDirectClient() {
   synchronized (connectionLock) {
     return (HPCCECLDirectClient) SubClients.get(HPCCECLDirectClient.get(connection));
   }
 }
 /**
  * Reports the version of the original WSDL used to create the HPCCECLDirectClient logic.
  *
  * @return Original WSDL version
  */
 public String getEclDirectClientVer() {
   return Utils.parseVersionFromWSDLURL(HPCCECLDirectClient.getOriginalWSDLURL());
 }