/**
   * Writes argument parser information to the specified XML file. The program name, program
   * description, positional arguments, and named arguments are saved in the file in standard XML
   * format. It also saves each aspect of the arguments such as argument name, description,
   * dataType, defaultValue, and possible value set.
   *
   * @param fileName the XML file to which all information will be written
   */
  public void writeToXMLFile(String fileName) {
    File outputFile = new File(fileName);
    try {
      PrintWriter outputFileWriter = new PrintWriter(outputFile);
      outputFileWriter.println("<?xml version=" + "\"1.0\"?>");
      outputFileWriter.println("<program>");
      outputFileWriter.println("<name>" + getProgramName() + "</name>");
      outputFileWriter.println("<description>" + getProgramDescription() + "</description>");
      outputFileWriter.println("<arguments>");

      for (int i = 0; i < positionalArgumentList.size(); i++) {
        PositionalArgument posArg = positionalArgumentList.get(i);
        outputFileWriter.println("<positional>");
        outputFileWriter.println("<name>" + posArg.getName() + "</name>");
        outputFileWriter.println("<type>" + posArg.getType() + "</type>");
        outputFileWriter.println("<description>" + posArg.getDescription() + "</description>");
        outputFileWriter.println(
            "<position>"
                + (posArg.getPosition() + 1)
                + "</position>"); // prints position starting at 1
        String[] valueSet = posArg.getValueSet();
        if (!valueSet[0].equals("")) {
          String line = "<valueset>";

          line += valueSet[0];
          for (int j = 1; j < valueSet.length; j++) {
            line += "," + valueSet[j];
          }
          line += "</valueset>";
          outputFileWriter.println(line);
        }
        // outputFileWriter.println(line);
        outputFileWriter.println("</positional>");
      }

      for (int j = 0; j < namedArgumentList.size(); j++) {
        NamedArgument namedArg = namedArgumentList.get(j);
        outputFileWriter.println("<named>");
        outputFileWriter.println("<name>" + namedArg.getName() + "</name>");
        outputFileWriter.println("<shortname>" + namedArg.getShortFormName() + "</shortname>");
        outputFileWriter.println("<type>" + namedArg.getType() + "</type>");
        outputFileWriter.println("<description>" + namedArg.getDescription() + "</description>");
        outputFileWriter.println("<default>" + namedArg.getDefaultValue() + "</default>");
        String[] valueSet = namedArg.getValueSet();
        if (!valueSet[0].equals("")) {
          String line = "<valueset>";
          line += valueSet[0];
          for (int k = 1; k < valueSet.length; k++) {
            line += "," + valueSet[k];
          }
          line += "</valueset>";
          outputFileWriter.println(line);
        }
        outputFileWriter.println("</named>");
      }

      outputFileWriter.println("</arguments>");
      outputFileWriter.println("</program>");

      outputFileWriter.close();
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
  public void get_wallet_balance() { // **********************

    System.out.println("Get Balance...");

    rpcurl = lm.carbon_settings[10];

    rpcaddress = lm.rpcaddress_confirm;

    rpcuser = lm.carbon_settings[12];
    rpcpassword = lm.carbon_settings[13];

    System.out.println(rpcuser);
    System.out.println(rpcpassword);
    System.out.println(rpcaddress);

    String line = new String();
    String line2 = new String();

    String url1 =
        new String(
            "https://blockchain.info/merchant/"
                + rpcuser
                + "/address_balance?password="******"&address="
                + rpcaddress
                + "&confirmations=6");

    try {

      // Sets the authenticator that will be used by the networking code
      // when a proxy or an HTTP server asks for authentication.

      // Authenticator.setDefault(new CustomAuthenticator());
      System.out.println("GO0");

      URL url = new URL(url1);
      HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();

      System.out.println("GO1");

      // read text returned by server
      BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
      // BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
      // BufferedReader in = new BufferedReader(null);

      while ((line = in.readLine()) != null) {

        System.out.println(line);
        line2 = line2 + line;
      }

      in.close();

      JSONParser parser = new JSONParser();

      try {

        Object obj = parser.parse(line2);

        JSONObject jsonObject = (JSONObject) obj;

        String address = (String) jsonObject.get("address");
        System.out.println(address);

        String balance = (String) jsonObject.get("balance").toString();
        System.out.println(balance);
        lm.wallet_value_confirm = (long) Long.parseLong(balance);
        System.out.println("lm.wallet_value_confirm " + lm.wallet_value_confirm);

      } // try
      catch (ParseException e) {
        e.printStackTrace();
      }

    } // try
    catch (MalformedURLException e) {
      System.out.println("Malformed URL: " + e.getMessage());
    } catch (IOException e) {
      System.out.println("I/O Error: " + e.getMessage());
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  } // ***************test_for_sales()